From 73f384257d54f8189ab31276efd949907c29e75f Mon Sep 17 00:00:00 2001 From: Armin Kuster Date: Sun, 24 Jan 2016 19:45:45 -0800 Subject: clamav: update to 0.99.1 removed debian patches brut force remove rpaths Signed-off-by: Armin Kuster --- ...paths-in-sample-conf-file-to-match-Debian.patch | 40 - ...itional-n-after-the-number-in-the-pidfile.patch | 56 - ...increment-test-timeout-from-40secs-to-5mi.patch | 30 - .../clamav-0.98.5/0004-Fix-compiling-on-Hurd.patch | 50 - .../0005-Workaround-a-bug-in-libc-on-Hurd.patch | 35 - ...necessary-harmful-flags-from-libclamav.pc.patch | 22 - .../0007-libclamav-use-libmspack.patch | 4042 -- ...m-systemd-support-for-clamav-daemon-and-c.patch | 655 - ...-fix-ssize_t-size_t-off_t-printf-modifier.patch | 478 - ...VM-linker-flag-because-llvm-config-return.patch | 26 - ...ck-library-from-upstream-without-unnecess.patch | 56090 ------------------- ...e-internal-libmspack-if-the-external-is-n.patch | 106 - ...13-fix-autoreconf-with-embedded-libmspack.patch | 27 - ...ONFIG_SRCDIR-llvm-configure-from-libclama.patch | 23 - ...low-to-specificy-a-group-for-the-socket-o.patch | 229 - ...er-add-additinal-SMFIF_-flags-before-invo.patch | 86 - .../0017-Bump-.so-version-number.patch | 22 - .../0018-llvm-don-t-use-system-libs.patch | 26 - .../clamav-0.98.5/clamav-0001-clamdscan.patch | 21 - .../clamav/clamav-0.98.5/clamav-freshclam.service | 12 - .../clamav/clamav-0.98.5/clamav-milter.conf.sample | 293 - .../clamav/clamav-0.98.5/clamav.service | 17 - recipes-security/clamav/clamav-0.98.5/clamd.conf | 595 - .../clamav/clamav-0.98.5/freshclam.conf | 224 - recipes-security/clamav/clamav-0.98.5/series | 18 - .../clamav/clamav-0.98.5/volatiles.03_clamav | 3 - .../clamav/clamav-0.99.1/clamav-freshclam.service | 12 + .../clamav/clamav-0.99.1/clamav-milter.conf.sample | 293 + .../clamav/clamav-0.99.1/clamav.service | 17 + recipes-security/clamav/clamav-0.99.1/clamd.conf | 595 + .../clamav/clamav-0.99.1/freshclam.conf | 224 + .../clamav/clamav-0.99.1/mempool_build_fix.patch | 14 + .../clamav/clamav-0.99.1/remove_rpath_chk.patch | 16 + .../clamav/clamav-0.99.1/rpath_rmove.patch | 44 + .../clamav/clamav-0.99.1/volatiles.03_clamav | 3 + recipes-security/clamav/clamav_0.98.5.bb | 132 - recipes-security/clamav/clamav_0.99.1.bb | 139 + 37 files changed, 1357 insertions(+), 63358 deletions(-) delete mode 100644 recipes-security/clamav/clamav-0.98.5/0001-Change-paths-in-sample-conf-file-to-match-Debian.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0003-unit_tests-increment-test-timeout-from-40secs-to-5mi.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0004-Fix-compiling-on-Hurd.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0005-Workaround-a-bug-in-libc-on-Hurd.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0006-remove-unnecessary-harmful-flags-from-libclamav.pc.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0007-libclamav-use-libmspack.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0008-Add-upstream-systemd-support-for-clamav-daemon-and-c.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0009-fix-ssize_t-size_t-off_t-printf-modifier.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0010-hardcode-LLVM-linker-flag-because-llvm-config-return.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0011-Add-libmspack-library-from-upstream-without-unnecess.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0012-allow-to-use-internal-libmspack-if-the-external-is-n.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0013-fix-autoreconf-with-embedded-libmspack.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0014-remove-AC_CONFIG_SRCDIR-llvm-configure-from-libclama.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0015-bb-10731-Allow-to-specificy-a-group-for-the-socket-o.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0016-clamav-milter-add-additinal-SMFIF_-flags-before-invo.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0017-Bump-.so-version-number.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/0018-llvm-don-t-use-system-libs.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/clamav-0001-clamdscan.patch delete mode 100644 recipes-security/clamav/clamav-0.98.5/clamav-freshclam.service delete mode 100644 recipes-security/clamav/clamav-0.98.5/clamav-milter.conf.sample delete mode 100644 recipes-security/clamav/clamav-0.98.5/clamav.service delete mode 100644 recipes-security/clamav/clamav-0.98.5/clamd.conf delete mode 100644 recipes-security/clamav/clamav-0.98.5/freshclam.conf delete mode 100644 recipes-security/clamav/clamav-0.98.5/series delete mode 100644 recipes-security/clamav/clamav-0.98.5/volatiles.03_clamav create mode 100644 recipes-security/clamav/clamav-0.99.1/clamav-freshclam.service create mode 100644 recipes-security/clamav/clamav-0.99.1/clamav-milter.conf.sample create mode 100644 recipes-security/clamav/clamav-0.99.1/clamav.service create mode 100644 recipes-security/clamav/clamav-0.99.1/clamd.conf create mode 100644 recipes-security/clamav/clamav-0.99.1/freshclam.conf create mode 100644 recipes-security/clamav/clamav-0.99.1/mempool_build_fix.patch create mode 100644 recipes-security/clamav/clamav-0.99.1/remove_rpath_chk.patch create mode 100644 recipes-security/clamav/clamav-0.99.1/rpath_rmove.patch create mode 100644 recipes-security/clamav/clamav-0.99.1/volatiles.03_clamav delete mode 100644 recipes-security/clamav/clamav_0.98.5.bb create mode 100644 recipes-security/clamav/clamav_0.99.1.bb diff --git a/recipes-security/clamav/clamav-0.98.5/0001-Change-paths-in-sample-conf-file-to-match-Debian.patch b/recipes-security/clamav/clamav-0.98.5/0001-Change-paths-in-sample-conf-file-to-match-Debian.patch deleted file mode 100644 index afbd402..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0001-Change-paths-in-sample-conf-file-to-match-Debian.patch +++ /dev/null @@ -1,40 +0,0 @@ -From a6d6189e25d0a1053dc1aaff1b4c71f84b4599cf Mon Sep 17 00:00:00 2001 -From: Scott Kitterman -Date: Mon, 10 Mar 2014 19:20:18 -0400 -Subject: Change paths in sample conf file to match Debian - ---- - etc/clamav-milter.conf.sample | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/etc/clamav-milter.conf.sample b/etc/clamav-milter.conf.sample -index b7d66a4f9641..ed0d519ffb9b 100644 ---- a/etc/clamav-milter.conf.sample -+++ b/etc/clamav-milter.conf.sample -@@ -64,7 +64,7 @@ Example - # daemon (main thread). - # - # Default: disabled --#PidFile /var/run/clamav-milter.pid -+#PidFile /var/run/clamav/clamav-milter.pid - - # Optional path to the global temporary directory. - # Default: system specific (usually /tmp or /var/tmp). -@@ -90,7 +90,7 @@ Example - # with the same socket: clamd servers will be selected in a round-robin fashion. - # - # Default: no default --#ClamdSocket tcp:scanner.mydomain:7357 -+ClamdSocket /var/run/clamav/clamd - - - ## -@@ -212,7 +212,7 @@ Example - # A full path is required. - # - # Default: disabled --#LogFile /tmp/clamav-milter.log -+#LogFile /var/log/clamav/clamav-milter.log - - # By default the log file is locked for writing - the lock protects against - # running clamav-milter multiple times. diff --git a/recipes-security/clamav/clamav-0.98.5/0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch b/recipes-security/clamav/clamav-0.98.5/0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch deleted file mode 100644 index 6055bd1..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 3ae8ea99a010e5c513aa48c3bfa15a65772f742b Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior -Date: Sat, 29 Mar 2014 15:52:55 +0100 -Subject: Add an additional \n after the number in the pidfile - -start-stop-daemon works without the \n in the file but pkill does not. -Also the output of cat $PifFile looks better :) - -https://bugzilla.clamav.net/show_bug.cgi?id=10907 - -Signed-off-by: Sebastian Andrzej Siewior ---- - clamav-milter/clamav-milter.c | 2 +- - clamd/server-th.c | 2 +- - freshclam/freshclam.c | 2 +- - 3 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/clamav-milter/clamav-milter.c b/clamav-milter/clamav-milter.c -index b6ac9e157872..2c7a4d7d3414 100644 ---- a/clamav-milter/clamav-milter.c -+++ b/clamav-milter/clamav-milter.c -@@ -381,7 +381,7 @@ int main(int argc, char **argv) { - if((fd = fopen(opt->strarg, "w")) == NULL) { - logg("!Can't save PID in file %s\n", opt->strarg); - } else { -- if (fprintf(fd, "%u", (unsigned int)getpid())<0) { -+ if (fprintf(fd, "%u\n", (unsigned int)getpid())<0) { - logg("!Can't save PID in file %s\n", opt->strarg); - } - fclose(fd); -diff --git a/clamd/server-th.c b/clamd/server-th.c -index 7ec5ae80cd64..d97cd6fb34e1 100644 ---- a/clamd/server-th.c -+++ b/clamd/server-th.c -@@ -1034,7 +1034,7 @@ int recvloop_th(int *socketds, unsigned nsockets, struct cl_engine *engine, unsi - if((fd = fopen(opt->strarg, "w")) == NULL) { - logg("!Can't save PID in file %s\n", opt->strarg); - } else { -- if (fprintf(fd, "%u", (unsigned int) mainpid)<0) { -+ if (fprintf(fd, "%u\n", (unsigned int) mainpid)<0) { - logg("!Can't save PID in file %s\n", opt->strarg); - } - fclose(fd); -diff --git a/freshclam/freshclam.c b/freshclam/freshclam.c -index 1a3279966720..166586bf6447 100644 ---- a/freshclam/freshclam.c -+++ b/freshclam/freshclam.c -@@ -135,7 +135,7 @@ writepid (const char *pidfile) - } - else - { -- fprintf (fd, "%d", (int) getpid ()); -+ fprintf (fd, "%d\n", (int) getpid ()); - fclose (fd); - } - umask (old_umask); diff --git a/recipes-security/clamav/clamav-0.98.5/0003-unit_tests-increment-test-timeout-from-40secs-to-5mi.patch b/recipes-security/clamav/clamav-0.98.5/0003-unit_tests-increment-test-timeout-from-40secs-to-5mi.patch deleted file mode 100644 index 3251278..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0003-unit_tests-increment-test-timeout-from-40secs-to-5mi.patch +++ /dev/null @@ -1,30 +0,0 @@ -From d5febd3fab63a6dc4af148ab1b94fe8a85412b46 Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior -Date: Fri, 25 Apr 2014 22:06:23 +0200 -Subject: unit_tests: increment test-timeout from 40secs to 5mins - -I see now and then that tests on the slower archs (arm*, mips) fail due to -the timeout restriction. Often a second build even on the same buildd -succeeds. I think that the buildd is either close to the limit or has -something else (another sbuild running) going so it does not finish the -test in 40secs. -Therefore I raise the bar to a 5 minutes limit. The worst thing that can -happen is, that it takes more than 4 minutes before an enless loop will -be detected. - -Signed-off-by: Sebastian Andrzej Siewior ---- - unit_tests/preload_run.sh | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/unit_tests/preload_run.sh b/unit_tests/preload_run.sh -index 8b8c8e3954dd..365b3a8e0edb 100755 ---- a/unit_tests/preload_run.sh -+++ b/unit_tests/preload_run.sh -@@ -5,5 +5,5 @@ - ulimit -c 0 || true - LD_PRELOAD=$LIBPRELOAD - export LD_PRELOAD --export CK_DEFAULT_TIMEOUT=40 -+export CK_DEFAULT_TIMEOUT=300 - exec $@ diff --git a/recipes-security/clamav/clamav-0.98.5/0004-Fix-compiling-on-Hurd.patch b/recipes-security/clamav/clamav-0.98.5/0004-Fix-compiling-on-Hurd.patch deleted file mode 100644 index de68367..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0004-Fix-compiling-on-Hurd.patch +++ /dev/null @@ -1,50 +0,0 @@ -From db4079249ca4ead5821ce6e1d32edad84c2579aa Mon Sep 17 00:00:00 2001 -From: Andreas Cadhalpun -Date: Sat, 21 Jun 2014 17:00:47 +0200 -Subject: Fix compiling on Hurd. - -The header linux/sockios.h is not available on Hurd. ---- - libclamav/hostid.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) - -diff --git a/libclamav/hostid.c b/libclamav/hostid.c -index bf988de2d6fd..e683539eaf41 100644 ---- a/libclamav/hostid.c -+++ b/libclamav/hostid.c -@@ -47,7 +47,7 @@ - #include - #endif - --#if defined(SIOCGIFHWADDR) -+#if defined(SIOCGIFHWADDR) && !defined(__GNU__) - #if defined(_AIX) - #include - #include -@@ -116,7 +116,7 @@ struct device *get_devices(void) - uint8_t *mac; - int sock; - --#if defined(SIOCGIFHWADDR) -+#if defined(SIOCGIFHWADDR) && !defined(__GNU__) - struct ifreq ifr; - #else - struct sockaddr_dl *sdl; -@@ -155,7 +155,7 @@ struct device *get_devices(void) - * Instead, Linux uses its own ioctl. This code only runs if we're not Linux, - * Windows, or FreeBSD. - */ --#if !defined(SIOCGIFHWADDR) -+#if !defined(SIOCGIFHWADDR) || defined(__GNU__) - for (i=0; i < ndevices; i++) { - if (!(strcmp(devices[i].name, addr->ifa_name))) { - sdl = (struct sockaddr_dl *)(addr->ifa_addr); -@@ -180,7 +180,7 @@ struct device *get_devices(void) - } - - /* This is the Linux version of getting the MAC addresses */ --#if defined(SIOCGIFHWADDR) -+#if defined(SIOCGIFHWADDR) && !defined(__GNU__) - for (i=0; i < ndevices; i++) { - if (!(devices[i].name)) - continue; diff --git a/recipes-security/clamav/clamav-0.98.5/0005-Workaround-a-bug-in-libc-on-Hurd.patch b/recipes-security/clamav/clamav-0.98.5/0005-Workaround-a-bug-in-libc-on-Hurd.patch deleted file mode 100644 index c02d2b2..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0005-Workaround-a-bug-in-libc-on-Hurd.patch +++ /dev/null @@ -1,35 +0,0 @@ -From b8e7d19ec50c30c59fa1038cd9da6d37c2176833 Mon Sep 17 00:00:00 2001 -From: Andreas Cadhalpun -Date: Sat, 21 Jun 2014 17:02:06 +0200 -Subject: Workaround a bug in libc on Hurd - -The send() function, when asked to send 0 characters, doesn't trigger a corresponding recv(), except on Hurd. - -This breaks the communication between clamd and clamdscan. - -See: https://bugs.debian.org/752237 ---- - clamd/scanner.c | 3 ++- - 1 file changed, 2 insertions(+), 1 deletion(-) - -diff --git a/clamd/scanner.c b/clamd/scanner.c -index cd3d07c4ad3e..d531c4420686 100644 ---- a/clamd/scanner.c -+++ b/clamd/scanner.c -@@ -119,6 +119,7 @@ int scan_callback(STATBUF *sb, char *filename, const char *msg, enum cli_ftw_rea - - /* detect disconnected socket, - * this should NOT detect half-shutdown sockets (SHUT_WR) */ -+#if !defined(__GNU__) - if (send(scandata->conn->sd, &ret, 0, 0) == -1 && errno != EINTR) { - logg("$Client disconnected while command was active!\n"); - thrmgr_group_terminate(scandata->conn->group); -@@ -126,7 +127,7 @@ int scan_callback(STATBUF *sb, char *filename, const char *msg, enum cli_ftw_rea - free(filename); - return CL_BREAK; - } -- -+#endif - if (thrmgr_group_need_terminate(scandata->conn->group)) { - logg("^Client disconnected while scanjob was active\n"); - if (reason == visit_file) diff --git a/recipes-security/clamav/clamav-0.98.5/0006-remove-unnecessary-harmful-flags-from-libclamav.pc.patch b/recipes-security/clamav/clamav-0.98.5/0006-remove-unnecessary-harmful-flags-from-libclamav.pc.patch deleted file mode 100644 index 95ffd39..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0006-remove-unnecessary-harmful-flags-from-libclamav.pc.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 0fd50756af998fabc3393f67ff8b78a4855303d9 Mon Sep 17 00:00:00 2001 -From: Andreas Cadhalpun -Date: Mon, 4 Aug 2014 22:44:40 +0200 -Subject: remove unnecessary/harmful flags from libclamav.pc - ---- - libclamav.pc.in | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libclamav.pc.in b/libclamav.pc.in -index 27db30e757ff..19ef1e4e0399 100644 ---- a/libclamav.pc.in -+++ b/libclamav.pc.in -@@ -6,6 +6,6 @@ includedir=@includedir@ - Name: libclamav - Description: A GPL virus scanner - Version: @PACKAGE_VERSION@ --Libs: -L${libdir} -lclamav @LIBCLAMAV_LIBS@ --Cflags: -I${includedir} @CFLAGS@ -+Libs: -L${libdir} -lclamav -+Cflags: -I${includedir} - diff --git a/recipes-security/clamav/clamav-0.98.5/0007-libclamav-use-libmspack.patch b/recipes-security/clamav/clamav-0.98.5/0007-libclamav-use-libmspack.patch deleted file mode 100644 index 83f30fb..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0007-libclamav-use-libmspack.patch +++ /dev/null @@ -1,4042 +0,0 @@ -From bffbaabfbb139ef1596d8b20f0275293cecd9297 Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior -Date: Wed, 30 Jul 2014 08:35:16 +0200 -Subject: libclamav: use libmspack - -This patch provides support for upstream / external libmspack version -libmspack 0.4 (current). The old in-tree version of libmspack is removed -while no loner used. - -BTS: #675558 -clamav: https://bugzilla.clamav.net/show_bug.cgi?id=11062 - -Signed-off-by: Sebastian Andrzej Siewior ---- - configure.ac | 3 + - libclamav/Makefile.am | 11 +- - libclamav/cab.c | 684 ----------------- - libclamav/cab.h | 81 -- - libclamav/chmunpack.h | 122 --- - libclamav/libmspack.c | 525 +++++++++++++ - libclamav/libmspack.h | 7 + - libclamav/mspack.c | 2026 ------------------------------------------------- - libclamav/mspack.h | 294 ------- - libclamav/scanners.c | 146 +--- - 10 files changed, 541 insertions(+), 3358 deletions(-) - delete mode 100644 libclamav/cab.c - delete mode 100644 libclamav/cab.h - delete mode 100644 libclamav/chmunpack.h - create mode 100644 libclamav/libmspack.c - create mode 100644 libclamav/libmspack.h - delete mode 100644 libclamav/mspack.c - delete mode 100644 libclamav/mspack.h - -diff --git a/configure.ac b/configure.ac -index e230f939c2d3..41043753fc92 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -174,6 +174,9 @@ if test "$enable_llvm" = "yes" && test "$subdirfailed" != "no"; then - fi - AM_CONDITIONAL([ENABLE_LLVM], - [test "$subdirfailed" != "yes" && test "$enable_llvm" != "no"]) -+ -+PKG_CHECK_MODULES([LIBMSPACK], [libmspack]) -+ - no_recursion="yes"; - AC_OUTPUT([libclamav/Makefile]) - -diff --git a/libclamav/Makefile.am b/libclamav/Makefile.am -index 1aab51bd6ccc..538e83dcdd03 100644 ---- a/libclamav/Makefile.am -+++ b/libclamav/Makefile.am -@@ -147,6 +147,9 @@ if VERSIONSCRIPT - libclamav_la_LDFLAGS += -Wl,@VERSIONSCRIPTFLAG@,@top_srcdir@/libclamav/libclamav.map - endif - -+libclamav_la_CFLAGS += $(LIBMSPACK_CFLAGS) -+libclamav_la_LDFLAGS += $(LIBMSPACK_LIBS) -+ - include_HEADERS = clamav.h - - libclamav_la_SOURCES = \ -@@ -204,8 +207,8 @@ libclamav_la_SOURCES = \ - upx.h \ - htmlnorm.c \ - htmlnorm.h \ -- chmunpack.c \ -- chmunpack.h \ -+ libmspack.c \ -+ libmspack.h \ - rebuildpe.c \ - rebuildpe.h \ - petite.c \ -@@ -283,10 +286,6 @@ libclamav_la_SOURCES = \ - regex_list.h \ - regex_suffix.c \ - regex_suffix.h \ -- mspack.c \ -- mspack.h \ -- cab.c \ -- cab.h \ - entconv.c \ - entconv.h \ - entitylist.h \ -diff --git a/libclamav/cab.c b/libclamav/cab.c -deleted file mode 100644 -index 6d2eade7d4ea..000000000000 ---- a/libclamav/cab.c -+++ /dev/null -@@ -1,684 +0,0 @@ --/* -- * Copyright (C) 2007-2008 Sourcefire, Inc. -- * -- * Authors: Tomasz Kojm -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License version 2 as -- * published by the Free Software Foundation. -- * -- * 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., 51 Franklin Street, Fifth Floor, Boston, -- * MA 02110-1301, USA. -- */ -- --#if HAVE_CONFIG_H --#include "clamav-config.h" --#endif -- --#include --#include --#include --#include --#include --#ifdef HAVE_UNISTD_H --#include --#endif --#include -- --#include "clamav.h" --#include "cltypes.h" --#include "others.h" --#include "mspack.h" --#include "cab.h" -- --#define EC32(x) cli_readint32(&x) /* Convert little endian to host */ --#define EC16(x) cli_readint16(&x) -- --/* hard limits */ --#define CAB_FOLDER_LIMIT 5000 --#define CAB_FILE_LIMIT 5000 -- --/* Cabinet format data structures */ -- --struct cab_hdr { -- uint32_t signature; /* file signature */ -- uint32_t res1; /* reserved */ -- uint32_t cbCabinet; /* size of cabinet file */ -- uint32_t res2; /* reserved */ -- uint32_t coffFiles; /* offset of the first file entry */ -- uint32_t res3; /* reserved */ -- uint8_t versionMinor; /* file format version, minor */ -- uint8_t versionMajor; /* file format version, major */ -- uint16_t cFolders; /* number of folder entries */ -- uint16_t cFiles; /* number of file entries */ -- uint16_t flags; /* option flags */ -- uint16_t setID; /* multiple cabs related */ -- uint16_t iCabinet; /* multiple cabs related */ --}; -- --struct cab_hdr_opt { -- uint16_t cbCFHeader; /* size of reserved header area */ -- uint8_t cbCFFolder; /* size of reserved folder area */ -- uint8_t cbCFData; /* size of reserved block area */ --}; -- --struct cab_folder_hdr --{ -- uint32_t coffCabStart; /* offset of the first data block */ -- uint16_t cCFData; /* number of data blocks */ -- uint16_t typeCompress; /* compression type */ --}; -- --struct cab_file_hdr --{ -- uint32_t cbFile; /* uncompressed size */ -- uint32_t uoffFolderStart; /* uncompressed offset of file in folder */ -- uint16_t iFolder; /* folder index */ -- uint16_t date; /* date stamp */ -- uint16_t time; /* time stamp */ -- uint16_t attribs; /* attribute flags */ --}; -- --struct cab_block_hdr --{ -- uint32_t csum; /* data block checksum */ -- uint16_t cbData; /* number of compressed bytes */ -- uint16_t cbUncomp; /* number of uncompressed bytes */ --}; -- --static char *cab_readstr(fmap_t *map, off_t *offset, int *ret) --{ -- int i; -- const char *str; -- char *retstr; -- -- if(!(str = fmap_need_offstr(map, *offset, 256))) { -- *ret = CL_EFORMAT; -- return NULL; -- } -- -- i = strlen(str) + 1; -- if(i>=255) { -- fmap_unneed_ptr(map, str, i); -- *ret = CL_EFORMAT; -- return NULL; -- } -- -- *offset += i; -- if((retstr = cli_malloc(i))) -- memcpy(retstr, str, i); -- fmap_unneed_ptr(map, str, i); -- -- if(!retstr) { -- *ret = CL_EMEM; -- return NULL; -- } -- -- *ret = CL_SUCCESS; -- return retstr; --} -- --static int cab_chkname(char *name, int san) --{ -- size_t i, len = strlen(name); -- -- -- for(i = 0; i < len; i++) { -- if(!san && (strchr("%/*?|\\\"+=<>;:\t ", name[i]) || !isascii(name[i]))) { -- cli_dbgmsg("cab_chkname: File name contains disallowed characters\n"); -- return 1; -- } else if(san && !isalnum(name[i])) { -- name[i] = '*'; -- } -- } -- -- return 0; --} -- --void cab_free(struct cab_archive *cab) --{ -- struct cab_folder *folder; -- struct cab_file *file; -- -- -- if(cab->state) { -- if(cab->state->stream) { -- switch(cab->state->cmethod & 0x000f) { -- case 0x0001: -- mszip_free(cab->state->stream); -- break; -- case 0x0002: -- qtm_free(cab->state->stream); -- break; -- case 0x0003: -- lzx_free(cab->state->stream); -- } -- } -- free(cab->state); -- } -- -- while(cab->folders) { -- folder = cab->folders; -- cab->folders = cab->folders->next; -- free(folder); -- } -- -- while(cab->files) { -- file = cab->files; -- cab->files = cab->files->next; -- free(file->name); -- free(file); -- } --} -- --int cab_open(fmap_t *map, off_t offset, struct cab_archive *cab) --{ -- unsigned int i, folders = 0; -- struct cab_file *file, *lfile = NULL; -- struct cab_folder *folder, *lfolder = NULL; -- const struct cab_hdr *hdr; -- const struct cab_hdr_opt *hdr_opt; -- uint16_t fidx; -- uint32_t coffFiles; -- char *pt; -- int ret; -- off_t resfold = 0, rsize, cur_offset = offset; -- -- if(!(hdr=fmap_need_off_once(map, cur_offset, sizeof(*hdr)))) { -- cli_dbgmsg("cab_open: Can't read cabinet header\n"); -- return CL_EFORMAT; /* most likely a corrupted file */ -- } -- cur_offset += sizeof(*hdr); -- -- if(EC32(hdr->signature) != 0x4643534d) { -- cli_dbgmsg("cab_open: Incorrect CAB signature\n"); -- return CL_EFORMAT; -- } else { -- cli_dbgmsg("CAB: -------------- Cabinet file ----------------\n"); -- } -- -- rsize = map->len; -- -- memset(cab, 0, sizeof(struct cab_archive)); -- -- cab->length = EC32(hdr->cbCabinet); -- cli_dbgmsg("CAB: Cabinet length: %u\n", cab->length); -- if((off_t) cab->length > rsize) { -- cli_dbgmsg("CAB: Truncating file size from %lu to %lu\n", (unsigned long int) cab->length, (unsigned long int) rsize); -- cab->length = (uint32_t) rsize; -- } -- -- cab->nfolders = EC16(hdr->cFolders); -- if(!cab->nfolders) { -- cli_dbgmsg("cab_open: No folders in cabinet (fake cab?)\n"); -- return CL_EFORMAT; -- } else { -- cli_dbgmsg("CAB: Folders: %u\n", cab->nfolders); -- if(cab->nfolders > CAB_FOLDER_LIMIT) { -- cab->nfolders = CAB_FOLDER_LIMIT; -- cli_dbgmsg("CAB: *** Number of folders limited to %u ***\n", cab->nfolders); -- } -- } -- -- cab->nfiles = EC16(hdr->cFiles); -- if(!cab->nfiles) { -- cli_dbgmsg("cab_open: No files in cabinet (fake cab?)\n"); -- return CL_EFORMAT; -- } else { -- cli_dbgmsg("CAB: Files: %u\n", cab->nfiles); -- if(cab->nfiles > CAB_FILE_LIMIT) { -- cab->nfiles = CAB_FILE_LIMIT; -- cli_dbgmsg("CAB: *** Number of files limited to %u ***\n", cab->nfiles); -- } -- } -- -- cli_dbgmsg("CAB: File format version: %u.%u\n", hdr->versionMajor, hdr->versionMinor); -- -- cab->flags = EC16(hdr->flags); -- coffFiles = EC16(hdr->coffFiles); -- -- if(cab->flags & 0x0004) { -- if(!(hdr_opt = fmap_need_off_once(map, cur_offset, sizeof(*hdr_opt)))) { -- cli_dbgmsg("cab_open: Can't read file header (fake cab?)\n"); -- return CL_EFORMAT; /* most likely a corrupted file */ -- } -- -- cab->reshdr = EC16(hdr_opt->cbCFHeader); -- resfold = hdr_opt->cbCFFolder; -- cab->resdata = hdr_opt->cbCFData; -- -- cur_offset += sizeof(*hdr_opt) + cab->reshdr; -- if(cab->reshdr) { -- if(cab->reshdr >= rsize) { -- cli_dbgmsg("cab_open: Can't lseek to %u (fake cab?)\n", cab->reshdr); -- return CL_EFORMAT; /* most likely a corrupted file */ -- } -- } -- } -- -- if(cab->flags & 0x0001) { /* preceding cabinet */ -- /* name */ -- pt = cab_readstr(map, &cur_offset, &ret); -- if(ret) -- return ret; -- if(cab_chkname(pt, 0)) -- cli_dbgmsg("CAB: Invalid name of preceding cabinet\n"); -- else -- cli_dbgmsg("CAB: Preceding cabinet name: %s\n", pt); -- free(pt); -- /* info */ -- pt = cab_readstr(map, &cur_offset, &ret); -- if(ret) -- return ret; -- if(cab_chkname(pt, 0)) -- cli_dbgmsg("CAB: Invalid info for preceding cabinet\n"); -- else -- cli_dbgmsg("CAB: Preceding cabinet info: %s\n", pt); -- free(pt); -- } -- -- if(cab->flags & 0x0002) { /* next cabinet */ -- /* name */ -- pt = cab_readstr(map, &cur_offset, &ret); -- if(ret) -- return ret; -- if(cab_chkname(pt, 0)) -- cli_dbgmsg("CAB: Invalid name of next cabinet\n"); -- else -- cli_dbgmsg("CAB: Next cabinet name: %s\n", pt); -- free(pt); -- /* info */ -- pt = cab_readstr(map, &cur_offset, &ret); -- if(ret) -- return ret; -- if(cab_chkname(pt, 0)) -- cli_dbgmsg("CAB: Invalid info for next cabinet\n"); -- else -- cli_dbgmsg("CAB: Next cabinet info: %s\n", pt); -- free(pt); -- } -- -- /* folders */ -- for(i = 0; i < cab->nfolders; i++) { -- const struct cab_folder_hdr *folder_hdr; -- -- if(!(folder_hdr = fmap_need_off_once(map, cur_offset, sizeof(*folder_hdr)))) { -- cli_dbgmsg("cab_open: Can't read header for folder %u\n", i); -- break; -- } -- -- cur_offset += sizeof(*folder_hdr) + resfold; -- -- if(EC32(folder_hdr->coffCabStart) + offset > rsize) { -- cli_dbgmsg("CAB: Folder out of file\n"); -- continue; -- } -- -- if((EC16(folder_hdr->typeCompress) & 0x000f) > 3) { -- cli_dbgmsg("CAB: Unknown compression method\n"); -- continue; -- } -- -- folder = (struct cab_folder *) cli_calloc(1, sizeof(struct cab_folder)); -- if(!folder) { -- cli_errmsg("cab_open: Can't allocate memory for folder\n"); -- cab_free(cab); -- return CL_EMEM; -- } -- -- folder->cab = (struct cab_archive *) cab; -- folder->offset = (off_t) EC32(folder_hdr->coffCabStart) + offset; -- folder->nblocks = EC16(folder_hdr->cCFData); -- folder->cmethod = EC16(folder_hdr->typeCompress); -- -- cli_dbgmsg("CAB: Folder record %u\n", i); -- cli_dbgmsg("CAB: Folder offset: %u\n", (unsigned int) folder->offset); -- cli_dbgmsg("CAB: Folder compression method: %d\n", folder->cmethod); -- -- if(!lfolder) -- cab->folders = folder; -- else -- lfolder->next = folder; -- -- lfolder = folder; -- folders++; -- } -- cli_dbgmsg("CAB: Recorded folders: %u\n", folders); -- -- /* files */ -- if(cab->nfolders != folders) { -- if(coffFiles >= rsize) { -- cli_dbgmsg("cab_open: Can't lseek to hdr.coffFiles\n"); -- cab_free(cab); -- return CL_EFORMAT; -- } -- cur_offset = coffFiles; -- } -- for(i = 0; i < cab->nfiles; i++) { -- const struct cab_file_hdr *file_hdr; -- -- if(!(file_hdr = fmap_need_off_once(map, cur_offset, sizeof(*file_hdr)))) { -- cli_dbgmsg("cab_open: Can't read file %u header\n", i); -- break; -- } -- cur_offset += sizeof(*file_hdr); -- -- file = (struct cab_file *) cli_calloc(1, sizeof(struct cab_file)); -- if(!file) { -- cli_errmsg("cab_open: Can't allocate memory for file\n"); -- cab_free(cab); -- return CL_EMEM; -- } -- -- file->cab = cab; -- cab->map = map; -- file->offset = EC32(file_hdr->uoffFolderStart); -- file->length = EC32(file_hdr->cbFile); -- file->attribs = EC16(file_hdr->attribs); -- fidx = EC16(file_hdr->iFolder); -- file->error = CL_SUCCESS; -- -- file->name = cab_readstr(map, &cur_offset, &ret); -- if(ret) { -- free(file); -- continue; -- } -- cab_chkname(file->name, 1); -- -- cli_dbgmsg("CAB: File record %u\n", i); -- cli_dbgmsg("CAB: File name: %s\n", file->name); -- cli_dbgmsg("CAB: File offset: %u\n", (unsigned int) file->offset); -- cli_dbgmsg("CAB: File folder index: %u\n", fidx); -- cli_dbgmsg("CAB: File attribs: 0x%x\n", file->attribs); -- if(file->attribs & 0x01) -- cli_dbgmsg("CAB: * file is read-only\n"); -- if(file->attribs & 0x02) -- cli_dbgmsg("CAB: * file is hidden\n"); -- if(file->attribs & 0x04) -- cli_dbgmsg("CAB: * file is a system file\n"); -- if(file->attribs & 0x20) -- cli_dbgmsg("CAB: * file modified since last backup\n"); -- if(file->attribs & 0x40) -- cli_dbgmsg("CAB: * file to be run after extraction\n"); -- if(file->attribs & 0x80) -- cli_dbgmsg("CAB: * file name contains UTF\n"); -- -- /* folder index */ -- if(fidx < 0xfffd) { -- if(fidx > cab->nfolders) { -- cli_dbgmsg("cab_open: File %s is not associated with any folder\n", file->name); -- free(file->name); -- free(file); -- continue; -- } -- -- file->folder = cab->folders; -- while(file->folder && fidx--) -- file->folder = file->folder->next; -- -- if(!file->folder) { -- cli_dbgmsg("cab_open: Folder not found for file %s\n", file->name); -- free(file->name); -- free(file); -- continue; -- } -- -- } else { -- cli_dbgmsg("CAB: File is split *skipping*\n"); -- free(file->name); -- free(file); -- continue; -- } -- -- if(!lfile) -- cab->files = file; -- else -- lfile->next = file; -- -- lfile = file; -- -- } -- -- return CL_SUCCESS; --} -- --static int cab_read_block(struct cab_file *file) --{ -- const struct cab_block_hdr *block_hdr; -- struct cab_state *state = file->cab->state; -- -- if(!(block_hdr = fmap_need_off_once(file->cab->map, file->cab->cur_offset, sizeof(*block_hdr)))) { -- cli_dbgmsg("cab_read_block: Can't read block header\n"); -- return CL_EFORMAT; /* most likely a corrupted file */ -- } -- -- file->cab->cur_offset += sizeof(*block_hdr) + file->cab->resdata; -- state->blklen = EC16(block_hdr->cbData); -- state->outlen = EC16(block_hdr->cbUncomp); -- -- if(fmap_readn(file->cab->map, state->block, file->cab->cur_offset, state->blklen) != state->blklen) { -- cli_dbgmsg("cab_read_block: Can't read block data\n"); -- return CL_EFORMAT; /* most likely a corrupted file */ -- } -- -- file->cab->cur_offset += state->blklen; -- state->pt = state->end = state->block; -- state->end += state->blklen; -- -- return CL_SUCCESS; --} -- --static int cab_read(struct cab_file *file, unsigned char *buffer, int bytes) --{ -- uint16_t todo, left; -- -- -- if((file->cab->state->blknum > file->folder->nblocks) && !file->lread) { -- file->error = CL_BREAK; -- return -1; -- } -- -- todo = bytes; -- while(todo > 0) { -- left = file->cab->state->end - file->cab->state->pt; -- -- if(left) { -- if(left > todo) -- left = todo; -- -- memcpy(buffer, file->cab->state->pt, left); -- file->cab->state->pt += left; -- buffer += left; -- todo -= left; -- -- } else { -- if(file->cab->state->blknum++ >= file->folder->nblocks) -- break; -- -- file->error = cab_read_block(file); -- if(file->error) -- return -1; -- -- if((file->folder->cmethod & 0x000f) == 0x0002) /* Quantum hack */ -- *file->cab->state->end++ = 0xff; -- -- if(file->cab->state->blknum >= file->folder->nblocks) { -- if((file->folder->cmethod & 0x000f) == 0x0003) { /* LZX hack */ -- lzx_set_output_length(file->cab->state->stream, (off_t) ((file->cab->state->blknum - 1) * 32768 + file->cab->state->outlen)); -- } -- } else { -- if(file->cab->state->outlen != 32768) { -- cli_dbgmsg("cab_read: WARNING: partial data block\n"); -- } -- } -- } -- } -- -- return file->lread = bytes - todo; --} -- --static int cab_unstore(struct cab_file *file) --{ -- int todo, bread, bytes = file->length; -- unsigned char buff[4096]; -- -- -- if(bytes < 0) { -- cli_dbgmsg("cab_unstore: bytes < 0\n"); -- return CL_EFORMAT; -- } -- -- todo = MIN((unsigned int) bytes, file->max_size); -- -- while(1) { -- -- if((unsigned int) todo <= sizeof(buff)) -- bread = todo; -- else -- bread = sizeof(buff); -- -- if((bread = cab_read(file, buff, bread)) == -1) { -- cli_dbgmsg("cab_unstore: cab_read failed\n"); -- return file->error; -- } else if(cli_writen(file->ofd, buff, bread) != bread) { -- cli_warnmsg("cab_unstore: Can't write %d bytes to descriptor %d\n", bread, file->ofd); -- return CL_EWRITE; -- } -- -- todo -= bread; -- -- if(!bread || todo <= 0) -- break; -- } -- -- return CL_SUCCESS; --} -- --#define CAB_CHGFOLDER \ -- if(!file->cab->actfol || (file->folder != file->cab->actfol) \ -- || (file->cab->state && file->cab->state->cmethod != file->folder->cmethod)) { \ -- if(file->cab->state) { \ -- if(file->cab->state->stream) { \ -- switch(file->cab->state->cmethod & 0x000f) { \ -- case 0x0001: \ -- mszip_free(file->cab->state->stream); \ -- break; \ -- case 0x0002: \ -- qtm_free(file->cab->state->stream); \ -- break; \ -- case 0x0003: \ -- lzx_free(file->cab->state->stream); \ -- } \ -- } \ -- free(file->cab->state); \ -- file->cab->state = NULL; \ -- } \ -- file->cab->cur_offset = file->folder->offset; \ -- file->cab->state = (struct cab_state *) cli_calloc(1, sizeof(struct cab_state)); \ -- if(!file->cab->state) { \ -- cli_errmsg("cab_extract: Can't allocate memory for internal state\n"); \ -- close(file->ofd); \ -- return CL_EMEM; \ -- } \ -- file->cab->state->cmethod = file->folder->cmethod; \ -- switch(file->folder->cmethod & 0x000f) { \ -- case 0x0001: \ -- file->cab->state->stream = (struct mszip_stream *) mszip_init(file->ofd, 4096, 1, file, &cab_read); \ -- break; \ -- case 0x0002: \ -- file->cab->state->stream = (struct qtm_stream *) qtm_init(file->ofd, (int) (file->folder->cmethod >> 8) & 0x1f, 4096, file, &cab_read); \ -- break; \ -- case 0x0003: \ -- file->cab->state->stream = (struct lzx_stream *) lzx_init(file->ofd, (int) (file->folder->cmethod >> 8) & 0x1f, 0, 4096, 0, file, &cab_read); \ -- } \ -- if((file->folder->cmethod & 0x000f) && !file->cab->state->stream) { \ -- close(file->ofd); \ -- return CL_EUNPACK; \ -- } \ -- file->cab->actfol = file->folder; \ -- } else { \ -- if(file->cab->state && file->cab->state->stream) { \ -- switch(file->cab->state->cmethod & 0x000f) { \ -- case 0x0001: \ -- ((struct mszip_stream *) file->cab->state->stream)->ofd = file->ofd; \ -- break; \ -- case 0x0002: \ -- ((struct qtm_stream *) file->cab->state->stream)->ofd = file->ofd; \ -- break; \ -- case 0x0003: \ -- ((struct lzx_stream *) file->cab->state->stream)->ofd = file->ofd; \ -- break; \ -- } \ -- } \ -- } -- -- --int cab_extract(struct cab_file *file, const char *name) --{ -- int ret; -- -- -- if(!file || !name) { -- cli_errmsg("cab_extract: !file || !name\n"); -- return CL_ENULLARG; -- } -- -- if(!file->folder) { -- cli_errmsg("cab_extract: file->folder == NULL\n"); -- return CL_ENULLARG; -- } -- -- file->ofd = open(name, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, S_IRWXU); -- if(file->ofd == -1) { -- cli_errmsg("cab_extract: Can't open file %s in write mode\n", name); -- return CL_ECREAT; -- } -- -- switch(file->folder->cmethod & 0x000f) { -- case 0x0000: /* STORE */ -- cli_dbgmsg("CAB: Compression method: STORED\n"); -- CAB_CHGFOLDER; -- if(file->length > file->cab->length) { -- cli_dbgmsg("cab_extract: Stored file larger than archive itself, trimming down\n"); -- file->length = file->cab->length; -- } -- ret = cab_unstore(file); -- break; -- -- case 0x0001: /* MSZIP */ -- cli_dbgmsg("CAB: Compression method: MSZIP\n"); -- CAB_CHGFOLDER; -- ret = mszip_decompress(file->cab->state->stream, file->length); -- break; -- -- case 0x0002: /* QUANTUM */ -- cli_dbgmsg("CAB: Compression method: QUANTUM\n"); -- CAB_CHGFOLDER; -- ret = qtm_decompress(file->cab->state->stream, file->length); -- break; -- -- case 0x0003: /* LZX */ -- cli_dbgmsg("CAB: Compression method: LZX\n"); -- CAB_CHGFOLDER; -- ret = lzx_decompress(file->cab->state->stream, file->length); -- break; -- -- default: -- cli_dbgmsg("CAB: Not supported compression method: 0x%x\n", file->folder->cmethod & 0x000f); -- ret = CL_EFORMAT; -- } -- -- close(file->ofd); -- -- if(ret == CL_BREAK) -- ret = CL_SUCCESS; -- -- return ret; --} -diff --git a/libclamav/cab.h b/libclamav/cab.h -deleted file mode 100644 -index 795900d555e9..000000000000 ---- a/libclamav/cab.h -+++ /dev/null -@@ -1,81 +0,0 @@ --/* -- * Copyright (C) 2007-2008 Sourcefire, Inc. -- * -- * Authors: Tomasz Kojm -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License version 2 as -- * published by the Free Software Foundation. -- * -- * 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., 51 Franklin Street, Fifth Floor, Boston, -- * MA 02110-1301, USA. -- */ -- --#ifndef __CAB_H --#define __CAB_H -- --#include --#include "cltypes.h" --#include "fmap.h" -- --#define CAB_BLOCKMAX 65535 --#define CAB_INPUTMAX (CAB_BLOCKMAX + 6144) -- --struct cab_archive { -- struct cab_folder *folders, *actfol; -- struct cab_file *files; -- struct cab_state *state; -- fmap_t *map; -- off_t cur_offset; -- uint32_t length; -- uint16_t nfolders; -- uint16_t nfiles; -- uint16_t flags; -- uint16_t reshdr; -- uint8_t resdata; --}; -- --struct cab_state { -- unsigned char *pt, *end; -- void *stream; -- unsigned char block[CAB_INPUTMAX]; -- uint16_t blklen; -- uint16_t outlen; -- uint16_t blknum; -- uint16_t cmethod; --}; -- --struct cab_file { -- off_t offset; -- char *name; -- uint32_t length; -- int error; -- int lread; -- int ofd; -- struct cab_folder *folder; -- struct cab_file *next; -- struct cab_archive *cab; -- uint16_t attribs; -- uint64_t max_size, written_size; --}; -- --struct cab_folder { -- struct cab_archive *cab; -- off_t offset; -- struct cab_folder *next; -- uint16_t cmethod; -- uint16_t nblocks; --}; -- --int cab_open(fmap_t *map, off_t offset, struct cab_archive *cab); --int cab_extract(struct cab_file *file, const char *name); --void cab_free(struct cab_archive *cab); -- --#endif -diff --git a/libclamav/chmunpack.h b/libclamav/chmunpack.h -deleted file mode 100644 -index 7864386b921f..000000000000 ---- a/libclamav/chmunpack.h -+++ /dev/null -@@ -1,122 +0,0 @@ --/* -- * Extract component parts of MS CHM files -- * -- * Copyright (C) 2007-2008 Sourcefire, Inc. -- * -- * Authors: Trog -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License version 2 as -- * published by the Free Software Foundation. -- * -- * 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., 51 Franklin Street, Fifth Floor, Boston, -- * MA 02110-1301, USA. -- */ -- --#ifndef __CHM_UNPACK_H --#define __CHM_UNPACK_H -- --#if HAVE_CONFIG_H --#include "clamav-config.h" --#endif -- --#include "cltypes.h" --#include "others.h" --#include "fmap.h" -- --#ifndef HAVE_ATTRIB_PACKED --#define __attribute__(x) --#endif -- --#ifdef HAVE_PRAGMA_PACK --#pragma pack(1) --#endif -- --#ifdef HAVE_PRAGMA_PACK_HPPA --#pragma pack 1 --#endif -- --#define CHM_ITSF_MIN_LEN (0x60) --typedef struct chm_itsf_header_tag --{ -- unsigned char signature[4]; -- int32_t version __attribute__ ((packed)); -- int32_t header_len __attribute__ ((packed)); -- uint32_t unknown __attribute__ ((packed)); -- uint32_t last_modified __attribute__ ((packed)); -- uint32_t lang_id __attribute__ ((packed)); -- unsigned char dir_clsid[16]; -- unsigned char stream_clsid[16]; -- uint64_t sec0_offset __attribute__ ((packed)); -- uint64_t sec0_len __attribute__ ((packed)); -- uint64_t dir_offset __attribute__ ((packed)); -- uint64_t dir_len __attribute__ ((packed)); -- uint64_t data_offset __attribute__ ((packed)); --} chm_itsf_header_t; -- --#define CHM_ITSP_LEN (0x54) --typedef struct chm_itsp_header_tag --{ -- unsigned char signature[4]; -- int32_t version __attribute__ ((packed)); -- int32_t header_len __attribute__ ((packed)); -- int32_t unknown1 __attribute__ ((packed)); -- uint32_t block_len __attribute__ ((packed)); -- int32_t blockidx_intvl __attribute__ ((packed)); -- int32_t index_depth __attribute__ ((packed)); -- int32_t index_root __attribute__ ((packed)); -- int32_t index_head __attribute__ ((packed)); -- int32_t index_tail __attribute__ ((packed)); -- int32_t unknown2 __attribute__ ((packed)); -- uint32_t num_blocks __attribute__ ((packed)); -- uint32_t lang_id __attribute__ ((packed)); -- unsigned char system_clsid[16]; -- unsigned char unknown4[16]; --} chm_itsp_header_t; -- --#ifdef HAVE_PRAGMA_PACK --#pragma pack() --#endif -- --#ifdef HAVE_PRAGMA_PACK_HPPA --#pragma pack --#endif -- --typedef struct chm_sys_entry_tag --{ -- uint64_t offset; -- uint64_t length; --} chm_sys_entry_t; -- --typedef struct chm_metadata_tag { -- uint64_t file_length; -- uint64_t file_offset; -- chm_sys_entry_t sys_control; -- chm_sys_entry_t sys_content; -- chm_sys_entry_t sys_reset; -- off_t m_length; -- chm_itsf_header_t itsf_hdr; -- chm_itsp_header_t itsp_hdr; -- int ufd; -- int ofd; -- uint32_t num_chunks; -- off_t chunk_offset; -- const char *chunk_data; -- const char *chunk_current; -- const char *chunk_end; -- fmap_t *map; -- uint16_t chunk_entries; --} chm_metadata_t; -- --int cli_chm_open(const char *dirname, chm_metadata_t *metadata, cli_ctx *ctx); --int cli_chm_prepare_file(chm_metadata_t *metadata); --int cli_chm_extract_file(char *dirname, chm_metadata_t *metadata, cli_ctx *ctx); --void cli_chm_close(chm_metadata_t *metadata); --#endif -diff --git a/libclamav/libmspack.c b/libclamav/libmspack.c -new file mode 100644 -index 000000000000..e94312e6dad3 ---- /dev/null -+++ b/libclamav/libmspack.c -@@ -0,0 +1,525 @@ -+/* -+ * Glue code for libmspack handling. -+ * Author: 웃 Sebastian Andrzej Siewior -+ * ✉ sebastian @ breakpoint Ì£cc -+ */ -+ -+#include -+#include -+#include -+#include -+ -+#include -+ -+#include "clamav.h" -+#include "fmap.h" -+#include "scanners.h" -+#include "others.h" -+ -+enum mspack_type { -+ FILETYPE_DUNNO, -+ FILETYPE_FMAP, -+ FILETYPE_FILENAME, -+}; -+ -+struct mspack_name { -+ fmap_t *fmap; -+ off_t org; -+}; -+ -+struct mspack_system_ex { -+ struct mspack_system ops; -+ off_t max_size; -+}; -+ -+struct mspack_handle { -+ enum mspack_type type; -+ -+ fmap_t *fmap; -+ off_t org; -+ off_t offset; -+ -+ FILE *f; -+ off_t max_size; -+}; -+ -+#define container_of(ptr, type, member) ({ \ -+ const typeof( ((type *)0)->member ) *__mptr = (ptr); \ -+ (type *)( (char *)__mptr - offsetof(type,member) );}) -+ -+#define min_t(type, x, y) ({ \ -+ type __min1 = (x); \ -+ type __min2 = (y); \ -+ __min1 < __min2 ? __min1: __min2; }) -+ -+static struct mspack_file *mspack_fmap_open(struct mspack_system *self, -+ const char *filename, int mode) -+{ -+ struct mspack_name *mspack_name; -+ struct mspack_handle *mspack_handle; -+ struct mspack_system_ex *self_ex; -+ const char *fmode; -+ -+ if (!filename) { -+ cli_dbgmsg("%s() failed at %d\n", __func__, __LINE__); -+ return NULL; -+ } -+ mspack_handle = malloc(sizeof(*mspack_handle)); -+ if (!mspack_handle) { -+ cli_dbgmsg("%s() failed at %d\n", __func__, __LINE__); -+ return NULL; -+ } -+ switch (mode) { -+ case MSPACK_SYS_OPEN_READ: -+ mspack_handle->type = FILETYPE_FMAP; -+ -+ mspack_name = (struct mspack_name *)filename; -+ mspack_handle->fmap = mspack_name->fmap; -+ mspack_handle->org = mspack_name->org; -+ mspack_handle->offset = 0; -+ -+ return (struct mspack_file *)mspack_handle; -+ -+ case MSPACK_SYS_OPEN_WRITE: -+ fmode = "wb"; -+ break; -+ case MSPACK_SYS_OPEN_UPDATE: -+ fmode = "r+b"; -+ break; -+ case MSPACK_SYS_OPEN_APPEND: -+ fmode = "ab"; -+ break; -+ default: -+ cli_dbgmsg("%s() wrong mode\n", __func__); -+ goto out_err; -+ } -+ -+ mspack_handle->type = FILETYPE_FILENAME; -+ -+ mspack_handle->f = fopen(filename, fmode); -+ if (!mspack_handle->f) { -+ cli_dbgmsg("%s() failed %d\n", __func__, __LINE__); -+ goto out_err; -+ } -+ self_ex = container_of(self, struct mspack_system_ex, ops); -+ mspack_handle->max_size = self_ex->max_size; -+ return (struct mspack_file *)mspack_handle; -+ -+out_err: -+ free(mspack_handle); -+ return NULL; -+} -+ -+static void mspack_fmap_close(struct mspack_file *file) -+{ -+ struct mspack_handle *mspack_handle = (struct mspack_handle *)file; -+ -+ if (!mspack_handle) -+ return; -+ -+ if (mspack_handle->type == FILETYPE_FILENAME) -+ fclose(mspack_handle->f); -+ free(mspack_handle); -+} -+ -+static int mspack_fmap_read(struct mspack_file *file, void *buffer, int bytes) -+{ -+ struct mspack_handle *mspack_handle = (struct mspack_handle *)file; -+ off_t offset; -+ size_t count; -+ int ret; -+ -+ if (bytes < 0) { -+ cli_dbgmsg("%s() %d\n", __func__, __LINE__); -+ return -1; -+ } -+ if (!mspack_handle) { -+ cli_dbgmsg("%s() %d\n", __func__, __LINE__); -+ return -1; -+ } -+ -+ if (mspack_handle->type == FILETYPE_FMAP) { -+ offset = mspack_handle->offset + mspack_handle->org; -+ -+ ret = fmap_readn(mspack_handle->fmap, buffer, offset, bytes); -+ if (ret != bytes) { -+ cli_dbgmsg("%s() %d %d, %d\n", __func__, __LINE__, bytes, ret); -+ return ret; -+ } -+ -+ mspack_handle->offset += bytes; -+ return bytes; -+ } -+ count = fread(buffer, bytes, 1, mspack_handle->f); -+ if (count < 1) { -+ cli_dbgmsg("%s() %d %d, %zd\n", __func__, __LINE__, bytes, count); -+ return -1; -+ } -+ return bytes; -+} -+ -+static int mspack_fmap_write(struct mspack_file *file, void *buffer, int bytes) -+{ -+ struct mspack_handle *mspack_handle = (struct mspack_handle *)file; -+ size_t count; -+ off_t max_size; -+ -+ if (bytes < 0 || !mspack_handle) { -+ cli_dbgmsg("%s() err %d\n", __func__, __LINE__); -+ return -1; -+ } -+ -+ if (mspack_handle->type == FILETYPE_FMAP) { -+ cli_dbgmsg("%s() err %d\n", __func__, __LINE__); -+ return -1; -+ } -+ -+ if (!bytes) -+ return 0; -+ -+ max_size = mspack_handle->max_size; -+ if (!max_size) -+ return bytes; -+ -+ max_size = min_t(off_t, max_size, bytes); -+ mspack_handle->max_size -= max_size; -+ -+ count = fwrite(buffer, max_size, 1, mspack_handle->f); -+ if (count < 1) { -+ cli_dbgmsg("%s() err %m <%zd %d>\n", __func__, count, bytes); -+ return -1; -+ } -+ -+ return bytes; -+} -+ -+static int mspack_fmap_seek(struct mspack_file *file, off_t offset, int mode) -+{ -+ struct mspack_handle *mspack_handle = (struct mspack_handle *)file; -+ -+ if (!mspack_handle) { -+ cli_dbgmsg("%s() err %d\n", __func__, __LINE__); -+ return -1; -+ } -+ -+ if (mspack_handle->type == FILETYPE_FMAP) { -+ off_t new_pos; -+ -+ switch (mode) { -+ case MSPACK_SYS_SEEK_START: -+ new_pos = offset; -+ break; -+ case MSPACK_SYS_SEEK_CUR: -+ new_pos = mspack_handle->offset + offset; -+ break; -+ case MSPACK_SYS_SEEK_END: -+ new_pos = mspack_handle->fmap->len + offset; -+ break; -+ default: -+ cli_dbgmsg("%s() err %d\n", __func__, __LINE__); -+ return -1; -+ } -+ if (new_pos < 0 || new_pos > mspack_handle->fmap->len) { -+ cli_dbgmsg("%s() err %d\n", __func__, __LINE__); -+ return -1; -+ } -+ -+ mspack_handle->offset = new_pos; -+ return 0; -+ } -+ -+ switch (mode) { -+ case MSPACK_SYS_SEEK_START: -+ mode = SEEK_SET; -+ break; -+ case MSPACK_SYS_SEEK_CUR: -+ mode = SEEK_CUR; -+ break; -+ case MSPACK_SYS_SEEK_END: -+ mode = SEEK_END; -+ break; -+ default: -+ cli_dbgmsg("%s() err %d\n", __func__, __LINE__); -+ return -1; -+ } -+ -+ return fseeko(mspack_handle->f, offset, mode); -+} -+ -+static off_t mspack_fmap_tell(struct mspack_file *file) -+{ -+ struct mspack_handle *mspack_handle = (struct mspack_handle *)file; -+ -+ if (!mspack_handle) -+ return -1; -+ -+ if (mspack_handle->type == FILETYPE_FMAP) -+ return mspack_handle->offset; -+ -+ return ftello(mspack_handle->f); -+} -+ -+static void mspack_fmap_message(struct mspack_file *file, const char *fmt, ...) -+{ -+ cli_dbgmsg("%s() %s\n", __func__, fmt); -+} -+static void *mspack_fmap_alloc(struct mspack_system *self, size_t num) -+{ -+ return malloc(num); -+} -+ -+static void mspack_fmap_free(void *mem) -+{ -+ free(mem); -+} -+ -+static void mspack_fmap_copy(void *src, void *dst, size_t num) -+{ -+ memcpy(dst, src, num); -+} -+ -+static struct mspack_system mspack_sys_fmap_ops = { -+ .open = mspack_fmap_open, -+ .close = mspack_fmap_close, -+ .read = mspack_fmap_read, -+ .write = mspack_fmap_write, -+ .seek = mspack_fmap_seek, -+ .tell = mspack_fmap_tell, -+ .message = mspack_fmap_message, -+ .alloc = mspack_fmap_alloc, -+ .free = mspack_fmap_free, -+ .copy = mspack_fmap_copy, -+}; -+ -+static int cli_scanfile(const char *filename, cli_ctx *ctx) -+{ -+ int fd, ret; -+ -+ /* internal version of cl_scanfile with arec/mrec preserved */ -+ fd = safe_open(filename, O_RDONLY|O_BINARY); -+ if (fd < 0) -+ return CL_EOPEN; -+ -+ ret = cli_magic_scandesc(fd, ctx); -+ -+ close(fd); -+ return ret; -+} -+ -+int cli_scanmscab(cli_ctx *ctx, off_t sfx_offset) -+{ -+ struct mscab_decompressor *cab_d; -+ struct mscabd_cabinet *cab_h; -+ struct mscabd_file *cab_f; -+ int ret; -+ int files; -+ int virus_num = 0; -+ struct mspack_name mspack_fmap = { -+ .fmap = *ctx->fmap, -+ .org = sfx_offset, -+ }; -+ struct mspack_system_ex ops_ex = { -+ .ops = mspack_sys_fmap_ops, -+ }; -+ -+ MSPACK_SYS_SELFTEST(ret); -+ if (ret) { -+ cli_dbgmsg("%s() failed at %d\n", __func__, __LINE__); -+ return CL_EUNPACK; -+ } -+ -+ cab_d = mspack_create_cab_decompressor(&ops_ex.ops); -+ if (!cab_d) { -+ cli_dbgmsg("%s() failed at %d\n", __func__, __LINE__); -+ return CL_EUNPACK; -+ } -+ -+ cab_h = cab_d->open(cab_d, (char *)&mspack_fmap); -+ if (!cab_h) { -+ ret = CL_EFORMAT; -+ cli_dbgmsg("%s() failed at %d\n", __func__, __LINE__); -+ goto out_dest; -+ } -+ files = 0; -+ for (cab_f = cab_h->files; cab_f; cab_f = cab_f->next) { -+ off_t max_size; -+ char *tmp_fname; -+ -+ ret = cli_matchmeta(ctx, cab_f->filename, 0, cab_f->length, 0, -+ files, 0, NULL); -+ if (ret) { -+ if (ret == CL_VIRUS) { -+ virus_num++; -+ if (!SCAN_ALL) -+ break; -+ } -+ goto out_close; -+ } -+ -+ if (ctx->engine->maxscansize) { -+ if (ctx->scansize >= ctx->engine->maxscansize) { -+ ret = CL_CLEAN; -+ break; -+ } -+ } -+ -+ if (ctx->engine->maxscansize && -+ ctx->scansize + ctx->engine->maxfilesize >= -+ ctx->engine->maxscansize) -+ max_size = ctx->engine->maxscansize - -+ ctx->scansize; -+ else -+ max_size = ctx->engine->maxfilesize ? -+ ctx->engine->maxfilesize : -+ 0xffffffff; -+ -+ tmp_fname = cli_gentemp(ctx->engine->tmpdir); -+ if (!tmp_fname) { -+ ret = CL_EMEM; -+ break; -+ } -+ -+ ops_ex.max_size = max_size; -+ /* scan */ -+ ret = cab_d->extract(cab_d, cab_f, tmp_fname); -+ if (ret) { -+ /* Failed to extract */ -+ cli_dbgmsg("%s() failed to extract %d\n", __func__, ret); -+ } else { -+ ret = cli_scanfile(tmp_fname, ctx); -+ if (ret == CL_VIRUS) -+ virus_num++; -+ } -+ if (!ctx->engine->keeptmp) { -+ if (!access(tmp_fname, R_OK) && cli_unlink(tmp_fname)) { -+ free(tmp_fname); -+ ret = CL_EUNLINK; -+ break; -+ } -+ } -+ free(tmp_fname); -+ files++; -+ if (ret == CL_VIRUS && SCAN_ALL) -+ continue; -+ if (ret) -+ break; -+ } -+ -+out_close: -+ cab_d->close(cab_d, cab_h); -+out_dest: -+ mspack_destroy_cab_decompressor(cab_d); -+ if (virus_num) -+ return CL_VIRUS; -+ return ret; -+} -+ -+int cli_scanmschm(cli_ctx *ctx) -+{ -+ struct mschm_decompressor *mschm_d; -+ struct mschmd_header *mschm_h; -+ struct mschmd_file *mschm_f; -+ int ret; -+ int files; -+ int virus_num = 0; -+ struct mspack_name mspack_fmap = { -+ .fmap = *ctx->fmap, -+ }; -+ struct mspack_system_ex ops_ex = { -+ .ops = mspack_sys_fmap_ops, -+ }; -+ -+ MSPACK_SYS_SELFTEST(ret); -+ if (ret) { -+ cli_dbgmsg("%s() failed at %d\n", __func__, __LINE__); -+ return CL_EUNPACK; -+ } -+ -+ mschm_d = mspack_create_chm_decompressor(&ops_ex.ops); -+ if (!mschm_d) { -+ cli_dbgmsg("%s() failed at %d\n", __func__, __LINE__); -+ return CL_EUNPACK; -+ } -+ -+ mschm_h = mschm_d->open(mschm_d, (char *)&mspack_fmap); -+ if (!mschm_h) { -+ ret = CL_EFORMAT; -+ cli_dbgmsg("%s() failed at %d\n", __func__, __LINE__); -+ goto out_dest; -+ } -+ files = 0; -+ for (mschm_f = mschm_h->files; mschm_f; mschm_f = mschm_f->next) { -+ off_t max_size; -+ char *tmp_fname; -+ -+ ret = cli_matchmeta(ctx, mschm_f->filename, 0, mschm_f->length, -+ 0, files, 0, NULL); -+ if (ret) { -+ if (ret == CL_VIRUS) { -+ virus_num++; -+ if (!SCAN_ALL) -+ break; -+ } -+ goto out_close; -+ } -+ -+ if (ctx->engine->maxscansize) { -+ if (ctx->scansize >= ctx->engine->maxscansize) { -+ ret = CL_CLEAN; -+ break; -+ } -+ } -+ -+ if (ctx->engine->maxscansize && -+ ctx->scansize + ctx->engine->maxfilesize >= -+ ctx->engine->maxscansize) -+ max_size = ctx->engine->maxscansize - -+ ctx->scansize; -+ else -+ max_size = ctx->engine->maxfilesize ? -+ ctx->engine->maxfilesize : -+ 0xffffffff; -+ -+ ops_ex.max_size = max_size; -+ -+ tmp_fname = cli_gentemp(ctx->engine->tmpdir); -+ if (!tmp_fname) { -+ ret = CL_EMEM; -+ break; -+ } -+ -+ /* scan */ -+ ret = mschm_d->extract(mschm_d, mschm_f, tmp_fname); -+ if (ret) { -+ /* Failed to extract */ -+ cli_dbgmsg("%s() failed to extract %d\n", __func__, ret); -+ } else { -+ ret = cli_scanfile(tmp_fname, ctx); -+ if (ret == CL_VIRUS) -+ virus_num++; -+ } -+ if (!ctx->engine->keeptmp) { -+ if (!access(tmp_fname, R_OK) && cli_unlink(tmp_fname)) { -+ free(tmp_fname); -+ ret = CL_EUNLINK; -+ break; -+ } -+ } -+ free(tmp_fname); -+ files++; -+ if (ret == CL_VIRUS && SCAN_ALL) -+ continue; -+ if (ret) -+ break; -+ } -+ -+out_close: -+ mschm_d->close(mschm_d, mschm_h); -+out_dest: -+ mspack_destroy_chm_decompressor(mschm_d); -+ if (virus_num) -+ return CL_VIRUS; -+ return ret; -+ -+ return 0; -+} -diff --git a/libclamav/libmspack.h b/libclamav/libmspack.h -new file mode 100644 -index 000000000000..07a9442bf253 ---- /dev/null -+++ b/libclamav/libmspack.h -@@ -0,0 +1,7 @@ -+#ifndef __LIBMSPACK_H__ -+#define __LIBMSPACK_H__ -+ -+int cli_scanmscab(cli_ctx *ctx, off_t sfx_offset); -+int cli_scanmschm(cli_ctx *ctx); -+ -+#endif -diff --git a/libclamav/mspack.c b/libclamav/mspack.c -deleted file mode 100644 -index cc4c0a59fc9a..000000000000 ---- a/libclamav/mspack.c -+++ /dev/null -@@ -1,2026 +0,0 @@ --/* -- * This file includes code from libmspack adapted for libclamav by -- * tkojm@clamav.net and draynor@sourcefire.com -- * -- * Copyright (C) 2003-2004 Stuart Caie -- * -- * This library is free software; you can redistribute it and/or -- * modify it under the terms of the GNU Lesser General Public -- * License version 2.1 as published by the Free Software Foundation. -- * -- * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -- * USA -- */ -- --#if HAVE_CONFIG_H --#include "clamav-config.h" --#endif -- --#include --#include -- --#include "others.h" --#include "clamav.h" --#include "mspack.h" -- --#if HAVE_LIMITS_H --# include --#endif --#ifndef CHAR_BIT --# define CHAR_BIT (8) --#endif -- -- --/*************************************************************************** -- * MS-ZIP decompression implementation -- *************************************************************************** -- * The LZX method was created by Jonathan Forbes and Tomi Poutanen, adapted -- * by Microsoft Corporation. -- * -- * The deflate method was created by Phil Katz. MSZIP is equivalent to the -- * deflate method. -- * -- */ -- --/* match lengths for literal codes 257.. 285 */ --static const unsigned short mszip_lit_lengths[29] = { -- 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, -- 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 --}; -- --/* match offsets for distance codes 0 .. 29 */ --static const unsigned short mszip_dist_offsets[30] = { -- 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, -- 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 --}; -- --/* extra bits required for literal codes 257.. 285 */ --static const unsigned char mszip_lit_extrabits[29] = { -- 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, -- 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 --}; -- --/* extra bits required for distance codes 0 .. 29 */ --static const unsigned char mszip_dist_extrabits[30] = { -- 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, -- 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 --}; -- --/* the order of the bit length Huffman code lengths */ --static const unsigned char mszip_bitlen_order[19] = { -- 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 --}; -- --/* ANDing with mszip_bit_mask[n] masks the lower n bits */ --static const unsigned short mszip_bit_mask_tab[17] = { -- 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, -- 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff --}; -- --#define MSZIP_STORE_BITS do { \ -- zip->i_ptr = i_ptr; \ -- zip->i_end = i_end; \ -- zip->bit_buffer = bit_buffer; \ -- zip->bits_left = bits_left; \ --} while (0) -- --#define MSZIP_RESTORE_BITS do { \ -- i_ptr = zip->i_ptr; \ -- i_end = zip->i_end; \ -- bit_buffer = zip->bit_buffer; \ -- bits_left = zip->bits_left; \ --} while (0) -- --#define MSZIP_ENSURE_BITS(nbits) do { \ -- while (bits_left < (nbits)) { \ -- if (i_ptr >= i_end) { \ -- if (mszip_read_input(zip)) return zip->error; \ -- i_ptr = zip->i_ptr; \ -- i_end = zip->i_end; \ -- if(i_ptr == i_end) break; \ -- } \ -- bit_buffer |= *i_ptr++ << bits_left; bits_left += 8; \ -- } \ --} while (0) -- --#define MSZIP_PEEK_BITS(nbits) (bit_buffer & ((1<<(nbits))-1)) --#define MSZIP_PEEK_BITS_T(nbits) (bit_buffer & mszip_bit_mask_tab[(nbits)]) -- --#define MSZIP_REMOVE_BITS(nbits) ((bit_buffer >>= (nbits)), (bits_left -= (nbits))) -- --#define MSZIP_READ_BITS(val, nbits) do { \ -- MSZIP_ENSURE_BITS(nbits); (val) = MSZIP_PEEK_BITS(nbits); MSZIP_REMOVE_BITS(nbits); \ --} while (0) -- --#define MSZIP_READ_BITS_T(val, nbits) do { \ -- MSZIP_ENSURE_BITS(nbits); (val) = MSZIP_PEEK_BITS_T(nbits); MSZIP_REMOVE_BITS(nbits); \ --} while (0) -- --static int mszip_read_input(struct mszip_stream *zip) { -- int nread = zip->read_cb(zip->file, zip->inbuf, (int)zip->inbuf_size); -- if (nread < 0) { -- if (zip->file->error == CL_BREAK) { -- if ((unsigned int)nread == zip->last) { -- cli_dbgmsg("mszip_read_input: Two consecutive CL_BREAKs reached.\n"); -- return CL_BREAK; -- } -- // Need short circuit to ensure scanning small files -- cli_dbgmsg("mszip_read_input: First CL_BREAK reached.\n"); -- zip->i_ptr = zip->i_end; -- zip->last = nread; -- return CL_SUCCESS; -- } -- else -- return zip->error = CL_EFORMAT; -- } -- -- zip->last = nread; -- zip->i_ptr = &zip->inbuf[0]; -- zip->i_end = &zip->inbuf[nread]; -- -- return CL_SUCCESS; --} -- --/* inflate() error codes */ --#define INF_ERR_BLOCKTYPE (-1) /* unknown block type */ --#define INF_ERR_COMPLEMENT (-2) /* block size complement mismatch */ --#define INF_ERR_FLUSH (-3) /* error from flush_window() callback */ --#define INF_ERR_BITBUF (-4) /* too many bits in bit buffer */ --#define INF_ERR_SYMLENS (-5) /* too many symbols in blocktype 2 header */ --#define INF_ERR_BITLENTBL (-6) /* failed to build bitlens huffman table */ --#define INF_ERR_LITERALTBL (-7) /* failed to build literals huffman table */ --#define INF_ERR_DISTANCETBL (-8) /* failed to build distance huffman table */ --#define INF_ERR_BITOVERRUN (-9) /* bitlen RLE code goes over table size */ --#define INF_ERR_BADBITLEN (-10) /* invalid bit-length code */ --#define INF_ERR_LITCODE (-11) /* out-of-range literal code */ --#define INF_ERR_DISTCODE (-12) /* out-of-range distance code */ --#define INF_ERR_DISTANCE (-13) /* somehow, distance is beyond 32k */ --#define INF_ERR_HUFFSYM (-14) /* out of bits decoding huffman symbol */ -- --/* mszip_make_decode_table(nsyms, nbits, length[], table[]) -- * -- * This function was coded by David Tritscher. It builds a fast huffman -- * decoding table out of just a canonical huffman code lengths table. -- * -- * NOTE: this is NOT identical to the mszip_make_decode_table() in lzxd.c. This -- * one reverses the quick-lookup bit pattern. Bits are read MSB to LSB in LZX, -- * but LSB to MSB in MSZIP. -- * -- * nsyms = total number of symbols in this huffman tree. -- * nbits = any symbols with a code length of nbits or less can be decoded -- * in one lookup of the table. -- * length = A table to get code lengths from [0 to nsyms-1] -- * table = The table to fill up with decoded symbols and pointers. -- * -- * Returns 0 for OK or 1 for error -- */ --static int mszip_make_decode_table(unsigned int nsyms, unsigned int nbits, -- unsigned char *length, unsigned short *table) --{ -- register unsigned int leaf, reverse, fill; -- register unsigned short sym, next_sym; -- register unsigned char bit_num; -- unsigned int pos = 0; /* the current position in the decode table */ -- unsigned int table_mask = 1 << nbits; -- unsigned int mszip_bit_mask = table_mask >> 1; /* don't do 0 length codes */ -- -- /* fill entries for codes short enough for a direct mapping */ -- for (bit_num = 1; bit_num <= nbits; bit_num++) { -- for (sym = 0; sym < nsyms; sym++) { -- if (length[sym] != bit_num) continue; -- -- /* reverse the significant bits */ -- fill = length[sym]; reverse = pos >> (nbits - fill); leaf = 0; -- do {leaf <<= 1; leaf |= reverse & 1; reverse >>= 1;} while (--fill); -- -- if((pos += mszip_bit_mask) > table_mask) return 1; /* table overrun */ -- -- /* fill all possible lookups of this symbol with the symbol itself */ -- fill = mszip_bit_mask; next_sym = 1 << bit_num; -- do { table[leaf] = sym; leaf += next_sym; } while (--fill); -- } -- mszip_bit_mask >>= 1; -- } -- -- /* exit with success if table is now complete */ -- if (pos == table_mask) return 0; -- -- /* mark all remaining table entries as unused */ -- for (sym = pos; sym < table_mask; sym++) { -- reverse = sym; leaf = 0; fill = nbits; -- do { leaf <<= 1; leaf |= reverse & 1; reverse >>= 1; } while (--fill); -- table[leaf] = 0xFFFF; -- } -- -- /* where should the longer codes be allocated from? */ -- next_sym = ((table_mask >> 1) < nsyms) ? nsyms : (table_mask >> 1); -- -- /* give ourselves room for codes to grow by up to 16 more bits. -- * codes now start at bit nbits+16 and end at (nbits+16-codelength) */ -- pos <<= 16; -- table_mask <<= 16; -- mszip_bit_mask = 1 << 15; -- -- for (bit_num = nbits+1; bit_num <= MSZIP_MAX_HUFFBITS; bit_num++) { -- for (sym = 0; sym < nsyms; sym++) { -- if (length[sym] != bit_num) continue; -- -- /* leaf = the first nbits of the code, reversed */ -- reverse = pos >> 16; leaf = 0; fill = nbits; -- do {leaf <<= 1; leaf |= reverse & 1; reverse >>= 1;} while (--fill); -- -- for (fill = 0; fill < (bit_num - nbits); fill++) { -- /* if this path hasn't been taken yet, 'allocate' two entries */ -- if (table[leaf] == 0xFFFF) { -- table[(next_sym << 1) ] = 0xFFFF; -- table[(next_sym << 1) + 1 ] = 0xFFFF; -- table[leaf] = next_sym++; -- } -- /* follow the path and select either left or right for next bit */ -- leaf = (table[leaf] << 1) | ((pos >> (15 - fill)) & 1); -- } -- table[leaf] = sym; -- -- if ((pos += mszip_bit_mask) > table_mask) return 1; /* table overflow */ -- } -- mszip_bit_mask >>= 1; -- } -- -- /* full table? */ -- return (pos != table_mask) ? 1 : 0; --} -- --/* MSZIP_READ_HUFFSYM(tablename, var) decodes one huffman symbol from the -- * bitstream using the stated table and puts it in var. -- */ --#define MSZIP_READ_HUFFSYM(tbl, var) do { \ -- /* huffman symbols can be up to 16 bits long */ \ -- MSZIP_ENSURE_BITS(MSZIP_MAX_HUFFBITS); \ -- /* immediate table lookup of [tablebits] bits of the code */ \ -- sym = zip->tbl##_table[MSZIP_PEEK_BITS(MSZIP_##tbl##_TABLEBITS)]; \ -- /* is the symbol is longer than [tablebits] bits? (i=node index) */ \ -- if (sym >= MSZIP_##tbl##_MAXSYMBOLS) { \ -- /* decode remaining bits by tree traversal */ \ -- i = MSZIP_##tbl##_TABLEBITS - 1; \ -- do { \ -- /* check next bit. error if we run out of bits before decode */ \ -- if (i++ > MSZIP_MAX_HUFFBITS) { \ -- cli_dbgmsg("zip_inflate: out of bits in huffman decode\n"); \ -- return INF_ERR_HUFFSYM; \ -- } \ -- sym = (sym << 1) | ((bit_buffer >> i) & 1); \ -- if(sym >= MSZIP_##tbl##_TABLESIZE) { \ -- cli_dbgmsg("zip_inflate: index out of table\n"); \ -- return INF_ERR_HUFFSYM; \ -- } \ -- /* double node index and add 0 (left branch) or 1 (right) */ \ -- sym = zip->tbl##_table[sym]; \ -- /* while we are still in node indicies, not decoded symbols */ \ -- } while (sym >= MSZIP_##tbl##_MAXSYMBOLS); \ -- } \ -- /* result */ \ -- (var) = sym; \ -- /* look up the code length of that symbol and discard those bits */ \ -- i = zip->tbl##_len[sym]; \ -- MSZIP_REMOVE_BITS(i); \ --} while (0) -- --static int mszip_read_lens(struct mszip_stream *zip) { -- /* for the bit buffer and huffman decoding */ -- register unsigned int bit_buffer; -- register int bits_left; -- unsigned char *i_ptr, *i_end; -- -- /* bitlen Huffman codes -- immediate lookup, 7 bit max code length */ -- unsigned short bl_table[(1 << 7)]; -- unsigned char bl_len[19]; -- -- unsigned char lens[MSZIP_LITERAL_MAXSYMBOLS + MSZIP_DISTANCE_MAXSYMBOLS]; -- unsigned int lit_codes, dist_codes, code, last_code=0, bitlen_codes, i, run; -- -- MSZIP_RESTORE_BITS; -- -- /* read the number of codes */ -- MSZIP_READ_BITS(lit_codes, 5); lit_codes += 257; -- MSZIP_READ_BITS(dist_codes, 5); dist_codes += 1; -- MSZIP_READ_BITS(bitlen_codes, 4); bitlen_codes += 4; -- if (lit_codes > MSZIP_LITERAL_MAXSYMBOLS) return INF_ERR_SYMLENS; -- if (dist_codes > MSZIP_DISTANCE_MAXSYMBOLS) return INF_ERR_SYMLENS; -- -- /* read in the bit lengths in their unusual order */ -- for (i = 0; i < bitlen_codes; i++) MSZIP_READ_BITS(bl_len[mszip_bitlen_order[i]], 3); -- while (i < 19) bl_len[mszip_bitlen_order[i++]] = 0; -- -- /* create decoding table with an immediate lookup */ -- if (mszip_make_decode_table(19, 7, &bl_len[0], &bl_table[0])) { -- return INF_ERR_BITLENTBL; -- } -- -- /* read literal / distance code lengths */ -- for (i = 0; i < (lit_codes + dist_codes); i++) { -- /* single-level huffman lookup */ -- MSZIP_ENSURE_BITS(7); -- code = bl_table[MSZIP_PEEK_BITS(7)]; -- MSZIP_REMOVE_BITS(bl_len[code]); -- -- if (code < 16) lens[i] = last_code = code; -- else { -- switch (code) { -- case 16: MSZIP_READ_BITS(run, 2); run += 3; code = last_code; break; -- case 17: MSZIP_READ_BITS(run, 3); run += 3; code = 0; break; -- case 18: MSZIP_READ_BITS(run, 7); run += 11; code = 0; break; -- default: cli_dbgmsg("zip_read_lens: bad code!: %u\n", code); return INF_ERR_BADBITLEN; -- } -- if ((i + run) > (lit_codes + dist_codes)) return INF_ERR_BITOVERRUN; -- while (run--) lens[i++] = code; -- i--; -- } -- } -- -- /* copy LITERAL code lengths and clear any remaining */ -- i = lit_codes; -- memcpy(&zip->LITERAL_len[0], &lens[0], i); -- while (i < MSZIP_LITERAL_MAXSYMBOLS) zip->LITERAL_len[i++] = 0; -- -- i = dist_codes; -- memcpy(&zip->DISTANCE_len[0], &lens[lit_codes], i); -- while (i < MSZIP_DISTANCE_MAXSYMBOLS) zip->DISTANCE_len[i++] = 0; -- -- MSZIP_STORE_BITS; -- return 0; --} -- --static int mspack_write(int fd, const void *buff, unsigned int count, struct cab_file *file) --{ -- int ret; -- -- if(file->max_size) { -- if(file->written_size >= file->max_size) -- return CL_BREAK; -- -- if(file->written_size + count > file->max_size) -- count = file->max_size - file->written_size; -- } -- if((ret = cli_writen(fd, buff, count)) > 0) -- file->written_size += ret; -- -- return (ret == -1) ? CL_EWRITE : CL_SUCCESS; --} -- --/* a clean implementation of RFC 1951 / inflate */ --static int mszip_inflate(struct mszip_stream *zip) { -- unsigned int last_block, block_type, distance, length, this_run, i; -- -- /* for the bit buffer and huffman decoding */ -- register unsigned int bit_buffer; -- register int bits_left; -- register unsigned short sym; -- unsigned char *i_ptr, *i_end; -- -- MSZIP_RESTORE_BITS; -- -- do { -- /* read in last block bit */ -- MSZIP_READ_BITS(last_block, 1); -- -- /* read in block type */ -- MSZIP_READ_BITS(block_type, 2); -- -- if (block_type == 0) { -- /* uncompressed block */ -- unsigned char lens_buf[4]; -- -- /* go to byte boundary */ -- i = bits_left & 7; MSZIP_REMOVE_BITS(i); -- -- /* read 4 bytes of data, emptying the bit-buffer if necessary */ -- for (i = 0; (bits_left >= 8); i++) { -- if (i == 4) return INF_ERR_BITBUF; -- lens_buf[i] = MSZIP_PEEK_BITS(8); -- MSZIP_REMOVE_BITS(8); -- } -- if (bits_left != 0) return INF_ERR_BITBUF; -- while (i < 4) { -- if (i_ptr >= i_end) { -- if (mszip_read_input(zip)) return zip->error; -- i_ptr = zip->i_ptr; -- i_end = zip->i_end; -- if(i_ptr == i_end) break; -- } -- lens_buf[i++] = *i_ptr++; -- } -- if (i < 4) return INF_ERR_BITBUF; -- -- /* get the length and its complement */ -- length = lens_buf[0] | (lens_buf[1] << 8); -- i = lens_buf[2] | (lens_buf[3] << 8); -- if (length != (~i & 0xFFFF)) return INF_ERR_COMPLEMENT; -- -- /* read and copy the uncompressed data into the window */ -- while (length > 0) { -- if (i_ptr >= i_end) { -- if (mszip_read_input(zip)) return zip->error; -- i_ptr = zip->i_ptr; -- i_end = zip->i_end; -- if(i_ptr == i_end) break; -- } -- -- this_run = length; -- if (this_run > (unsigned int)(i_end - i_ptr)) this_run = i_end - i_ptr; -- if (this_run > (MSZIP_FRAME_SIZE - zip->window_posn)) -- this_run = MSZIP_FRAME_SIZE - zip->window_posn; -- -- memcpy(&zip->window[zip->window_posn], i_ptr, this_run); -- zip->window_posn += this_run; -- i_ptr += this_run; -- length -= this_run; -- -- if (zip->window_posn == MSZIP_FRAME_SIZE) { -- if (zip->flush_window(zip, MSZIP_FRAME_SIZE)) return INF_ERR_FLUSH; -- zip->window_posn = 0; -- } -- } -- } -- else if ((block_type == 1) || (block_type == 2)) { -- /* Huffman-compressed LZ77 block */ -- unsigned int window_posn, match_posn, code; -- -- if (block_type == 1) { -- /* block with fixed Huffman codes */ -- i = 0; -- while (i < 144) zip->LITERAL_len[i++] = 8; -- while (i < 256) zip->LITERAL_len[i++] = 9; -- while (i < 280) zip->LITERAL_len[i++] = 7; -- while (i < 288) zip->LITERAL_len[i++] = 8; -- for (i = 0; i < 32; i++) zip->DISTANCE_len[i] = 5; -- } -- else { -- /* block with dynamic Huffman codes */ -- MSZIP_STORE_BITS; -- if ((i = mszip_read_lens(zip))) return i; -- MSZIP_RESTORE_BITS; -- } -- -- /* now huffman lengths are read for either kind of block, -- * create huffman decoding tables */ -- if (mszip_make_decode_table(MSZIP_LITERAL_MAXSYMBOLS, MSZIP_LITERAL_TABLEBITS, -- &zip->LITERAL_len[0], &zip->LITERAL_table[0])) -- { -- return INF_ERR_LITERALTBL; -- } -- -- if (mszip_make_decode_table(MSZIP_DISTANCE_MAXSYMBOLS,MSZIP_DISTANCE_TABLEBITS, -- &zip->DISTANCE_len[0], &zip->DISTANCE_table[0])) -- { -- return INF_ERR_DISTANCETBL; -- } -- -- /* decode forever until end of block code */ -- window_posn = zip->window_posn; -- while (1) { -- MSZIP_READ_HUFFSYM(LITERAL, code); -- if (code < 256) { -- zip->window[window_posn++] = (unsigned char) code; -- if (window_posn == MSZIP_FRAME_SIZE) { -- if (zip->flush_window(zip, MSZIP_FRAME_SIZE)) return INF_ERR_FLUSH; -- window_posn = 0; -- } -- } -- else if (code == 256) { -- /* END OF BLOCK CODE: loop break point */ -- break; -- } -- else { -- code -= 257; -- if (code >= 29) return INF_ERR_LITCODE; -- MSZIP_READ_BITS_T(length, mszip_lit_extrabits[code]); -- length += mszip_lit_lengths[code]; -- -- MSZIP_READ_HUFFSYM(DISTANCE, code); -- if (code >= 30) return INF_ERR_DISTCODE; -- MSZIP_READ_BITS_T(distance, mszip_dist_extrabits[code]); -- distance += mszip_dist_offsets[code]; -- -- /* match position is window position minus distance. If distance -- * is more than window position numerically, it must 'wrap -- * around' the frame size. */ -- match_posn = ((distance > window_posn) ? MSZIP_FRAME_SIZE : 0) -- + window_posn - distance; -- -- /* copy match */ -- if (length < 12) { -- /* short match, use slower loop but no loop setup code */ -- while (length--) { -- zip->window[window_posn++] = zip->window[match_posn++]; -- match_posn &= MSZIP_FRAME_SIZE - 1; -- -- if (window_posn == MSZIP_FRAME_SIZE) { -- if (zip->flush_window(zip, MSZIP_FRAME_SIZE)) -- return INF_ERR_FLUSH; -- window_posn = 0; -- } -- } -- } -- else { -- /* longer match, use faster loop but with setup expense */ -- unsigned char *runsrc, *rundest; -- do { -- this_run = length; -- if ((match_posn + this_run) > MSZIP_FRAME_SIZE) -- this_run = MSZIP_FRAME_SIZE - match_posn; -- if ((window_posn + this_run) > MSZIP_FRAME_SIZE) -- this_run = MSZIP_FRAME_SIZE - window_posn; -- -- rundest = &zip->window[window_posn]; window_posn += this_run; -- runsrc = &zip->window[match_posn]; match_posn += this_run; -- length -= this_run; -- while (this_run--) *rundest++ = *runsrc++; -- -- /* flush if necessary */ -- if (window_posn == MSZIP_FRAME_SIZE) { -- if (zip->flush_window(zip, MSZIP_FRAME_SIZE)) -- return INF_ERR_FLUSH; -- window_posn = 0; -- } -- if (match_posn == MSZIP_FRAME_SIZE) match_posn = 0; -- } while (length > 0); -- } -- -- } /* else (code >= 257) */ -- -- } /* while (forever) -- break point at 'code == 256' */ -- zip->window_posn = window_posn; -- } -- else { -- /* block_type == 3 -- bad block type */ -- return INF_ERR_BLOCKTYPE; -- } -- } while (!last_block); -- -- /* flush the remaining data */ -- if (zip->window_posn) { -- if (zip->flush_window(zip, zip->window_posn)) return INF_ERR_FLUSH; -- } -- MSZIP_STORE_BITS; -- -- /* return success */ -- return 0; --} -- --/* inflate() calls this whenever the window should be flushed. As -- * MSZIP only expands to the size of the window, the implementation used -- * simply keeps track of the amount of data flushed, and if more than 32k -- * is flushed, an error is raised. -- */ --static int mszip_flush_window(struct mszip_stream *zip, -- unsigned int data_flushed) --{ -- zip->bytes_output += data_flushed; -- if (zip->bytes_output > MSZIP_FRAME_SIZE) { -- cli_dbgmsg("mszip_flush_window: overflow: %u bytes flushed, total is now %u\n", data_flushed, zip->bytes_output); -- return 1; -- } -- return 0; --} -- --struct mszip_stream *mszip_init(int ofd, -- int input_buffer_size, -- int repair_mode, -- struct cab_file *file, -- int (*read_cb)(struct cab_file *, unsigned char *, int)) --{ -- struct mszip_stream *zip; -- -- input_buffer_size = (input_buffer_size + 1) & -2; -- if (!input_buffer_size) return NULL; -- -- /* allocate decompression state */ -- if (!(zip = cli_calloc(1, sizeof(struct mszip_stream)))) { -- cli_errmsg("mszip_stream: Unable to allocate zip buffer\n"); -- return NULL; -- } -- -- /* allocate input buffer */ -- zip->inbuf = cli_malloc((size_t) input_buffer_size); -- if (!zip->inbuf) { -- cli_errmsg("mszip_stream: Unable to allocate input buffer\n"); -- free(zip); -- return NULL; -- } -- -- /* initialise decompression state */ -- zip->ofd = ofd; -- zip->wflag = 1; -- zip->inbuf_size = input_buffer_size; -- zip->error = CL_SUCCESS; -- zip->repair_mode = repair_mode; -- zip->flush_window = &mszip_flush_window; -- zip->input_end = 0; -- -- zip->i_ptr = zip->i_end = &zip->inbuf[0]; -- zip->o_ptr = zip->o_end = NULL; -- zip->bit_buffer = 0; zip->bits_left = 0; -- -- zip->file = file; -- zip->read_cb = read_cb; -- -- return zip; --} -- --int mszip_decompress(struct mszip_stream *zip, uint32_t out_bytes) { -- /* for the bit buffer */ -- register unsigned int bit_buffer; -- register int bits_left; -- unsigned char *i_ptr, *i_end; -- -- int i, ret, state, error; -- -- /* easy answers */ -- if (!zip) return CL_ENULLARG; -- if (zip->error) return zip->error; -- -- /* flush out any stored-up bytes before we begin */ -- i = zip->o_end - zip->o_ptr; -- if (((off_t) i > out_bytes) && ((int) out_bytes >= 0)) i = (int) out_bytes; -- if (i) { -- if (zip->wflag && (ret = mspack_write(zip->ofd, zip->o_ptr, i, zip->file)) != CL_SUCCESS) { -- return zip->error = ret; -- } -- zip->o_ptr += i; -- out_bytes -= i; -- } -- if (out_bytes == 0) return CL_SUCCESS; -- -- while (out_bytes > 0) { -- /* unpack another block */ -- MSZIP_RESTORE_BITS; -- -- /* skip to next read 'CK' header */ -- i = bits_left & 7; MSZIP_REMOVE_BITS(i); /* align to bytestream */ -- state = 0; -- do { -- MSZIP_READ_BITS(i, 8); -- if (i == 'C') state = 1; -- else if ((state == 1) && (i == 'K')) state = 2; -- else state = 0; -- } while (state != 2); -- -- /* inflate a block, repair and realign if necessary */ -- zip->window_posn = 0; -- zip->bytes_output = 0; -- MSZIP_STORE_BITS; -- if ((error = mszip_inflate(zip))) { -- cli_dbgmsg("mszip_decompress: inflate error %d\n", error); -- if (zip->repair_mode) { -- cli_dbgmsg("mszip_decompress: MSZIP error, %u bytes of data lost\n", -- MSZIP_FRAME_SIZE - zip->bytes_output); -- for (i = zip->bytes_output; i < MSZIP_FRAME_SIZE; i++) { -- zip->window[i] = '\0'; -- } -- zip->bytes_output = MSZIP_FRAME_SIZE; -- } -- else { -- return zip->error = (error > 0) ? error : CL_EFORMAT; -- } -- } -- zip->o_ptr = &zip->window[0]; -- zip->o_end = &zip->o_ptr[zip->bytes_output]; -- -- /* write a frame */ -- i = (out_bytes < (off_t)zip->bytes_output) ? -- (int)out_bytes : zip->bytes_output; -- if (zip->wflag && (ret = mspack_write(zip->ofd, zip->o_ptr, i, zip->file)) != CL_SUCCESS) { -- return zip->error = ret; -- } -- -- /* mspack errors (i.e. read errors) are fatal and can't be recovered */ -- if ((error > 0) && zip->repair_mode) return error; -- -- zip->o_ptr += i; -- out_bytes -= i; -- } -- -- if (out_bytes) -- cli_dbgmsg("mszip_decompress: bytes left to output\n"); -- -- return CL_SUCCESS; --} -- --void mszip_free(struct mszip_stream *zip) { -- if (zip) { -- free(zip->inbuf); -- free(zip); -- } --} -- --/*************************************************************************** -- * LZX decompression implementation -- *************************************************************************** -- * The LZX method was created by Jonathan Forbes and Tomi Poutanen, adapted -- * by Microsoft Corporation. -- * -- */ -- --/* LZX decompressor input macros -- * -- * LZX_STORE_BITS stores bitstream state in lzx_stream structure -- * LZX_RESTORE_BITS restores bitstream state from lzx_stream structure -- * LZX_READ_BITS(var,n) takes N bits from the buffer and puts them in var -- * LZX_ENSURE_BITS(n) ensures there are at least N bits in the bit buffer. -- * LZX_PEEK_BITS(n) extracts without removing N bits from the bit buffer -- * LZX_REMOVE_BITS(n) removes N bits from the bit buffer -- * -- */ -- --#define LZX_BITBUF_WIDTH (sizeof(bit_buffer) * CHAR_BIT) -- --#define LZX_STORE_BITS do { \ -- lzx->i_ptr = i_ptr; \ -- lzx->i_end = i_end; \ -- lzx->bit_buffer = bit_buffer; \ -- lzx->bits_left = bits_left; \ --} while (0) -- --#define LZX_RESTORE_BITS do { \ -- i_ptr = lzx->i_ptr; \ -- i_end = lzx->i_end; \ -- bit_buffer = lzx->bit_buffer; \ -- bits_left = lzx->bits_left; \ --} while (0) -- --#define LZX_ENSURE_BITS(nbits) \ -- while (bits_left < (nbits)) { \ -- if (i_ptr + 1 >= i_end) { \ -- if (lzx_read_input(lzx)) return lzx->error; \ -- i_ptr = lzx->i_ptr; \ -- i_end = lzx->i_end; \ -- } \ -- bit_buffer |= ((i_ptr[1] << 8) | i_ptr[0]) \ -- << (LZX_BITBUF_WIDTH - 16 - bits_left); \ -- bits_left += 16; \ -- i_ptr += 2; \ -- } -- --#define LZX_PEEK_BITS(nbits) (bit_buffer >> (LZX_BITBUF_WIDTH - (nbits))) -- --#define LZX_REMOVE_BITS(nbits) ((bit_buffer <<= (nbits)), (bits_left -= (nbits))) -- --#define LZX_READ_BITS(val, nbits) do { \ -- LZX_ENSURE_BITS(nbits); \ -- (val) = LZX_PEEK_BITS(nbits); \ -- LZX_REMOVE_BITS(nbits); \ --} while (0) -- --static int lzx_read_input(struct lzx_stream *lzx) { -- int bread = lzx->read_cb(lzx->file, &lzx->inbuf[0], (int)lzx->inbuf_size); -- if (bread < 0) { -- if (lzx->file->error == CL_BREAK) -- return lzx->error = CL_BREAK; -- else -- return lzx->error = CL_EFORMAT; -- } -- -- /* huff decode's ENSURE_BYTES(16) might overrun the input stream, even -- * if those bits aren't used, so fake 2 more bytes */ -- if (bread == 0) { -- if (lzx->input_end) { -- cli_dbgmsg("lzx_read_input: out of input bytes\n"); -- return lzx->error = CL_EREAD; -- } -- else { -- bread = 2; -- lzx->inbuf[0] = lzx->inbuf[1] = 0; -- lzx->input_end = 1; -- } -- } -- -- lzx->i_ptr = &lzx->inbuf[0]; -- lzx->i_end = &lzx->inbuf[bread]; -- -- return CL_SUCCESS; --} -- --/* Huffman decoding macros */ -- --/* LZX_READ_HUFFSYM(tablename, var) decodes one huffman symbol from the -- * bitstream using the stated table and puts it in var. -- */ --#define LZX_READ_HUFFSYM(tbl, var) do { \ -- /* huffman symbols can be up to 16 bits long */ \ -- LZX_ENSURE_BITS(16); \ -- /* immediate table lookup of [tablebits] bits of the code */ \ -- sym = lzx->tbl##_table[LZX_PEEK_BITS(LZX_##tbl##_TABLEBITS)]; \ -- /* is the symbol is longer than [tablebits] bits? (i=node index) */ \ -- if (sym >= LZX_##tbl##_MAXSYMBOLS) { \ -- /* decode remaining bits by tree traversal */ \ -- i = 1 << (LZX_BITBUF_WIDTH - LZX_##tbl##_TABLEBITS); \ -- do { \ -- /* one less bit. error if we run out of bits before decode */ \ -- i >>= 1; \ -- if (i == 0) { \ -- cli_dbgmsg("lzx: out of bits in huffman decode\n"); \ -- return lzx->error = CL_EFORMAT; \ -- } \ -- /* double node index and add 0 (left branch) or 1 (right) */ \ -- sym <<= 1; sym |= (bit_buffer & i) ? 1 : 0; \ -- /* hop to next node index / decoded symbol */ \ -- if(sym >= (1 << LZX_##tbl##_TABLEBITS) + (LZX_##tbl##_MAXSYMBOLS * 2)) { \ -- cli_dbgmsg("lzx: index out of table\n"); \ -- return lzx->error = CL_EFORMAT; \ -- } \ -- sym = lzx->tbl##_table[sym]; \ -- /* while we are still in node indicies, not decoded symbols */ \ -- } while (sym >= LZX_##tbl##_MAXSYMBOLS); \ -- } \ -- /* result */ \ -- (var) = sym; \ -- /* look up the code length of that symbol and discard those bits */ \ -- i = lzx->tbl##_len[sym]; \ -- LZX_REMOVE_BITS(i); \ --} while (0) -- --/* LZX_BUILD_TABLE(tbl) builds a huffman lookup table from code lengths */ --#define LZX_BUILD_TABLE(tbl) \ -- if (lzx_make_decode_table(LZX_##tbl##_MAXSYMBOLS, LZX_##tbl##_TABLEBITS, \ -- &lzx->tbl##_len[0], &lzx->tbl##_table[0])) \ -- { \ -- cli_dbgmsg("lzx: failed to build %s table\n", #tbl); \ -- return lzx->error = CL_EFORMAT; \ -- } -- --/* lzx_make_decode_table(nsyms, nbits, length[], table[]) -- * -- * This function was coded by David Tritscher. It builds a fast huffman -- * decoding table from a canonical huffman code lengths table. -- * -- * nsyms = total number of symbols in this huffman tree. -- * nbits = any symbols with a code length of nbits or less can be decoded -- * in one lookup of the table. -- * length = A table to get code lengths from [0 to syms-1] -- * table = The table to fill up with decoded symbols and pointers. -- * -- * Returns 0 for OK or 1 for error -- */ -- --static int lzx_make_decode_table(unsigned int nsyms, unsigned int nbits, -- unsigned char *length, unsigned short *table) --{ -- register unsigned short sym; -- register unsigned int leaf, fill; -- register unsigned char bit_num; -- unsigned int pos = 0; /* the current position in the decode table */ -- unsigned int table_mask = 1 << nbits; -- unsigned int bit_mask = table_mask >> 1; /* don't do 0 length codes */ -- unsigned int next_symbol = bit_mask; /* base of allocation for long codes */ -- -- /* fill entries for codes short enough for a direct mapping */ -- for (bit_num = 1; bit_num <= nbits; bit_num++) { -- for (sym = 0; sym < nsyms; sym++) { -- if (length[sym] != bit_num) continue; -- leaf = pos; -- if((pos += bit_mask) > table_mask) return 1; /* table overrun */ -- /* fill all possible lookups of this symbol with the symbol itself */ -- for (fill = bit_mask; fill-- > 0;) table[leaf++] = sym; -- } -- bit_mask >>= 1; -- } -- -- /* full table already? */ -- if (pos == table_mask) return 0; -- -- /* clear the remainder of the table */ -- for (sym = pos; sym < table_mask; sym++) table[sym] = 0xFFFF; -- -- /* allow codes to be up to nbits+16 long, instead of nbits */ -- pos <<= 16; -- table_mask <<= 16; -- bit_mask = 1 << 15; -- -- for (bit_num = nbits+1; bit_num <= 16; bit_num++) { -- for (sym = 0; sym < nsyms; sym++) { -- if (length[sym] != bit_num) continue; -- -- leaf = pos >> 16; -- for (fill = 0; fill < bit_num - nbits; fill++) { -- /* if this path hasn't been taken yet, 'allocate' two entries */ -- if (table[leaf] == 0xFFFF) { -- table[(next_symbol << 1)] = 0xFFFF; -- table[(next_symbol << 1) + 1] = 0xFFFF; -- table[leaf] = next_symbol++; -- } -- /* follow the path and select either left or right for next bit */ -- leaf = table[leaf] << 1; -- if ((pos >> (15-fill)) & 1) leaf++; -- } -- table[leaf] = sym; -- -- if ((pos += bit_mask) > table_mask) return 1; /* table overflow */ -- } -- bit_mask >>= 1; -- } -- -- /* full table? */ -- if (pos == table_mask) return 0; -- -- /* either erroneous table, or all elements are 0 - let's find out. */ -- for (sym = 0; sym < nsyms; sym++) if (length[sym]) return 1; -- return 0; --} -- --/* LZX_READ_LENGTHS(tablename, first, last) reads in code lengths for symbols -- * first to last in the given table. The code lengths are stored in their -- * own special LZX way. -- */ --#define LZX_READ_LENGTHS(tbl, first, last) do { \ -- LZX_STORE_BITS; \ -- if (lzx_read_lens(lzx, &lzx->tbl##_len[0], (first), \ -- (unsigned int)(last))) return lzx->error; \ -- LZX_RESTORE_BITS; \ --} while (0) -- --static int lzx_read_lens(struct lzx_stream *lzx, unsigned char *lens, -- unsigned int first, unsigned int last) --{ -- /* bit buffer and huffman symbol decode variables */ -- register unsigned int bit_buffer; -- register int bits_left, i; -- register unsigned short sym; -- unsigned char *i_ptr, *i_end; -- -- unsigned int x, y; -- int z; -- -- LZX_RESTORE_BITS; -- -- /* read lengths for pretree (20 symbols, lengths stored in fixed 4 bits) */ -- for (x = 0; x < 20; x++) { -- LZX_READ_BITS(y, 4); -- lzx->PRETREE_len[x] = y; -- } -- LZX_BUILD_TABLE(PRETREE); -- -- for (x = first; x < last; ) { -- LZX_READ_HUFFSYM(PRETREE, z); -- if (z == 17) { -- /* code = 17, run of ([read 4 bits]+4) zeros */ -- LZX_READ_BITS(y, 4); y += 4; -- while (y--) lens[x++] = 0; -- } -- else if (z == 18) { -- /* code = 18, run of ([read 5 bits]+20) zeros */ -- LZX_READ_BITS(y, 5); y += 20; -- while (y--) lens[x++] = 0; -- } -- else if (z == 19) { -- /* code = 19, run of ([read 1 bit]+4) [read huffman symbol] */ -- LZX_READ_BITS(y, 1); y += 4; -- LZX_READ_HUFFSYM(PRETREE, z); -- z = lens[x] - z; if (z < 0) z += 17; -- while (y--) lens[x++] = z; -- } -- else { -- /* code = 0 to 16, delta current length entry */ -- z = lens[x] - z; if (z < 0) z += 17; -- lens[x++] = z; -- } -- } -- -- LZX_STORE_BITS; -- -- return CL_SUCCESS; --} -- --static void lzx_reset_state(struct lzx_stream *lzx) { -- int i; -- -- lzx->R0 = 1; -- lzx->R1 = 1; -- lzx->R2 = 1; -- lzx->header_read = 0; -- lzx->block_remaining = 0; -- lzx->block_type = LZX_BLOCKTYPE_INVALID; -- -- /* initialise tables to 0 (because deltas will be applied to them) */ -- for (i = 0; i < LZX_MAINTREE_MAXSYMBOLS; i++) lzx->MAINTREE_len[i] = 0; -- for (i = 0; i < LZX_LENGTH_MAXSYMBOLS; i++) lzx->LENGTH_len[i] = 0; --} -- --/*-------- main LZX code --------*/ -- --struct lzx_stream *lzx_init(int ofd, -- int window_bits, -- int reset_interval, -- int input_buffer_size, -- off_t output_length, -- struct cab_file *file, -- int (*read_cb)(struct cab_file *, unsigned char *, int)) --{ -- unsigned int window_size = 1 << window_bits; -- struct lzx_stream *lzx; -- int i, j; -- -- /* LZX supports window sizes of 2^15 (32Kb) through 2^21 (2Mb) */ -- if (window_bits < 15 || window_bits > 21) return NULL; -- -- input_buffer_size = (input_buffer_size + 1) & -2; -- if (!input_buffer_size) return NULL; -- -- /* allocate decompression state */ -- if (!(lzx = cli_calloc(1, sizeof(struct lzx_stream)))) { -- return NULL; -- } -- -- for (i = 0, j = 0; i < 51; i += 2) { -- lzx->extra_bits[i] = j; /* 0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7... */ -- if(i < 50) -- lzx->extra_bits[i+1] = j; -- if ((i != 0) && (j < 17)) j++; /* 0,0,1,2,3,4...15,16,17,17,17,17... */ -- } -- -- for (i = 0, j = 0; i < 51; i++) { -- lzx->position_base[i] = j; /* 0,1,2,3,4,6,8,12,16,24,32,... */ -- j += 1 << lzx->extra_bits[i]; /* 1,1,1,1,2,2,4,4,8,8,16,16,32,32,... */ -- } -- -- /* allocate decompression window and input buffer */ -- lzx->window = cli_calloc(1, (size_t) window_size); -- if(!lzx->window) { -- free(lzx); -- return NULL; -- } -- -- lzx->inbuf = cli_calloc(1, (size_t) input_buffer_size); -- if (!lzx->inbuf) { -- free(lzx->window); -- free(lzx); -- return NULL; -- } -- -- /* initialise decompression state */ -- lzx->ofd = ofd; -- lzx->wflag = 1; -- lzx->offset = 0; -- lzx->length = output_length; -- lzx->file = file; -- lzx->read_cb = read_cb; -- -- lzx->inbuf_size = input_buffer_size; -- lzx->window_size = 1 << window_bits; -- lzx->window_posn = 0; -- lzx->frame_posn = 0; -- lzx->frame = 0; -- lzx->reset_interval = reset_interval; -- lzx->intel_filesize = 0; -- lzx->intel_curpos = 0; -- -- /* window bits: 15 16 17 18 19 20 21 -- * position slots: 30 32 34 36 38 42 50 */ -- lzx->posn_slots = ((window_bits == 21) ? 50 : -- ((window_bits == 20) ? 42 : (window_bits << 1))); -- lzx->intel_started = 0; -- lzx->input_end = 0; -- -- lzx->error = CL_SUCCESS; -- -- lzx->i_ptr = lzx->i_end = &lzx->inbuf[0]; -- lzx->o_ptr = lzx->o_end = &lzx->e8_buf[0]; -- lzx->bit_buffer = lzx->bits_left = 0; -- -- lzx_reset_state(lzx); -- return lzx; --} -- --void lzx_set_output_length(struct lzx_stream *lzx, off_t out_bytes) { -- if (lzx) lzx->length = out_bytes; --} -- --int lzx_decompress(struct lzx_stream *lzx, uint32_t out_bytes) { -- /* bitstream reading and huffman variables */ -- register unsigned int bit_buffer; -- register int bits_left, i=0; -- register unsigned short sym; -- unsigned char *i_ptr, *i_end; -- -- int match_length, length_footer, extra, verbatim_bits, bytes_todo; -- int this_run, main_element, aligned_bits, j, ret, warned=0; -- unsigned char *window, *runsrc, *rundest, buf[12]; -- unsigned int frame_size=0, end_frame, match_offset, window_posn; -- unsigned int R0, R1, R2; -- -- /* easy answers */ -- if (!lzx) return CL_ENULLARG; -- if (lzx->error) return lzx->error; -- -- /* flush out any stored-up bytes before we begin */ -- i = lzx->o_end - lzx->o_ptr; -- if (((off_t) i > out_bytes) && ((int) out_bytes >= 0)) i = (int) out_bytes; -- if (i) { -- if (lzx->wflag && (ret = mspack_write(lzx->ofd, lzx->o_ptr, i, lzx->file)) != CL_SUCCESS) { -- return lzx->error = ret; -- } -- lzx->o_ptr += i; -- lzx->offset += i; -- out_bytes -= i; -- } -- if (out_bytes == 0) return CL_SUCCESS; -- -- /* restore local state */ -- LZX_RESTORE_BITS; -- window = lzx->window; -- window_posn = lzx->window_posn; -- R0 = lzx->R0; -- R1 = lzx->R1; -- R2 = lzx->R2; -- -- end_frame = (unsigned int)((lzx->offset + out_bytes) / LZX_FRAME_SIZE) + 1; -- cli_dbgmsg("lzx_decompress: end frame = %u\n", end_frame); -- -- while (lzx->frame < end_frame) { -- cli_dbgmsg("lzx_decompress: current frame = %u\n", lzx->frame); -- /* have we reached the reset interval? (if there is one?) */ -- if (lzx->reset_interval && ((lzx->frame % lzx->reset_interval) == 0)) { -- if (lzx->block_remaining) { -- /* this is a file format error, but we need to extract what we can and scan that */ -- cli_dbgmsg("lzx_decompress: %d bytes remaining at reset interval\n", lzx->block_remaining); -- if (!warned) { -- cli_dbgmsg("Detected an invalid reset interval during decompression.\n"); -- warned++; -- } -- if (!lzx->header_read) { -- /* cannot continue if no header at all */ -- return lzx->error = CL_EFORMAT; -- } -- } else { -- /* re-read the intel header and reset the huffman lengths */ -- lzx_reset_state(lzx); -- } -- } -- -- /* read header if necessary */ -- if (!lzx->header_read) { -- /* read 1 bit. if bit=0, intel filesize = 0. -- * if bit=1, read intel filesize (32 bits) */ -- j = 0; LZX_READ_BITS(i, 1); if (i) { LZX_READ_BITS(i, 16); LZX_READ_BITS(j, 16); } -- lzx->intel_filesize = (i << 16) | j; -- lzx->header_read = 1; -- } -- -- /* calculate size of frame: all frames are 32k except the final frame -- * which is 32kb or less. this can only be calculated when lzx->length -- * has been filled in. */ -- frame_size = LZX_FRAME_SIZE; -- if (lzx->length && (lzx->length - lzx->offset) < (off_t)frame_size) { -- frame_size = lzx->length - lzx->offset; -- } -- -- /* decode until one more frame is available */ -- bytes_todo = lzx->frame_posn + frame_size - window_posn; -- while (bytes_todo > 0) { -- /* initialise new block, if one is needed */ -- if (lzx->block_remaining == 0) { -- /* realign if previous block was an odd-sized UNCOMPRESSED block */ -- if ((lzx->block_type == LZX_BLOCKTYPE_UNCOMPRESSED) && -- (lzx->block_length & 1)) -- { -- if (i_ptr == i_end) { -- if (lzx_read_input(lzx)) return lzx->error; -- i_ptr = lzx->i_ptr; -- i_end = lzx->i_end; -- } -- i_ptr++; -- } -- -- /* read block type (3 bits) and block length (24 bits) */ -- LZX_READ_BITS(lzx->block_type, 3); -- LZX_READ_BITS(i, 16); LZX_READ_BITS(j, 8); -- lzx->block_remaining = lzx->block_length = (i << 8) | j; -- -- /* read individual block headers */ -- switch (lzx->block_type) { -- case LZX_BLOCKTYPE_ALIGNED: -- /* read lengths of and build aligned huffman decoding tree */ -- for (i = 0; i < 8; i++) { LZX_READ_BITS(j, 3); lzx->ALIGNED_len[i] = j; } -- LZX_BUILD_TABLE(ALIGNED); -- /* no break -- rest of aligned header is same as verbatim */ -- case LZX_BLOCKTYPE_VERBATIM: -- /* read lengths of and build main huffman decoding tree */ -- LZX_READ_LENGTHS(MAINTREE, 0, 256); -- LZX_READ_LENGTHS(MAINTREE, 256, LZX_NUM_CHARS + (lzx->posn_slots << 3)); -- LZX_BUILD_TABLE(MAINTREE); -- /* if the literal 0xE8 is anywhere in the block... */ -- if (lzx->MAINTREE_len[0xE8] != 0) lzx->intel_started = 1; -- /* read lengths of and build lengths huffman decoding tree */ -- LZX_READ_LENGTHS(LENGTH, 0, LZX_NUM_SECONDARY_LENGTHS); -- LZX_BUILD_TABLE(LENGTH); -- break; -- -- case LZX_BLOCKTYPE_UNCOMPRESSED: -- /* because we can't assume otherwise */ -- lzx->intel_started = 1; -- -- /* read 1-16 (not 0-15) bits to align to bytes */ -- LZX_ENSURE_BITS(16); -- if (bits_left > 16) i_ptr -= 2; -- bits_left = 0; bit_buffer = 0; -- -- /* read 12 bytes of stored R0 / R1 / R2 values */ -- for (rundest = &buf[0], i = 0; i < 12; i++) { -- if (i_ptr == i_end) { -- if (lzx_read_input(lzx)) return lzx->error; -- i_ptr = lzx->i_ptr; -- i_end = lzx->i_end; -- } -- *rundest++ = *i_ptr++; -- } -- R0 = buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24); -- R1 = buf[4] | (buf[5] << 8) | (buf[6] << 16) | (buf[7] << 24); -- R2 = buf[8] | (buf[9] << 8) | (buf[10] << 16) | (buf[11] << 24); -- break; -- -- default: -- cli_dbgmsg("lzx_decompress: bad block type (0x%x)\n", lzx->block_type); -- return lzx->error = CL_EFORMAT; -- } -- } -- -- /* decode more of the block: -- * run = min(what's available, what's needed) */ -- this_run = lzx->block_remaining; -- if (this_run > bytes_todo) this_run = bytes_todo; -- -- /* assume we decode exactly this_run bytes, for now */ -- bytes_todo -= this_run; -- lzx->block_remaining -= this_run; -- -- /* decode at least this_run bytes */ -- switch (lzx->block_type) { -- case LZX_BLOCKTYPE_VERBATIM: -- while (this_run > 0) { -- LZX_READ_HUFFSYM(MAINTREE, main_element); -- if (main_element < LZX_NUM_CHARS) { -- /* literal: 0 to LZX_NUM_CHARS-1 */ -- window[window_posn++] = main_element; -- this_run--; -- } -- else { -- /* match: LZX_NUM_CHARS + ((slot<<3) | length_header (3 bits)) */ -- main_element -= LZX_NUM_CHARS; -- -- /* get match length */ -- match_length = main_element & LZX_NUM_PRIMARY_LENGTHS; -- if (match_length == LZX_NUM_PRIMARY_LENGTHS) { -- LZX_READ_HUFFSYM(LENGTH, length_footer); -- match_length += length_footer; -- } -- match_length += LZX_MIN_MATCH; -- -- /* get match offset */ -- switch ((match_offset = (main_element >> 3))) { -- case 0: match_offset = R0; break; -- case 1: match_offset = R1; R1=R0; R0 = match_offset; break; -- case 2: match_offset = R2; R2=R0; R0 = match_offset; break; -- case 3: match_offset = 1; R2=R1; R1=R0; R0 = match_offset; break; -- default: -- extra = lzx->extra_bits[match_offset]; -- LZX_READ_BITS(verbatim_bits, extra); -- match_offset = lzx->position_base[match_offset] - 2 + verbatim_bits; -- R2 = R1; R1 = R0; R0 = match_offset; -- } -- -- if ((window_posn + match_length) > lzx->window_size) { -- cli_dbgmsg("lzx_decompress: match ran over window wrap\n"); -- return lzx->error = CL_EFORMAT; -- } -- -- /* copy match */ -- rundest = &window[window_posn]; -- i = match_length; -- /* does match offset wrap the window? */ -- if (match_offset > window_posn) { -- /* j = length from match offset to end of window */ -- j = match_offset - window_posn; -- if (j > (int) lzx->window_size) { -- cli_dbgmsg("lzx_decompress: match offset beyond window boundaries\n"); -- return lzx->error = CL_EFORMAT; -- } -- runsrc = &window[lzx->window_size - j]; -- if (j < i) { -- /* if match goes over the window edge, do two copy runs */ -- i -= j; while (j-- > 0) *rundest++ = *runsrc++; -- runsrc = window; -- } -- while (i-- > 0) *rundest++ = *runsrc++; -- } -- else { -- runsrc = rundest - match_offset; -- if(i > (int) (lzx->window_size - window_posn)) -- i = lzx->window_size - window_posn; -- while (i-- > 0) *rundest++ = *runsrc++; -- } -- -- this_run -= match_length; -- window_posn += match_length; -- } -- } /* while (this_run > 0) */ -- break; -- -- case LZX_BLOCKTYPE_ALIGNED: -- while (this_run > 0) { -- LZX_READ_HUFFSYM(MAINTREE, main_element); -- if (main_element < LZX_NUM_CHARS) { -- /* literal: 0 to LZX_NUM_CHARS-1 */ -- window[window_posn++] = main_element; -- this_run--; -- } -- else { -- /* match: LZX_NUM_CHARS + ((slot<<3) | length_header (3 bits)) */ -- main_element -= LZX_NUM_CHARS; -- -- /* get match length */ -- match_length = main_element & LZX_NUM_PRIMARY_LENGTHS; -- if (match_length == LZX_NUM_PRIMARY_LENGTHS) { -- LZX_READ_HUFFSYM(LENGTH, length_footer); -- match_length += length_footer; -- } -- match_length += LZX_MIN_MATCH; -- -- /* get match offset */ -- switch ((match_offset = (main_element >> 3))) { -- case 0: match_offset = R0; break; -- case 1: match_offset = R1; R1 = R0; R0 = match_offset; break; -- case 2: match_offset = R2; R2 = R0; R0 = match_offset; break; -- default: -- extra = lzx->extra_bits[match_offset]; -- match_offset = lzx->position_base[match_offset] - 2; -- if (extra > 3) { -- /* verbatim and aligned bits */ -- extra -= 3; -- LZX_READ_BITS(verbatim_bits, extra); -- match_offset += (verbatim_bits << 3); -- LZX_READ_HUFFSYM(ALIGNED, aligned_bits); -- match_offset += aligned_bits; -- } -- else if (extra == 3) { -- /* aligned bits only */ -- LZX_READ_HUFFSYM(ALIGNED, aligned_bits); -- match_offset += aligned_bits; -- } -- else if (extra > 0) { /* extra==1, extra==2 */ -- /* verbatim bits only */ -- LZX_READ_BITS(verbatim_bits, extra); -- match_offset += verbatim_bits; -- } -- else /* extra == 0 */ { -- /* ??? not defined in LZX specification! */ -- match_offset = 1; -- } -- /* update repeated offset LRU queue */ -- R2 = R1; R1 = R0; R0 = match_offset; -- } -- -- if ((window_posn + match_length) > lzx->window_size) { -- cli_dbgmsg("lzx_decompress: match ran over window wrap\n"); -- return lzx->error = CL_EFORMAT; -- } -- -- /* copy match */ -- rundest = &window[window_posn]; -- i = match_length; -- /* does match offset wrap the window? */ -- if (match_offset > window_posn) { -- /* j = length from match offset to end of window */ -- j = match_offset - window_posn; -- if (j > (int) lzx->window_size) { -- cli_dbgmsg("lzx_decompress: match offset beyond window boundaries\n"); -- return lzx->error = CL_EFORMAT; -- } -- runsrc = &window[lzx->window_size - j]; -- if (j < i) { -- /* if match goes over the window edge, do two copy runs */ -- i -= j; while (j-- > 0) *rundest++ = *runsrc++; -- runsrc = window; -- } -- while (i-- > 0) *rundest++ = *runsrc++; -- } -- else { -- runsrc = rundest - match_offset; -- while (i-- > 0) *rundest++ = *runsrc++; -- } -- -- this_run -= match_length; -- window_posn += match_length; -- } -- } /* while (this_run > 0) */ -- break; -- -- case LZX_BLOCKTYPE_UNCOMPRESSED: -- /* as this_run is limited not to wrap a frame, this also means it -- * won't wrap the window (as the window is a multiple of 32k) */ -- rundest = &window[window_posn]; -- window_posn += this_run; -- while (this_run > 0) { -- if ((i = i_end - i_ptr)) { -- if (i > this_run) i = this_run; -- memcpy(rundest, i_ptr, (size_t) i); -- rundest += i; -- i_ptr += i; -- this_run -= i; -- } -- else { -- if (lzx_read_input(lzx)) return lzx->error; -- i_ptr = lzx->i_ptr; -- i_end = lzx->i_end; -- } -- } -- break; -- -- default: -- return lzx->error = CL_EFORMAT; /* might as well */ -- } -- -- /* did the final match overrun our desired this_run length? */ -- if (this_run < 0) { -- if ((unsigned int)(-this_run) > lzx->block_remaining) { -- cli_dbgmsg("lzx_decompress: overrun went past end of block by %d (%d remaining)\n", -this_run, lzx->block_remaining); -- return lzx->error = CL_EFORMAT; -- } -- lzx->block_remaining -= -this_run; -- } -- } /* while (bytes_todo > 0) */ -- -- /* streams don't extend over frame boundaries */ -- if ((window_posn - lzx->frame_posn) != frame_size) { -- cli_dbgmsg("lzx_decompress: decode beyond output frame limits! %d != %d\n", window_posn - lzx->frame_posn, frame_size); -- return lzx->error = CL_EFORMAT; -- } -- -- /* re-align input bitstream */ -- if (bits_left > 0) LZX_ENSURE_BITS(16); -- if (bits_left & 15) LZX_REMOVE_BITS(bits_left & 15); -- -- /* check that we've used all of the previous frame first */ -- if (lzx->o_ptr != lzx->o_end) { -- cli_dbgmsg("lzx_decompress: %ld avail bytes, new %d frame\n", lzx->o_end-lzx->o_ptr, frame_size); -- return lzx->error = CL_EFORMAT; -- } -- -- /* does this intel block _really_ need decoding? */ -- if (lzx->intel_started && lzx->intel_filesize && -- (lzx->frame <= 32768) && (frame_size > 10)) -- { -- unsigned char *data = &lzx->e8_buf[0]; -- unsigned char *dataend = &lzx->e8_buf[frame_size - 10]; -- signed int curpos = lzx->intel_curpos; -- signed int filesize = lzx->intel_filesize; -- signed int abs_off, rel_off; -- -- /* copy e8 block to the e8 buffer and tweak if needed */ -- lzx->o_ptr = data; -- memcpy(data, &lzx->window[lzx->frame_posn], frame_size); -- -- while (data < dataend) { -- if (*data++ != 0xE8) { curpos++; continue; } -- abs_off = data[0] | (data[1]<<8) | (data[2]<<16) | (data[3]<<24); -- if ((abs_off >= -curpos) && (abs_off < filesize)) { -- rel_off = (abs_off >= 0) ? abs_off - curpos : abs_off + filesize; -- data[0] = (unsigned char) rel_off; -- data[1] = (unsigned char) (rel_off >> 8); -- data[2] = (unsigned char) (rel_off >> 16); -- data[3] = (unsigned char) (rel_off >> 24); -- } -- data += 4; -- curpos += 5; -- } -- lzx->intel_curpos += frame_size; -- } -- else { -- lzx->o_ptr = &lzx->window[lzx->frame_posn]; -- if (lzx->intel_filesize) lzx->intel_curpos += frame_size; -- } -- lzx->o_end = &lzx->o_ptr[frame_size]; -- -- /* write a frame */ -- i = (out_bytes < (off_t)frame_size) ? (unsigned int)out_bytes : frame_size; -- if (lzx->wflag && (ret = mspack_write(lzx->ofd, lzx->o_ptr, i, lzx->file)) != CL_SUCCESS) { -- return lzx->error = ret; -- } -- lzx->o_ptr += i; -- lzx->offset += i; -- out_bytes -= i; -- -- /* advance frame start position */ -- lzx->frame_posn += frame_size; -- lzx->frame++; -- -- /* wrap window / frame position pointers */ -- if (window_posn == lzx->window_size) window_posn = 0; -- if (lzx->frame_posn == lzx->window_size) lzx->frame_posn = 0; -- -- } /* while (lzx->frame < end_frame) */ -- -- if (out_bytes) -- cli_dbgmsg("lzx_decompress: bytes left to output\n"); -- -- /* store local state */ -- LZX_STORE_BITS; -- lzx->window_posn = window_posn; -- lzx->R0 = R0; -- lzx->R1 = R1; -- lzx->R2 = R2; -- -- return CL_SUCCESS; --} -- --void lzx_free(struct lzx_stream *lzx) { -- if (lzx) { -- free(lzx->inbuf); -- free(lzx->window); -- free(lzx); -- } --} -- --/*************************************************************************** -- * Quantum decompression implementation -- *************************************************************************** -- * The Quantum method was created by David Stafford, adapted by Microsoft -- * Corporation. -- * -- * This decompressor is based on an implementation by Matthew Russotto, used -- * with permission. -- * -- * This decompressor was researched and implemented by Matthew Russotto. It -- * has since been tidied up by Stuart Caie. More information can be found at -- * http://www.speakeasy.org/~russotto/quantumcomp.html -- */ -- --/* Quantum decompressor bitstream reading macros -- * -- * QTM_STORE_BITS stores bitstream state in qtm_stream structure -- * QTM_RESTORE_BITS restores bitstream state from qtm_stream structure -- * QTM_READ_BITS(var,n) takes N bits from the buffer and puts them in var -- * QTM_FILL_BUFFER if there is room for another 16 bits, reads another -- * 16 bits from the input stream. -- * QTM_PEEK_BITS(n) extracts without removing N bits from the bit buffer -- * QTM_REMOVE_BITS(n) removes N bits from the bit buffer -- * -- * These bit access routines work by using the area beyond the MSB and the -- * LSB as a free source of zeroes. This avoids having to mask any bits. -- * So we have to know the bit width of the bitbuffer variable. -- */ -- --#define QTM_BITBUF_WIDTH (sizeof(unsigned int) * CHAR_BIT) -- --#define QTM_STORE_BITS do { \ -- qtm->i_ptr = i_ptr; \ -- qtm->i_end = i_end; \ -- qtm->bit_buffer = bit_buffer; \ -- qtm->bits_left = bits_left; \ --} while (0) -- --#define QTM_RESTORE_BITS do { \ -- i_ptr = qtm->i_ptr; \ -- i_end = qtm->i_end; \ -- bit_buffer = qtm->bit_buffer; \ -- bits_left = qtm->bits_left; \ --} while (0) -- --/* adds 16 bits to bit buffer, if there's space for the new bits */ --#define QTM_FILL_BUFFER do { \ -- if (bits_left <= (QTM_BITBUF_WIDTH - 16)) { \ -- if (i_ptr >= i_end) { \ -- if (qtm_read_input(qtm)) return qtm->error; \ -- i_ptr = qtm->i_ptr; \ -- i_end = qtm->i_end; \ -- } \ -- bit_buffer |= ((i_ptr[0] << 8) | i_ptr[1]) \ -- << (QTM_BITBUF_WIDTH - 16 - bits_left); \ -- bits_left += 16; \ -- i_ptr += 2; \ -- } \ --} while (0) -- --#define QTM_PEEK_BITS(n) (bit_buffer >> (QTM_BITBUF_WIDTH - (n))) --#define QTM_REMOVE_BITS(n) ((bit_buffer <<= (n)), (bits_left -= (n))) -- --#define QTM_READ_BITS(val, bits) do { \ -- (val) = 0; \ -- for (bits_needed = (bits); bits_needed > 0; bits_needed -= bit_run) { \ -- QTM_FILL_BUFFER; \ -- bit_run = (bits_left < bits_needed) ? bits_left : bits_needed; \ -- (val) = ((val) << bit_run) | QTM_PEEK_BITS(bit_run); \ -- QTM_REMOVE_BITS(bit_run); \ -- } \ --} while (0) -- --static int qtm_read_input(struct qtm_stream *qtm) { -- int nread = qtm->read_cb(qtm->file, &qtm->inbuf[0], (int)qtm->inbuf_size); -- if (nread < 0) { -- if (qtm->file->error == CL_BREAK) -- return qtm->error = CL_BREAK; -- else -- return qtm->error = CL_EFORMAT; -- } -- -- if (nread == 0) { -- if (qtm->input_end) { -- cli_dbgmsg("qtm_read_input: out of input bytes\n"); -- return qtm->error = CL_EREAD; -- } -- else { -- nread = 2; -- qtm->inbuf[0] = qtm->inbuf[1] = 0; -- qtm->input_end = 1; -- } -- } -- -- qtm->i_ptr = &qtm->inbuf[0]; -- qtm->i_end = &qtm->inbuf[nread]; -- return CL_SUCCESS; --} -- --/* Arithmetic decoder: -- * -- * QTM_GET_SYMBOL(model, var) fetches the next symbol from the stated model -- * and puts it in var. -- * -- * If necessary, qtm_update_model() is called. -- */ --#define QTM_GET_SYMBOL(model, var) do { \ -- range = ((H - L) & 0xFFFF) + 1; \ -- symf = ((((C - L + 1) * model.syms[0].cumfreq)-1) / range) & 0xFFFF; \ -- \ -- for (i = 1; i < model.entries; i++) { \ -- if (model.syms[i].cumfreq <= symf) break; \ -- } \ -- (var) = model.syms[i-1].sym; \ -- \ -- range = (H - L) + 1; \ -- symf = model.syms[0].cumfreq; \ -- H = L + ((model.syms[i-1].cumfreq * range) / symf) - 1; \ -- L = L + ((model.syms[i].cumfreq * range) / symf); \ -- \ -- do { model.syms[--i].cumfreq += 8; } while (i > 0); \ -- if (model.syms[0].cumfreq > 3800) qtm_update_model(&model); \ -- \ -- while (1) { \ -- if ((L & 0x8000) != (H & 0x8000)) { \ -- if ((L & 0x4000) && !(H & 0x4000)) { \ -- /* underflow case */ \ -- C ^= 0x4000; L &= 0x3FFF; H |= 0x4000; \ -- } \ -- else break; \ -- } \ -- L <<= 1; H = (H << 1) | 1; \ -- QTM_FILL_BUFFER; \ -- C = (C << 1) | QTM_PEEK_BITS(1); \ -- QTM_REMOVE_BITS(1); \ -- } \ --} while (0) -- --static void qtm_update_model(struct qtm_model *model) { -- struct qtm_modelsym tmp; -- int i, j; -- -- if (--model->shiftsleft) { -- for (i = model->entries - 1; i >= 0; i--) { -- /* -1, not -2; the 0 entry saves this */ -- model->syms[i].cumfreq >>= 1; -- if (model->syms[i].cumfreq <= model->syms[i+1].cumfreq) { -- model->syms[i].cumfreq = model->syms[i+1].cumfreq + 1; -- } -- } -- } -- else { -- model->shiftsleft = 50; -- for (i = 0; i < model->entries; i++) { -- /* no -1, want to include the 0 entry */ -- /* this converts cumfreqs into frequencies, then shifts right */ -- model->syms[i].cumfreq -= model->syms[i+1].cumfreq; -- model->syms[i].cumfreq++; /* avoid losing things entirely */ -- model->syms[i].cumfreq >>= 1; -- } -- -- /* now sort by frequencies, decreasing order -- this must be an -- * inplace selection sort, or a sort with the same (in)stability -- * characteristics */ -- for (i = 0; i < model->entries - 1; i++) { -- for (j = i + 1; j < model->entries; j++) { -- if (model->syms[i].cumfreq < model->syms[j].cumfreq) { -- tmp = model->syms[i]; -- model->syms[i] = model->syms[j]; -- model->syms[j] = tmp; -- } -- } -- } -- -- /* then convert frequencies back to cumfreq */ -- for (i = model->entries - 1; i >= 0; i--) { -- model->syms[i].cumfreq += model->syms[i+1].cumfreq; -- } -- } --} -- --/* Initialises a model to decode symbols from [start] to [start]+[len]-1 */ --static void qtm_init_model(struct qtm_model *model, -- struct qtm_modelsym *syms, int start, int len) --{ -- int i; -- -- model->shiftsleft = 4; -- model->entries = len; -- model->syms = syms; -- -- for (i = 0; i <= len; i++) { -- syms[i].sym = start + i; /* actual symbol */ -- syms[i].cumfreq = len - i; /* current frequency of that symbol */ -- } --} -- -- --/*-------- main Quantum code --------*/ -- --struct qtm_stream *qtm_init(int ofd, -- int window_bits, int input_buffer_size, -- struct cab_file *file, -- int (*read_cb)(struct cab_file *, unsigned char *, int)) --{ -- unsigned int window_size = 1 << window_bits; -- struct qtm_stream *qtm; -- unsigned offset; -- int i; -- -- /* Quantum supports window sizes of 2^10 (1Kb) through 2^21 (2Mb) */ -- -- /* tk: temporary fix: only process 32KB+ window sizes */ -- if (window_bits < 15 || window_bits > 21) return NULL; -- -- input_buffer_size = (input_buffer_size + 1) & -2; -- if (input_buffer_size < 2) return NULL; -- -- /* allocate decompression state */ -- if (!(qtm = cli_calloc(1, sizeof(struct qtm_stream)))) { -- return NULL; -- } -- -- for (i = 0, offset = 0; i < 42; i++) { -- qtm->position_base[i] = offset; -- qtm->extra_bits[i] = ((i < 2) ? 0 : (i - 2)) >> 1; -- offset += 1 << qtm->extra_bits[i]; -- } -- -- for (i = 0, offset = 0; i < 26; i++) { -- qtm->length_base[i] = offset; -- qtm->length_extra[i] = (i < 2 ? 0 : i - 2) >> 2; -- offset += 1 << qtm->length_extra[i]; -- } -- qtm->length_base[26] = 254; qtm->length_extra[26] = 0; -- -- /* allocate decompression window and input buffer */ -- qtm->window = cli_malloc((size_t) window_size); -- if (!qtm->window) { -- cli_errmsg("qtm_init: Unable to allocate decompression window\n"); -- free(qtm); -- return NULL; -- } -- -- qtm->inbuf = cli_malloc((size_t) input_buffer_size); -- if (!qtm->inbuf) { -- cli_errmsg("qtm_init: Unable to allocate input buffer\n"); -- free(qtm->window); -- free(qtm); -- return NULL; -- } -- -- /* initialise decompression state */ -- qtm->ofd = ofd; -- qtm->wflag = 1; -- qtm->inbuf_size = input_buffer_size; -- qtm->window_size = window_size; -- qtm->window_posn = 0; -- qtm->frame_start = 0; -- qtm->header_read = 0; -- qtm->error = CL_SUCCESS; -- -- qtm->i_ptr = qtm->i_end = &qtm->inbuf[0]; -- qtm->o_ptr = qtm->o_end = &qtm->window[0]; -- qtm->bits_left = 0; -- qtm->bit_buffer = 0; -- -- /* initialise arithmetic coding models -- * - model 4 depends on window size, ranges from 20 to 24 -- * - model 5 depends on window size, ranges from 20 to 36 -- * - model 6pos depends on window size, ranges from 20 to 42 -- */ -- i = window_bits * 2; -- qtm_init_model(&qtm->model0, &qtm->m0sym[0], 0, 64); -- qtm_init_model(&qtm->model1, &qtm->m1sym[0], 64, 64); -- qtm_init_model(&qtm->model2, &qtm->m2sym[0], 128, 64); -- qtm_init_model(&qtm->model3, &qtm->m3sym[0], 192, 64); -- qtm_init_model(&qtm->model4, &qtm->m4sym[0], 0, (i > 24) ? 24 : i); -- qtm_init_model(&qtm->model5, &qtm->m5sym[0], 0, (i > 36) ? 36 : i); -- qtm_init_model(&qtm->model6, &qtm->m6sym[0], 0, i); -- qtm_init_model(&qtm->model6len, &qtm->m6lsym[0], 0, 27); -- qtm_init_model(&qtm->model7, &qtm->m7sym[0], 0, 7); -- -- qtm->file = file; -- qtm->read_cb = read_cb; -- -- /* all ok */ -- return qtm; --} -- --int qtm_decompress(struct qtm_stream *qtm, uint32_t out_bytes) { -- unsigned int frame_start, frame_end, window_posn, match_offset, range; -- unsigned char *window, *i_ptr, *i_end, *runsrc, *rundest; -- int i, j, selector, extra, sym, match_length, ret; -- unsigned short H, L, C, symf; -- -- register unsigned int bit_buffer; -- register unsigned char bits_left; -- unsigned char bits_needed, bit_run; -- -- /* easy answers */ -- if (!qtm) return CL_ENULLARG; -- if (qtm->error) return qtm->error; -- -- /* flush out any stored-up bytes before we begin */ -- i = qtm->o_end - qtm->o_ptr; -- if (((off_t) i > out_bytes) && ((int) out_bytes >= 0)) i = (int) out_bytes; -- if (i) { -- if (qtm->wflag && (ret = mspack_write(qtm->ofd, qtm->o_ptr, i, qtm->file)) != CL_SUCCESS) { -- return qtm->error = ret; -- } -- qtm->o_ptr += i; -- out_bytes -= i; -- } -- if (out_bytes == 0) return CL_SUCCESS; -- -- /* restore local state */ -- QTM_RESTORE_BITS; -- window = qtm->window; -- window_posn = qtm->window_posn; -- frame_start = qtm->frame_start; -- H = qtm->H; -- L = qtm->L; -- C = qtm->C; -- -- /* while we do not have enough decoded bytes in reserve: */ -- while ((qtm->o_end - qtm->o_ptr) < out_bytes) { -- -- /* read header if necessary. Initialises H, L and C */ -- if (!qtm->header_read) { -- H = 0xFFFF; L = 0; QTM_READ_BITS(C, 16); -- qtm->header_read = 1; -- } -- -- /* decode more, at most up to to frame boundary */ -- frame_end = window_posn + (out_bytes - (qtm->o_end - qtm->o_ptr)); -- if ((frame_start + QTM_FRAME_SIZE) < frame_end) { -- frame_end = frame_start + QTM_FRAME_SIZE; -- } -- if (frame_end < window_posn) { -- cli_dbgmsg("qtm_decompress: window position beyond end of frame\n"); -- return qtm->error = CL_EFORMAT; -- } -- -- while (window_posn < frame_end) { -- QTM_GET_SYMBOL(qtm->model7, selector); -- if (selector < 4) { -- struct qtm_model *mdl = (selector == 0) ? &qtm->model0 : -- ((selector == 1) ? &qtm->model1 : -- ((selector == 2) ? &qtm->model2 : -- &qtm->model3)); -- QTM_GET_SYMBOL((*mdl), sym); -- window[window_posn++] = sym; -- } -- else { -- switch (selector) { -- case 4: /* selector 4 = fixed length match (3 bytes) */ -- QTM_GET_SYMBOL(qtm->model4, sym); -- QTM_READ_BITS(extra, qtm->extra_bits[sym]); -- match_offset = qtm->position_base[sym] + extra + 1; -- match_length = 3; -- break; -- -- case 5: /* selector 5 = fixed length match (4 bytes) */ -- QTM_GET_SYMBOL(qtm->model5, sym); -- QTM_READ_BITS(extra, qtm->extra_bits[sym]); -- match_offset = qtm->position_base[sym] + extra + 1; -- match_length = 4; -- break; -- -- case 6: /* selector 6 = variable length match */ -- QTM_GET_SYMBOL(qtm->model6len, sym); -- QTM_READ_BITS(extra, qtm->length_extra[sym]); -- match_length = qtm->length_base[sym] + extra + 5; -- -- QTM_GET_SYMBOL(qtm->model6, sym); -- QTM_READ_BITS(extra, qtm->extra_bits[sym]); -- match_offset = qtm->position_base[sym] + extra + 1; -- break; -- -- default: -- /* should be impossible, model7 can only return 0-6 */ -- return qtm->error = CL_EFORMAT; -- } -- -- if (window_posn + match_length > qtm->window_size) { -- cli_dbgmsg("qtm_decompress: match ran over window wrap\n"); -- return qtm->error = CL_EFORMAT; -- } -- -- rundest = &window[window_posn]; -- i = match_length; -- /* does match offset wrap the window? */ -- if (match_offset > window_posn) { -- /* j = length from match offset to end of window */ -- j = match_offset - window_posn; -- if (j > (int) qtm->window_size) { -- cli_dbgmsg("qtm_decompress: match offset beyond window boundaries\n"); -- return qtm->error = CL_EFORMAT; -- } -- runsrc = &window[qtm->window_size - j]; -- if (j < i) { -- /* if match goes over the window edge, do two copy runs */ -- i -= j; while (j-- > 0) *rundest++ = *runsrc++; -- runsrc = window; -- } -- while (i-- > 0) *rundest++ = *runsrc++; -- } -- else { -- runsrc = rundest - match_offset; -- if(i > (int) (qtm->window_size - window_posn)) -- i = qtm->window_size - window_posn; -- while (i-- > 0) *rundest++ = *runsrc++; -- } -- window_posn += match_length; -- } -- } /* while (window_posn < frame_end) */ -- -- qtm->o_end = &window[window_posn]; -- -- /* another frame completed? */ -- if ((window_posn - frame_start) >= QTM_FRAME_SIZE) { -- if ((window_posn - frame_start) != QTM_FRAME_SIZE) { -- cli_dbgmsg("qtm_decompress: overshot frame alignment\n"); -- return qtm->error = CL_EFORMAT; -- } -- -- /* re-align input */ -- if (bits_left & 7) QTM_REMOVE_BITS(bits_left & 7); -- do { QTM_READ_BITS(i, 8); } while (i != 0xFF); -- qtm->header_read = 0; -- -- /* window wrap? */ -- if (window_posn == qtm->window_size) { -- /* flush all currently stored data */ -- i = (qtm->o_end - qtm->o_ptr); -- if(i <= 0) -- break; -- if (qtm->wflag && (ret = mspack_write(qtm->ofd, qtm->o_ptr, i, qtm->file)) != CL_SUCCESS) { -- return qtm->error = ret; -- } -- out_bytes -= i; -- qtm->o_ptr = &window[0]; -- qtm->o_end = &window[0]; -- window_posn = 0; -- } -- -- frame_start = window_posn; -- } -- -- } /* while (more bytes needed) */ -- -- if (out_bytes > 0) { -- i = (int) out_bytes; -- if (qtm->wflag && (ret = mspack_write(qtm->ofd, qtm->o_ptr, i, qtm->file)) != CL_SUCCESS) { -- return qtm->error = ret; -- } -- qtm->o_ptr += i; -- } -- -- /* store local state */ -- QTM_STORE_BITS; -- qtm->window_posn = window_posn; -- qtm->frame_start = frame_start; -- qtm->H = H; -- qtm->L = L; -- qtm->C = C; -- -- return CL_SUCCESS; --} -- --void qtm_free(struct qtm_stream *qtm) { -- if (qtm) { -- free(qtm->window); -- free(qtm->inbuf); -- free(qtm); -- } --} -diff --git a/libclamav/mspack.h b/libclamav/mspack.h -deleted file mode 100644 -index 0ed472caeea3..000000000000 ---- a/libclamav/mspack.h -+++ /dev/null -@@ -1,294 +0,0 @@ --/* -- * This file includes code from libmspack adapted for libclamav by -- * tkojm@clamav.net -- * -- * Copyright (C) 2003-2004 Stuart Caie -- * -- * This library is free software; you can redistribute it and/or -- * modify it under the terms of the GNU Lesser General Public -- * License version 2.1 as published by the Free Software Foundation. -- * -- * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 -- * USA -- */ -- --#ifndef __MSPACK_H --#define __MSPACK_H -- --#include --#include "cab.h" -- -- --/*************************************************************************** -- * MS-ZIP decompression definitions * -- ***************************************************************************/ -- --#define MSZIP_FRAME_SIZE (32768) /* size of LZ history window */ --#define MSZIP_MAX_HUFFBITS (16) /* maximum huffman code length */ --#define MSZIP_LITERAL_MAXSYMBOLS (288) /* literal/length huffman tree */ --#define MSZIP_LITERAL_TABLEBITS (9) --#define MSZIP_DISTANCE_MAXSYMBOLS (32) /* distance huffman tree */ --#define MSZIP_DISTANCE_TABLEBITS (6) -- --/* if there are less direct lookup entries than symbols, the longer -- * code pointers will be <= maxsymbols. This must not happen, or we -- * will decode entries badly */ --#if (1 << MSZIP_LITERAL_TABLEBITS) < (MSZIP_LITERAL_MAXSYMBOLS * 2) --# define MSZIP_LITERAL_TABLESIZE (MSZIP_LITERAL_MAXSYMBOLS * 4) --#else --# define MSZIP_LITERAL_TABLESIZE ((1 << MSZIP_LITERAL_TABLEBITS) + \ -- (MSZIP_LITERAL_MAXSYMBOLS * 2)) --#endif -- --#if (1 << MSZIP_DISTANCE_TABLEBITS) < (MSZIP_DISTANCE_MAXSYMBOLS * 2) --# define MSZIP_DISTANCE_TABLESIZE (MSZIP_DISTANCE_MAXSYMBOLS * 4) --#else --# define MSZIP_DISTANCE_TABLESIZE ((1 << MSZIP_DISTANCE_TABLEBITS) + \ -- (MSZIP_DISTANCE_MAXSYMBOLS * 2)) --#endif -- --struct mszip_stream { -- int ofd; /* output file descriptor */ -- -- /* inflate() will call this whenever the window should be emptied. */ -- int (*flush_window)(struct mszip_stream *, unsigned int); -- -- int error, repair_mode, bytes_output, input_end; -- -- /* I/O buffering */ -- unsigned char *inbuf, *i_ptr, *i_end, *o_ptr, *o_end; -- unsigned int bit_buffer, bits_left, inbuf_size; -- -- unsigned int window_posn; /* offset within window */ -- -- /* huffman code lengths */ -- unsigned char LITERAL_len[MSZIP_LITERAL_MAXSYMBOLS]; -- unsigned char DISTANCE_len[MSZIP_DISTANCE_MAXSYMBOLS]; -- -- /* huffman decoding tables */ -- unsigned short LITERAL_table [MSZIP_LITERAL_TABLESIZE]; -- unsigned short DISTANCE_table[MSZIP_DISTANCE_TABLESIZE]; -- -- /* 32kb history window */ -- unsigned char window[MSZIP_FRAME_SIZE]; -- -- /* cabinet related stuff */ -- struct cab_file *file; -- int (*read_cb)(struct cab_file *, unsigned char *, int); -- -- unsigned char wflag; /* write flag */ -- unsigned int last; /* prior end of content buffer */ -- --}; -- --struct mszip_stream *mszip_init(int ofd, -- int input_buffer_size, -- int repair_mode, -- struct cab_file *file, -- int (*read_cb)(struct cab_file *, unsigned char *, int)); -- --extern int mszip_decompress(struct mszip_stream *zip, uint32_t out_bytes); -- --void mszip_free(struct mszip_stream *zip); -- -- --/*************************************************************************** -- * Quantum decompression definitions * -- ***************************************************************************/ -- --/* Quantum compression / decompression definitions */ -- --#define QTM_FRAME_SIZE (32768) -- --struct qtm_modelsym { -- unsigned short sym, cumfreq; --}; -- --struct qtm_model { -- int shiftsleft, entries; -- struct qtm_modelsym *syms; --}; -- --struct qtm_stream { -- int ofd; /* output file descriptor */ -- -- unsigned char *window; /* decoding window */ -- unsigned int window_size; /* window size */ -- unsigned int window_posn; /* decompression offset within window */ -- unsigned int frame_start; /* start of current frame within window */ -- -- unsigned short H, L, C; /* high/low/current: arith coding state */ -- unsigned char header_read; /* have we started decoding a new frame? */ -- unsigned char wflag; /* write flag */ -- -- int error, input_end; -- -- /* data tables */ -- unsigned int position_base[42]; -- unsigned char extra_bits[42], length_base[27], length_extra[27]; -- -- /* four literal models, each representing 64 symbols -- * model0 for literals from 0 to 63 (selector = 0) -- * model1 for literals from 64 to 127 (selector = 1) -- * model2 for literals from 128 to 191 (selector = 2) -- * model3 for literals from 129 to 255 (selector = 3) */ -- struct qtm_model model0, model1, model2, model3; -- -- /* three match models. -- * model4 for match with fixed length of 3 bytes -- * model5 for match with fixed length of 4 bytes -- * model6 for variable length match, encoded with model6len model */ -- struct qtm_model model4, model5, model6, model6len; -- -- /* selector model. 0-6 to say literal (0,1,2,3) or match (4,5,6) */ -- struct qtm_model model7; -- -- /* symbol arrays for all models */ -- struct qtm_modelsym m0sym[64 + 1]; -- struct qtm_modelsym m1sym[64 + 1]; -- struct qtm_modelsym m2sym[64 + 1]; -- struct qtm_modelsym m3sym[64 + 1]; -- struct qtm_modelsym m4sym[24 + 1]; -- struct qtm_modelsym m5sym[36 + 1]; -- struct qtm_modelsym m6sym[42 + 1], m6lsym[27 + 1]; -- struct qtm_modelsym m7sym[7 + 1]; -- -- /* I/O buffers - 1*/ -- unsigned int bit_buffer; -- -- /* cabinet related stuff */ -- struct cab_file *file; -- int (*read_cb)(struct cab_file *, unsigned char *, int); -- -- /* I/O buffers - 2*/ -- unsigned char *inbuf, *i_ptr, *i_end, *o_ptr, *o_end; -- unsigned int inbuf_size; -- unsigned char bits_left; -- --}; -- --extern struct qtm_stream *qtm_init(int ofd, -- int window_bits, -- int input_buffer_size, -- struct cab_file *file, -- int (*read_cb)(struct cab_file *, unsigned char *, int)); -- --extern int qtm_decompress(struct qtm_stream *qtm, uint32_t out_bytes); -- --void qtm_free(struct qtm_stream *qtm); -- --/*************************************************************************** -- * LZX decompression definitions * -- ***************************************************************************/ -- --/* some constants defined by the LZX specification */ --#define LZX_MIN_MATCH (2) --#define LZX_MAX_MATCH (257) --#define LZX_NUM_CHARS (256) --#define LZX_BLOCKTYPE_INVALID (0) /* also blocktypes 4-7 invalid */ --#define LZX_BLOCKTYPE_VERBATIM (1) --#define LZX_BLOCKTYPE_ALIGNED (2) --#define LZX_BLOCKTYPE_UNCOMPRESSED (3) --#define LZX_PRETREE_NUM_ELEMENTS (20) --#define LZX_ALIGNED_NUM_ELEMENTS (8) /* aligned offset tree #elements */ --#define LZX_NUM_PRIMARY_LENGTHS (7) /* this one missing from spec! */ --#define LZX_NUM_SECONDARY_LENGTHS (249) /* length tree #elements */ -- --/* LZX huffman defines: tweak tablebits as desired */ --#define LZX_PRETREE_MAXSYMBOLS (LZX_PRETREE_NUM_ELEMENTS) --#define LZX_PRETREE_TABLEBITS (6) --#define LZX_MAINTREE_MAXSYMBOLS (LZX_NUM_CHARS + 50*8) --#define LZX_MAINTREE_TABLEBITS (12) --#define LZX_LENGTH_MAXSYMBOLS (LZX_NUM_SECONDARY_LENGTHS+1) --#define LZX_LENGTH_TABLEBITS (12) --#define LZX_ALIGNED_MAXSYMBOLS (LZX_ALIGNED_NUM_ELEMENTS) --#define LZX_ALIGNED_TABLEBITS (7) --#define LZX_LENTABLE_SAFETY (64) /* table decoding overruns are allowed */ -- --#define LZX_FRAME_SIZE (32768) /* the size of a frame in LZX */ -- --struct lzx_stream { -- int ofd; /* output file descriptor */ -- -- off_t offset; /* number of bytes actually output */ -- off_t length; /* overall decompressed length of stream */ -- -- unsigned char *window; /* decoding window */ -- unsigned int window_size; /* window size */ -- unsigned int window_posn; /* decompression offset within window */ -- unsigned int frame_posn; /* current frame offset within in window */ -- unsigned int frame; /* the number of 32kb frames processed */ -- unsigned int reset_interval; /* which frame do we reset the compressor? */ -- -- unsigned int R0, R1, R2; /* for the LRU offset system */ -- unsigned int block_length; /* uncompressed length of this LZX block */ -- unsigned int block_remaining; /* uncompressed bytes still left to decode */ -- -- signed int intel_filesize; /* magic header value used for transform */ -- signed int intel_curpos; /* current offset in transform space */ -- -- unsigned char intel_started; /* has intel E8 decoding started? */ -- unsigned char block_type; /* type of the current block */ -- unsigned char header_read; /* have we started decoding at all yet? */ -- unsigned char posn_slots; /* how many posn slots in stream? */ -- -- int error; -- -- /* I/O buffering */ -- unsigned char *inbuf, *i_ptr, *i_end, *o_ptr, *o_end; -- unsigned int bit_buffer, bits_left, inbuf_size; -- -- /* huffman code lengths */ -- unsigned char PRETREE_len [LZX_PRETREE_MAXSYMBOLS + LZX_LENTABLE_SAFETY]; -- unsigned char MAINTREE_len [LZX_MAINTREE_MAXSYMBOLS + LZX_LENTABLE_SAFETY]; -- unsigned char LENGTH_len [LZX_LENGTH_MAXSYMBOLS + LZX_LENTABLE_SAFETY]; -- unsigned char ALIGNED_len [LZX_ALIGNED_MAXSYMBOLS + LZX_LENTABLE_SAFETY]; -- -- /* huffman decoding tables */ -- unsigned short PRETREE_table [(1 << LZX_PRETREE_TABLEBITS) + -- (LZX_PRETREE_MAXSYMBOLS * 2)]; -- unsigned short MAINTREE_table[(1 << LZX_MAINTREE_TABLEBITS) + -- (LZX_MAINTREE_MAXSYMBOLS * 2)]; -- unsigned short LENGTH_table [(1 << LZX_LENGTH_TABLEBITS) + -- (LZX_LENGTH_MAXSYMBOLS * 2)]; -- unsigned short ALIGNED_table [(1 << LZX_ALIGNED_TABLEBITS) + -- (LZX_ALIGNED_MAXSYMBOLS * 2)]; -- unsigned char input_end; /* have we reached the end of input? */ -- unsigned char wflag; /* write flag */ -- -- /* this is used purely for doing the intel E8 transform */ -- unsigned char e8_buf[LZX_FRAME_SIZE]; -- -- unsigned int position_base[51]; -- -- /* cabinet related stuff */ -- struct cab_file *file; -- int (*read_cb)(struct cab_file *, unsigned char *, int); -- -- unsigned char extra_bits[51]; -- --}; -- --struct lzx_stream *lzx_init(int ofd, -- int window_bits, -- int reset_interval, -- int input_buffer_size, -- off_t output_length, -- struct cab_file *file, -- int (*read_cb)(struct cab_file *, unsigned char *, int)); -- --extern void lzx_set_output_length(struct lzx_stream *lzx, -- off_t output_length); -- --extern int lzx_decompress(struct lzx_stream *lzx, uint32_t out_bytes); -- --void lzx_free(struct lzx_stream *lzx); -- --#endif -diff --git a/libclamav/scanners.c b/libclamav/scanners.c -index fa9063d08018..07a38eedc7a5 100644 ---- a/libclamav/scanners.c -+++ b/libclamav/scanners.c -@@ -60,7 +60,7 @@ - #include "vba_extract.h" - #include "msexpand.h" - #include "mbox.h" --#include "chmunpack.h" -+#include "libmspack.h" - #include "pe.h" - #include "elf.h" - #include "filetypes.h" -@@ -73,8 +73,6 @@ - #include "sis.h" - #include "pdf.h" - #include "str.h" --#include "mspack.h" --#include "cab.h" - #include "rtf.h" - #include "unarj.h" - #include "nsis/nulsft.h" -@@ -853,82 +851,6 @@ static int cli_scanszdd(cli_ctx *ctx) - return ret; - } - --static int cli_scanmscab(cli_ctx *ctx, off_t sfx_offset) --{ -- char *tempname; -- int ret; -- unsigned int files = 0; -- struct cab_archive cab; -- struct cab_file *file; -- unsigned int corrupted_input; -- unsigned int viruses_found = 0; -- -- cli_dbgmsg("in cli_scanmscab()\n"); -- -- if((ret = cab_open(*ctx->fmap, sfx_offset, &cab))) -- return ret; -- -- for(file = cab.files; file; file = file->next) { -- files++; -- -- if(cli_matchmeta(ctx, file->name, 0, file->length, 0, files, 0, NULL) == CL_VIRUS) { -- if (!SCAN_ALL) { -- ret = CL_VIRUS; -- break; -- } -- viruses_found++; -- } -- -- if(ctx->engine->maxscansize && ctx->scansize >= ctx->engine->maxscansize) { -- ret = CL_CLEAN; -- break; -- } -- -- if(!(tempname = cli_gentemp(ctx->engine->tmpdir))) { -- ret = CL_EMEM; -- break; -- } -- -- if(ctx->engine->maxscansize && ctx->scansize + ctx->engine->maxfilesize >= ctx->engine->maxscansize) -- file->max_size = ctx->engine->maxscansize - ctx->scansize; -- else -- file->max_size = ctx->engine->maxfilesize ? ctx->engine->maxfilesize : 0xffffffff; -- -- cli_dbgmsg("CAB: Extracting file %s to %s, size %u, max_size: %u\n", file->name, tempname, file->length, (unsigned int) file->max_size); -- file->written_size = 0; -- if((ret = cab_extract(file, tempname))) { -- cli_dbgmsg("CAB: Failed to extract file: %s\n", cl_strerror(ret)); -- } else { -- corrupted_input = ctx->corrupted_input; -- if(file->length != file->written_size) { -- cli_dbgmsg("CAB: Length from header %u but wrote %u bytes\n", (unsigned int) file->length, (unsigned int) file->written_size); -- ctx->corrupted_input = 1; -- } -- ret = cli_scanfile(tempname, ctx); -- ctx->corrupted_input = corrupted_input; -- } -- if(!ctx->engine->keeptmp) { -- if (!access(tempname, R_OK) && cli_unlink(tempname)) { -- free(tempname); -- ret = CL_EUNLINK; -- break; -- } -- } -- free(tempname); -- if(ret == CL_VIRUS) { -- if (SCAN_ALL) -- viruses_found++; -- else -- break; -- } -- } -- -- cab_free(&cab); -- if (viruses_found) -- return CL_VIRUS; -- return ret; --} -- - static int vba_scandata(const unsigned char *data, unsigned int len, cli_ctx *ctx) - { - struct cli_matcher *groot = ctx->engine->root[0]; -@@ -1568,72 +1490,6 @@ static int cli_scantar(cli_ctx *ctx, unsigned int posix) - return ret; - } - --static int cli_scanmschm(cli_ctx *ctx) --{ -- int ret = CL_CLEAN, rc; -- chm_metadata_t metadata; -- char *dir; -- unsigned int viruses_found = 0; -- -- cli_dbgmsg("in cli_scanmschm()\n"); -- -- /* generate the temporary directory */ -- if(!(dir = cli_gentemp(ctx->engine->tmpdir))) -- return CL_EMEM; -- -- if(mkdir(dir, 0700)) { -- cli_dbgmsg("CHM: Can't create temporary directory %s\n", dir); -- free(dir); -- return CL_ETMPDIR; -- } -- -- ret = cli_chm_open(dir, &metadata, ctx); -- if (ret != CL_SUCCESS) { -- if(!ctx->engine->keeptmp) -- cli_rmdirs(dir); -- free(dir); -- cli_dbgmsg("CHM: Error: %s\n", cl_strerror(ret)); -- return ret; -- } -- -- do { -- ret = cli_chm_prepare_file(&metadata); -- if (ret != CL_SUCCESS) { -- break; -- } -- ret = cli_chm_extract_file(dir, &metadata, ctx); -- if (ret == CL_SUCCESS) { -- rc = cli_magic_scandesc(metadata.ofd, ctx); -- close(metadata.ofd); -- if (rc == CL_VIRUS) { -- cli_dbgmsg("CHM: infected with %s\n", cli_get_last_virus(ctx)); -- if (SCAN_ALL) -- viruses_found++; -- else { -- ret = CL_VIRUS; -- break; -- } -- } -- } -- -- } while(ret == CL_SUCCESS); -- -- cli_chm_close(&metadata); -- -- if(!ctx->engine->keeptmp) -- cli_rmdirs(dir); -- -- free(dir); -- -- cli_dbgmsg("CHM: Exit code: %d\n", ret); -- if (ret == CL_BREAK) -- ret = CL_CLEAN; -- -- if (SCAN_ALL && viruses_found) -- return CL_VIRUS; -- return ret; --} -- - static int cli_scanscrenc(cli_ctx *ctx) - { - char *tempname; diff --git a/recipes-security/clamav/clamav-0.98.5/0008-Add-upstream-systemd-support-for-clamav-daemon-and-c.patch b/recipes-security/clamav/clamav-0.98.5/0008-Add-upstream-systemd-support-for-clamav-daemon-and-c.patch deleted file mode 100644 index 2229296..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0008-Add-upstream-systemd-support-for-clamav-daemon-and-c.patch +++ /dev/null @@ -1,655 +0,0 @@ -From d2564db5d3f50adc67474ffb22b0ee7027a82828 Mon Sep 17 00:00:00 2001 -From: Andreas Cadhalpun -Date: Mon, 11 Aug 2014 23:22:05 +0200 -Subject: Add upstream systemd support for clamav-daemon and clamav-freshclam. - ---- - Makefile.am | 2 +- - clamd/Makefile.am | 4 ++ - clamd/clamav-daemon.service.in | 17 ++++++ - clamd/clamav-daemon.socket | 12 ++++ - clamd/clamd.c | 102 +++++++++++++++++++++++++++------- - clamd/localserver.c | 34 ++++++++++++ - clamd/server-th.c | 55 +++++++++++------- - clamd/tcpserver.c | 50 +++++++++++++++++ - configure.ac | 3 + - freshclam/Makefile.am | 4 ++ - freshclam/clamav-freshclam.service.in | 12 ++++ - freshclam/freshclam.c | 39 +++++++++++-- - m4/reorganization/libs/systemd.m4 | 18 ++++++ - shared/misc.h | 8 +++ - shared/optparser.c | 2 +- - 15 files changed, 318 insertions(+), 44 deletions(-) - create mode 100644 clamd/clamav-daemon.service.in - create mode 100644 clamd/clamav-daemon.socket - create mode 100644 freshclam/clamav-freshclam.service.in - create mode 100644 m4/reorganization/libs/systemd.m4 - -diff --git a/Makefile.am b/Makefile.am -index 2eecd94b668b..017d6327ff58 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -33,7 +33,7 @@ pkgconfig_DATA = libclamav.pc - # don't complain that configuration files and databases are not removed, this is intended - distuninstallcheck_listfiles = find . -type f ! -name clamd.conf ! -name freshclam.conf ! -name daily.cvd ! -name main.cvd -print - DISTCLEANFILES = target.h --DISTCHECK_CONFIGURE_FLAGS=--enable-milter --disable-clamav --enable-all-jit-targets --enable-llvm=yes -+DISTCHECK_CONFIGURE_FLAGS=--enable-milter --disable-clamav --enable-all-jit-targets --enable-llvm=yes --with-systemdsystemunitdir=$$dc_install_base/$(systemdsystemunitdir) - lcov: - ($(MAKE); cd unit_tests; $(MAKE) lcov) - quick-check: -diff --git a/clamd/Makefile.am b/clamd/Makefile.am -index 61bbd69d1133..edc133138e58 100644 ---- a/clamd/Makefile.am -+++ b/clamd/Makefile.am -@@ -50,6 +50,10 @@ clamd_SOURCES = \ - - AM_CFLAGS=@WERR_CFLAGS@ - -+if INSTALL_SYSTEMD_UNITS -+systemdsystemunit_DATA = clamav-daemon.socket clamav-daemon.service -+endif -+ - endif - - LIBS = $(top_builddir)/libclamav/libclamav.la @CLAMD_LIBS@ @THREAD_LIBS@ -diff --git a/clamd/clamav-daemon.service.in b/clamd/clamav-daemon.service.in -new file mode 100644 -index 000000000000..0a5d456a2b36 ---- /dev/null -+++ b/clamd/clamav-daemon.service.in -@@ -0,0 +1,17 @@ -+[Unit] -+Description=Clam AntiVirus userspace daemon -+Documentation=man:clamd(8) man:clamd.conf(5) http://www.clamav.net/lang/en/doc/ -+Requires=clamav-daemon.socket -+# Check for database existence -+ConditionPathExistsGlob=@DBDIR@/main.{c[vl]d,inc} -+ConditionPathExistsGlob=@DBDIR@/daily.{c[vl]d,inc} -+ -+[Service] -+ExecStart=@prefix@/sbin/clamd --foreground=true -+# Reload the database -+ExecReload=/bin/kill -USR2 $MAINPID -+StandardOutput=syslog -+ -+[Install] -+WantedBy=multi-user.target -+Also=clamav-daemon.socket -diff --git a/clamd/clamav-daemon.socket b/clamd/clamav-daemon.socket -new file mode 100644 -index 000000000000..43a34cd36aad ---- /dev/null -+++ b/clamd/clamav-daemon.socket -@@ -0,0 +1,12 @@ -+[Unit] -+Description=Socket for Clam AntiVirus userspace daemon -+Documentation=man:clamd(8) man:clamd.conf(5) http://www.clamav.net/lang/en/doc/ -+ -+[Socket] -+ListenStream=/run/clamav/clamd.ctl -+#ListenStream=127.0.0.1:1024 -+ExecStartPost=/bin/chown -R clamav:clamav /run/clamav/ -+ExecStopPost=/bin/rm /run/clamav/clamd.ctl -+ -+[Install] -+WantedBy=sockets.target -diff --git a/clamd/clamd.c b/clamd/clamd.c -index 96204291f433..ec15eacc8c25 100644 ---- a/clamd/clamd.c -+++ b/clamd/clamd.c -@@ -72,7 +72,7 @@ - #include "scanner.h" - - short debug_mode = 0, logok = 0; --short foreground = 0; -+short foreground = -1; - char hostid[37]; - - char *get_hostid(void *cbdata); -@@ -160,6 +160,31 @@ int main(int argc, char **argv) - debug_mode = 1; - } - -+ /* check foreground option from command line to override config file */ -+ int j; -+ for(j = 0; j < argc; j += 1) -+ { -+ if ((memcmp(argv[j], "--foreground", 12) == 0) || (memcmp(argv[j], "-F", 2) == 0)) -+ { -+ /* found */ -+ break; -+ } -+ } -+ -+ if (j < argc) -+ { -+ if(optget(opts, "Foreground")->enabled) -+ { -+ foreground = 1; -+ } -+ else -+ { -+ foreground = 0; -+ } -+ } -+ -+ int num_fd = sd_listen_fds(0); -+ - /* parse the config file */ - cfgfile = optget(opts, "config-file")->strarg; - pt = strdup(cfgfile); -@@ -295,7 +320,9 @@ int main(int argc, char **argv) - if(optget(opts, "LocalSocket")->enabled) - localsock = 1; - -- if(!tcpsock && !localsock) { -+ logg("#Received %d file descriptor(s) from systemd.\n", num_fd); -+ -+ if(!tcpsock && !localsock && num_fd == 0) { - logg("!Please define server type (local and/or TCP).\n"); - ret = 1; - break; -@@ -577,7 +604,9 @@ int main(int argc, char **argv) - break; - } - -- if(tcpsock) { -+ if(tcpsock || num_fd > 0) { -+ int *t; -+ - opt = optget(opts, "TCPAddr"); - if (opt->enabled) { - int breakout = 0; -@@ -604,7 +633,7 @@ int main(int argc, char **argv) - } - } - #ifndef _WIN32 -- if(localsock) { -+ if(localsock && num_fd == 0) { - int *t; - mode_t sock_mode, umsk = umask(0777); /* socket is created with 000 to avoid races */ - -@@ -666,8 +695,43 @@ int main(int argc, char **argv) - nlsockets++; - } - -+ /* check for local sockets passed by systemd */ -+ if (num_fd > 0) -+ { -+ int *t; -+ t = realloc(lsockets, sizeof(int) * (nlsockets + 1)); -+ if (!(t)) { -+ ret = 1; -+ break; -+ } -+ lsockets = t; -+ -+ lsockets[nlsockets] = localserver(opts); -+ if (lsockets[nlsockets] == -1) -+ { -+ ret = 1; -+ break; -+ } -+ else if (lsockets[nlsockets] > 0) -+ { -+ nlsockets++; -+ } -+ } -+ - /* fork into background */ -- if(!optget(opts, "Foreground")->enabled) { -+ if (foreground == -1) -+ { -+ if (optget(opts, "Foreground")->enabled) -+ { -+ foreground = 1; -+ } -+ else -+ { -+ foreground = 0; -+ } -+ } -+ if(foreground == 0) -+ { - #ifdef C_BSD - /* workaround for OpenBSD bug, see https://wwws.clamav.net/bugzilla/show_bug.cgi?id=885 */ - for(ret=0;(unsigned int)ret 1) ? "s" : ""); -- -- for (i = 0; i < nlsockets; i++) { -- closesocket(lsockets[i]); -- } -+ if (num_fd == 0) -+ { -+ logg("*Closing the main socket%s.\n", (nlsockets > 1) ? "s" : ""); - -+ for (i = 0; i < nlsockets; i++) { -+ closesocket(lsockets[i]); -+ } - #ifndef _WIN32 -- if(nlsockets && localsock) { -- opt = optget(opts, "LocalSocket"); -+ if(nlsockets && localsock) { -+ opt = optget(opts, "LocalSocket"); - -- if(unlink(opt->strarg) == -1) -- logg("!Can't unlink the socket file %s\n", opt->strarg); -- else -- logg("Socket file removed.\n"); -- } -+ if(unlink(opt->strarg) == -1) -+ logg("!Can't unlink the socket file %s\n", opt->strarg); -+ else -+ logg("Socket file removed.\n"); -+ } - #endif -+ } - - free(lsockets); - -diff --git a/clamd/localserver.c b/clamd/localserver.c -index db07415212ad..d963efd244f5 100644 ---- a/clamd/localserver.c -+++ b/clamd/localserver.c -@@ -39,6 +39,7 @@ - - #include "shared/optparser.h" - #include "shared/output.h" -+#include "shared/misc.h" - - #include "others.h" - #include "server.h" -@@ -60,6 +61,39 @@ int localserver(const struct optstruct *opts) - STATBUF foo; - char *estr; - -+ int num_fd = sd_listen_fds(0); -+ if (num_fd > 2) -+ { -+ logg("!LOCAL: Received more than two file descriptors from systemd.\n"); -+ return -1; -+ } -+ else if (num_fd > 0) -+ { -+ /* use socket passed by systemd */ -+ int i; -+ for(i = 0; i < num_fd; i += 1) -+ { -+ sockfd = SD_LISTEN_FDS_START + i; -+ if (sd_is_socket(sockfd, AF_UNIX, SOCK_STREAM, 1) == 1) -+ { -+ /* correct socket */ -+ break; -+ } -+ else -+ { -+ /* wrong socket */ -+ sockfd = -2; -+ } -+ } -+ if (sockfd == -2) -+ { -+ logg("#LOCAL: No local AF_UNIX SOCK_STREAM socket received from systemd.\n"); -+ return -2; -+ } -+ logg("#LOCAL: Received AF_UNIX SOCK_STREAM socket from systemd.\n"); -+ return sockfd; -+ } -+ /* create socket */ - memset((char *) &server, 0, sizeof(server)); - server.sun_family = AF_UNIX; - strncpy(server.sun_path, optget(opts, "LocalSocket")->strarg, sizeof(server.sun_path)); -diff --git a/clamd/server-th.c b/clamd/server-th.c -index d97cd6fb34e1..5c12811b662b 100644 ---- a/clamd/server-th.c -+++ b/clamd/server-th.c -@@ -48,6 +48,7 @@ - - #include "shared/output.h" - #include "shared/optparser.h" -+#include "shared/misc.h" - - #include "fan.h" - #include "server.h" -@@ -445,13 +446,19 @@ static void *acceptloop_th(void *arg) - } - pthread_mutex_unlock(fds->buf_mutex); - -- for (i=0;i < fds->nfds; i++) { -- if (fds->buf[i].fd == -1) -- continue; -- logg("$Shutdown: closed fd %d\n", fds->buf[i].fd); -- shutdown(fds->buf[i].fd, 2); -- closesocket(fds->buf[i].fd); -+ if (sd_listen_fds(0) == 0) -+ { -+ /* only close the sockets, when not using systemd socket activation */ -+ for (i=0;i < fds->nfds; i++) -+ { -+ if (fds->buf[i].fd == -1) -+ continue; -+ logg("$Shutdown: closed fd %d\n", fds->buf[i].fd); -+ shutdown(fds->buf[i].fd, 2); -+ closesocket(fds->buf[i].fd); -+ } - } -+ - fds_free(fds); - pthread_mutex_destroy(fds->buf_mutex); - pthread_mutex_lock(&exit_mutex); -@@ -1344,16 +1351,22 @@ int recvloop_th(int *socketds, unsigned nsockets, struct cl_engine *engine, unsi - if (progexit) { - pthread_mutex_unlock(&exit_mutex); - pthread_mutex_lock(fds->buf_mutex); -- for (i=0;i < fds->nfds; i++) { -- if (fds->buf[i].fd == -1) -- continue; -- thrmgr_group_terminate(fds->buf[i].group); -- if (thrmgr_group_finished(fds->buf[i].group, EXIT_ERROR)) { -- logg("$Shutdown closed fd %d\n", fds->buf[i].fd); -- shutdown(fds->buf[i].fd, 2); -- closesocket(fds->buf[i].fd); -- fds->buf[i].fd = -1; -- } -+ if (sd_listen_fds(0) == 0) -+ { -+ /* only close the sockets, when not using systemd socket activation */ -+ for (i=0;i < fds->nfds; i++) -+ { -+ if (fds->buf[i].fd == -1) -+ continue; -+ thrmgr_group_terminate(fds->buf[i].group); -+ if (thrmgr_group_finished(fds->buf[i].group, EXIT_ERROR)) -+ { -+ logg("$Shutdown closed fd %d\n", fds->buf[i].fd); -+ shutdown(fds->buf[i].fd, 2); -+ closesocket(fds->buf[i].fd); -+ fds->buf[i].fd = -1; -+ } -+ } - } - pthread_mutex_unlock(fds->buf_mutex); - break; -@@ -1462,9 +1475,13 @@ int recvloop_th(int *socketds, unsigned nsockets, struct cl_engine *engine, unsi - #endif - if(dbstat.entries) - cl_statfree(&dbstat); -- logg("*Shutting down the main socket%s.\n", (nsockets > 1) ? "s" : ""); -- for (i = 0; i < nsockets; i++) -- shutdown(socketds[i], 2); -+ if (sd_listen_fds(0) == 0) -+ { -+ /* only close the sockets, when not using systemd socket activation */ -+ logg("*Shutting down the main socket%s.\n", (nsockets > 1) ? "s" : ""); -+ for (i = 0; i < nsockets; i++) -+ shutdown(socketds[i], 2); -+ } - - if((opt = optget(opts, "PidFile"))->enabled) { - if(unlink(opt->strarg) == -1) -diff --git a/clamd/tcpserver.c b/clamd/tcpserver.c -index c3027a85c1f4..81387b3c8512 100644 ---- a/clamd/tcpserver.c -+++ b/clamd/tcpserver.c -@@ -60,6 +60,56 @@ int tcpserver(int **lsockets, unsigned int *nlsockets, char *ipaddr, const struc - - sockets = *lsockets; - -+ int num_fd = sd_listen_fds(0); -+ if (num_fd > 2) -+ { -+ logg("!TCP: Received more than two file descriptors from systemd.\n"); -+ return -1; -+ } -+ else if (num_fd > 0) -+ { -+ /* use socket passed by systemd */ -+ int i; -+ for(i = 0; i < num_fd; i += 1) -+ { -+ sockfd = SD_LISTEN_FDS_START + i; -+ if (sd_is_socket(sockfd, AF_INET, SOCK_STREAM, 1) == 1) -+ { -+ /* correct socket */ -+ logg("#TCP: Received AF_INET SOCK_STREAM socket from systemd.\n"); -+ break; -+ } -+ else if (sd_is_socket(sockfd, AF_INET6, SOCK_STREAM, 1) == 1) -+ { -+ /* correct socket */ -+ logg("#TCP: Received AF_INET6 SOCK_STREAM socket from systemd.\n"); -+ break; -+ } -+ else -+ { -+ /* wrong socket */ -+ sockfd = -2; -+ } -+ } -+ if (sockfd == -2) -+ { -+ logg("#TCP: No tcp AF_INET/AF_INET6 SOCK_STREAM socket received from systemd.\n"); -+ return -2; -+ } -+ -+ t = realloc(sockets, sizeof(int) * (*nlsockets + 1)); -+ if (!(t)) { -+ return -1; -+ } -+ sockets = t; -+ -+ sockets[*nlsockets] = sockfd; -+ (*nlsockets)++; -+ *lsockets = sockets; -+ return 0; -+ } -+ -+ /* create socket */ - snprintf(port, sizeof(port), "%lld", optget(opts, "TCPSocket")->numarg); - - memset(&hints, 0x00, sizeof(struct addrinfo)); -diff --git a/configure.ac b/configure.ac -index 41043753fc92..02caad29410a 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -86,6 +86,7 @@ AM_MAINTAINER_MODE - m4_include([m4/reorganization/libs/libz.m4]) - m4_include([m4/reorganization/libs/bzip.m4]) - m4_include([m4/reorganization/libs/unrar.m4]) -+m4_include([m4/reorganization/libs/systemd.m4]) - m4_include([m4/reorganization/code_checks/ipv6.m4]) - m4_include([m4/reorganization/code_checks/dns.m4]) - m4_include([m4/reorganization/code_checks/fanotify.m4]) -@@ -137,9 +138,11 @@ clamscan/Makefile - database/Makefile - docs/Makefile - clamd/Makefile -+clamd/clamav-daemon.service - clamdscan/Makefile - clamsubmit/Makefile - clamav-milter/Makefile -+freshclam/clamav-freshclam.service - freshclam/Makefile - sigtool/Makefile - clamconf/Makefile -diff --git a/freshclam/Makefile.am b/freshclam/Makefile.am -index 58fc17471c35..051bf3380e98 100644 ---- a/freshclam/Makefile.am -+++ b/freshclam/Makefile.am -@@ -49,6 +49,10 @@ freshclam_SOURCES = \ - mirman.c \ - mirman.h - -+if INSTALL_SYSTEMD_UNITS -+systemdsystemunit_DATA = clamav-freshclam.service -+endif -+ - AM_CFLAGS=@WERR_CFLAGS@ - DEFS = @DEFS@ -DCL_NOTHREADS - AM_CPPFLAGS = @SSL_CPPFLAGS@ -I$(top_srcdir) -I$(top_srcdir)/shared -I$(top_srcdir)/libclamav @FRESHCLAM_CPPFLAGS@ @JSON_CPPFLAGS@ -diff --git a/freshclam/clamav-freshclam.service.in b/freshclam/clamav-freshclam.service.in -new file mode 100644 -index 000000000000..f717cd642106 ---- /dev/null -+++ b/freshclam/clamav-freshclam.service.in -@@ -0,0 +1,12 @@ -+[Unit] -+Description=ClamAV virus database updater -+Documentation=man:freshclam(1) man:freshclam.conf(5) http://www.clamav.net/lang/en/doc/ -+# If user wants it run from cron, don't start the daemon. -+ConditionPathExists=!/etc/cron.d/clamav-freshclam -+ -+[Service] -+ExecStart=@prefix@/bin/freshclam -d --foreground=true -+StandardOutput=syslog -+ -+[Install] -+WantedBy=multi-user.target -diff --git a/freshclam/freshclam.c b/freshclam/freshclam.c -index 166586bf6447..f170613877c4 100644 ---- a/freshclam/freshclam.c -+++ b/freshclam/freshclam.c -@@ -64,7 +64,7 @@ - static short terminate = 0; - extern int active_children; - --static short foreground = 1; -+static short foreground = -1; - char updtmpdir[512], dbdir[512]; - int sigchld_wait = 1; - const char *pidfile = NULL; -@@ -117,7 +117,7 @@ sighandler (int sig) - if (pidfile) - unlink (pidfile); - logg ("Update process terminated\n"); -- exit (2); -+ exit (0); - } - - return; -@@ -322,6 +322,26 @@ main (int argc, char **argv) - return 0; - } - -+ /* check foreground option from command line to override config file */ -+ int j; -+ for(j = 0; j < argc; j += 1) -+ { -+ if ((memcmp(argv[j], "--foreground", 12) == 0) || (memcmp(argv[j], "-F", 2) == 0)) -+ { -+ /* found */ -+ break; -+ } -+ } -+ -+ if (j < argc) { -+ if(optget(opts, "Foreground")->enabled) { -+ foreground = 1; -+ } -+ else { -+ foreground = 0; -+ } -+ } -+ - /* parse the config file */ - cfgfile = optget (opts, "config-file")->strarg; - pt = strdup (cfgfile); -@@ -638,7 +658,19 @@ main (int argc, char **argv) - bigsleep = 24 * 3600 / checks; - - #ifndef _WIN32 -- if (!optget (opts, "Foreground")->enabled) -+ /* fork into background */ -+ if (foreground == -1) -+ { -+ if (optget(opts, "Foreground")->enabled) -+ { -+ foreground = 1; -+ } -+ else -+ { -+ foreground = 0; -+ } -+ } -+ if(foreground == 0) - { - if (daemonize () == -1) - { -@@ -646,7 +678,6 @@ main (int argc, char **argv) - optfree (opts); - return FCE_FAILEDUPDATE; - } -- foreground = 0; - mprintf_disabled = 1; - } - #endif -diff --git a/m4/reorganization/libs/systemd.m4 b/m4/reorganization/libs/systemd.m4 -new file mode 100644 -index 000000000000..cac5d4272fda ---- /dev/null -+++ b/m4/reorganization/libs/systemd.m4 -@@ -0,0 +1,18 @@ -+dnl Check for systemd-daemon -+PKG_CHECK_MODULES(SYSTEMD, [libsystemd-daemon], [AC_DEFINE([HAVE_SYSTEMD],,[systemd-daemon is supported])], [AC_MSG_RESULT([systemd-daemon is not supported])]) -+CLAMD_LIBS="$CLAMD_LIBS $SYSTEMD_LIBS" -+CFLAGS="$CFLAGS $SYSTEMD_CFLAGS" -+ -+dnl Check for systemd system unit installation directory (see man 7 daemon) -+AC_ARG_WITH([systemdsystemunitdir], AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files]),, [with_systemdsystemunitdir=auto]) -+AS_IF([test "x$with_systemdsystemunitdir" = "xyes" -o "x$with_systemdsystemunitdir" = "xauto"], [ -+ def_systemdsystemunitdir=$($PKG_CONFIG --variable=systemdsystemunitdir systemd) -+ AS_IF([test "x$def_systemdsystemunitdir" = "x"], -+ [AS_IF([test "x$with_systemdsystemunitdir" = "xyes"], [AC_MSG_ERROR([systemd support requested but pkg-config unable to query systemd package])]) -+ with_systemdsystemunitdir=no], -+ [with_systemdsystemunitdir=$def_systemdsystemunitdir])]) -+AS_IF([test "x$with_systemdsystemunitdir" != "xno"], -+ [AC_SUBST([systemdsystemunitdir], [$with_systemdsystemunitdir])]) -+AM_CONDITIONAL(INSTALL_SYSTEMD_UNITS, [test "x$with_systemdsystemunitdir" != "xno"]) -+AC_MSG_RESULT([checking for systemd system unit installation directory... $with_systemdsystemunitdir]) -+ -diff --git a/shared/misc.h b/shared/misc.h -index 7f3a9f962d0d..3e093936caa1 100644 ---- a/shared/misc.h -+++ b/shared/misc.h -@@ -37,6 +37,14 @@ - # endif - #endif - -+#ifdef HAVE_SYSTEMD -+# include -+#else -+# define sd_listen_fds(u) 0 -+# define SD_LISTEN_FDS_START 3 -+# define sd_is_socket(f, a, s, l) 1 -+#endif -+ - #include - - #ifndef PATH_MAX -diff --git a/shared/optparser.c b/shared/optparser.c -index 63c88550d5b8..b61ec832a32f 100644 ---- a/shared/optparser.c -+++ b/shared/optparser.c -@@ -272,7 +272,7 @@ const struct clam_option __clam_options[] = { - - { "AllowAllMatchScan", NULL, 0, CLOPT_TYPE_BOOL, MATCH_BOOL, 1, NULL, 0, OPT_CLAMD, "Permit use of the ALLMATCHSCAN command.", "yes" }, - -- { "Foreground", NULL, 0, CLOPT_TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMD | OPT_FRESHCLAM | OPT_MILTER, "Don't fork into background.", "no" }, -+ { "Foreground", "foreground", 'F', CLOPT_TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMD | OPT_FRESHCLAM | OPT_MILTER, "Don't fork into background.", "no" }, - - { "Debug", NULL, 0, CLOPT_TYPE_BOOL, MATCH_BOOL, 0, NULL, 0, OPT_CLAMD | OPT_FRESHCLAM, "Enable debug messages in libclamav.", "no" }, - diff --git a/recipes-security/clamav/clamav-0.98.5/0009-fix-ssize_t-size_t-off_t-printf-modifier.patch b/recipes-security/clamav/clamav-0.98.5/0009-fix-ssize_t-size_t-off_t-printf-modifier.patch deleted file mode 100644 index ee60f92..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0009-fix-ssize_t-size_t-off_t-printf-modifier.patch +++ /dev/null @@ -1,478 +0,0 @@ -From 26516ebe7ae678be78e748bc973835844e369f72 Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior -Date: Sun, 17 Aug 2014 21:24:03 +0200 -Subject: fix ssize_t/size_t/off_t printf modifier -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -This fixes a segfault on ARM, Sparc, … if 64bit off_t is used. Once LFS -is enabled then off_t becomes 64bit and there is no portable way to express -it except to cast the variable to signed long long. However with LFS -enabled we can spare that cast. -The 32bit Architectures may explode here because the earlier 64bit off_t -consumes two argument slots and the filename (on which glibc uses -strlen()) becomes invalid. - -In brief: -ssize_t -> %zd -size_t -> %zu -off_t -> %llu (with LFS enabled) - -https://bugzilla.clamav.net/show_bug.cgi?id=11092 - -Signed-off-by: Sebastian Andrzej Siewior ---- - clamd/clamd.c | 2 +- - clamd/server-th.c | 3 ++- - libclamav/adc.c | 5 +++-- - libclamav/asn1.c | 3 ++- - libclamav/bytecode.c | 4 ++-- - libclamav/bytecode_api.c | 2 +- - libclamav/hashtab.c | 32 +++++++++++++++++++++----------- - libclamav/jsparse/js-norm.c | 6 ++++-- - libclamav/matcher.c | 6 ++++-- - libclamav/pdf.c | 29 +++++++++++++++++++---------- - libclamav/regex_list.c | 5 ++++- - libclamav/scanners.c | 5 +++-- - shared/misc.h | 4 ++++ - shared/output.c | 3 ++- - sigtool/sigtool.c | 3 ++- - 15 files changed, 74 insertions(+), 38 deletions(-) - -diff --git a/clamd/clamd.c b/clamd/clamd.c -index ec15eacc8c25..8c87e1bb9a87 100644 ---- a/clamd/clamd.c -+++ b/clamd/clamd.c -@@ -355,7 +355,7 @@ int main(int argc, char **argv) - - - if(logg_size) -- logg("#Log file size limited to %u bytes.\n", logg_size); -+ logg("#Log file size limited to %" PRId64 "bytes.\n", logg_size); - else - logg("#Log file size limit disabled.\n"); - -diff --git a/clamd/server-th.c b/clamd/server-th.c -index 5c12811b662b..84086f39fbfb 100644 ---- a/clamd/server-th.c -+++ b/clamd/server-th.c -@@ -689,7 +689,8 @@ static int handle_stream(client_conn_t *conn, struct fd_buf *buf, const struct o - logg("!INSTREAM: Can't write to temporary file.\n"); - *error = 1; - } -- logg("$Processed %lu bytes of chunkdata, pos %lu\n", cmdlen, pos); -+ logg("$Processed %" _sizet " bytes of chunkdata, pos %" _sizet "\n", -+ cmdlen, pos); - pos += cmdlen; - if (pos == buf->off) { - buf->off = 0; -diff --git a/libclamav/adc.c b/libclamav/adc.c -index 6ad00ea96571..684335f1bfb5 100644 ---- a/libclamav/adc.c -+++ b/libclamav/adc.c -@@ -28,6 +28,7 @@ - #include - #endif - -+#include "shared/misc.h" - #include "clamav.h" - #include "cltypes.h" - #include "others.h" -@@ -86,8 +87,8 @@ int adc_decompress(adc_stream *strm) - return ADC_DATA_ERROR; - } - -- cli_dbgmsg("adc_decompress: avail_in %lu avail_out %lu state %u\n", strm->avail_in, strm->avail_out, strm->state); -- -+ cli_dbgmsg("adc_decompress: avail_in %" _sizet " avail_out %" _sizet " state %u\n", -+ strm->avail_in, strm->avail_out, strm->state); - while (strm->avail_out) { - /* Exit if needs more in bytes and none available */ - int needsInput; -diff --git a/libclamav/asn1.c b/libclamav/asn1.c -index c6cf0dd00c50..e6f55642640d 100644 ---- a/libclamav/asn1.c -+++ b/libclamav/asn1.c -@@ -24,6 +24,7 @@ - - #include - -+#include "shared/misc.h" - #include "clamav.h" - #include "asn1.h" - #include "bignum.h" -@@ -1481,7 +1482,7 @@ int asn1_check_mscat(struct cl_engine *engine, fmap_t *map, size_t offset, unsig - if (engine->dconf->pe & PE_CONF_DISABLECERT) - return CL_VIRUS; - -- cli_dbgmsg("in asn1_check_mscat (offset: %lu)\n", offset); -+ cli_dbgmsg("in asn1_check_mscat (offset: %" _sizet ")\n", offset); - crtmgr_init(&certs); - if(crtmgr_add_roots(engine, &certs)) { - crtmgr_free(&certs); -diff --git a/libclamav/bytecode.c b/libclamav/bytecode.c -index 28d2d716f93b..b34f818fdaba 100644 ---- a/libclamav/bytecode.c -+++ b/libclamav/bytecode.c -@@ -1489,8 +1489,8 @@ void cli_sigperf_print() - cli_infomsg (NULL, "%-*s %*s %*s %*s %*s\n", max_name_len, "=============", - 8, "=====", 8, "========", 12, "===========", 9, "========="); - while (elem->run_count) { -- cli_infomsg (NULL, "%-*s %*lu %*lu %*llu %*.2f\n", max_name_len, elem->bc_name, -- 8, elem->run_count, 8, elem->match_count, -+ cli_infomsg (NULL, "%-*s %*lu %*lu %*" PRIu64 " %*.2f\n", max_name_len, -+ elem->bc_name, 8, elem->run_count, 8, elem->match_count, - 12, elem->usecs, 9, (double)elem->usecs/elem->run_count); - elem++; - } -diff --git a/libclamav/bytecode_api.c b/libclamav/bytecode_api.c -index 5bded4ebaca0..72a9393183a2 100644 ---- a/libclamav/bytecode_api.c -+++ b/libclamav/bytecode_api.c -@@ -122,7 +122,7 @@ int32_t cli_bcapi_seek(struct cli_bc_ctx* ctx, int32_t pos, uint32_t whence) - return -1; - } - if (off < 0 || off > ctx->file_size) { -- cli_dbgmsg("bcapi_seek: out of file: %ld (max %d)\n", -+ cli_dbgmsg("bcapi_seek: out of file: %" PRId64 " (max %d)\n", - off, ctx->file_size); - return -1; - } -diff --git a/libclamav/hashtab.c b/libclamav/hashtab.c -index 88e81ba2c2ef..cafce3ac8927 100644 ---- a/libclamav/hashtab.c -+++ b/libclamav/hashtab.c -@@ -25,6 +25,7 @@ - #include - #include - -+#include "shared/misc.h" - #include "cltypes.h" - #include "clamav.h" - #include "others.h" -@@ -329,9 +330,10 @@ static int cli_hashtab_grow(struct cli_hashtable *s) - struct cli_element* htable; - size_t i,idx, used = 0; - -- cli_dbgmsg("hashtab.c: new capacity: %lu\n",new_capacity); -+ cli_dbgmsg("hashtab.c: new capacity: %" _sizet "\n",new_capacity); - if(new_capacity == s->capacity) { -- cli_errmsg("hashtab.c: capacity problem growing from: %lu\n",s->capacity); -+ cli_errmsg("hashtab.c: capacity problem growing from: %" _sizet -+ "\n", s->capacity); - return CL_EMEM; - } - htable = cli_calloc(new_capacity, sizeof(*s->htable)); -@@ -372,7 +374,7 @@ static int cli_hashtab_grow(struct cli_hashtable *s) - s->used = used; - s->capacity = new_capacity; - s->maxfill = new_capacity*8/10; -- cli_dbgmsg("Table %p size after grow:%ld\n",(void*)s,s->capacity); -+ cli_dbgmsg("Table %p size after grow: %" _sizet "\n", s, s->capacity); - PROFILE_GROW_DONE(s); - return CL_SUCCESS; - } -@@ -386,7 +388,7 @@ static int cli_htu32_grow(struct cli_htu32 *s, mpool_t *mempool) - const size_t new_capacity = nearest_power(s->capacity + 1); - struct cli_htu32_element* htable = mpool_calloc(mempool, new_capacity, sizeof(*s->htable)); - size_t i,idx, used = 0; -- cli_dbgmsg("hashtab.c: new capacity: %lu\n",new_capacity); -+ cli_dbgmsg("hashtab.c: new capacity: %" _sizet "\n", new_capacity); - if(new_capacity == s->capacity || !htable) - return CL_EMEM; - -@@ -422,7 +424,7 @@ static int cli_htu32_grow(struct cli_htu32 *s, mpool_t *mempool) - s->used = used; - s->capacity = new_capacity; - s->maxfill = new_capacity*8/10; -- cli_dbgmsg("Table %p size after grow:%ld\n",(void*)s,s->capacity); -+ cli_dbgmsg("Table %p size after grow: %" _sizet "\n", s, s->capacity); - PROFILE_GROW_DONE(s); - return CL_SUCCESS; - } -@@ -437,7 +439,9 @@ const struct cli_element* cli_hashtab_insert(struct cli_hashtable *s, const char - if(!s) - return NULL; - if(s->used > s->maxfill) { -- cli_dbgmsg("hashtab.c:Growing hashtable %p, because it has exceeded maxfill, old size:%ld\n",(void*)s,s->capacity); -+ cli_dbgmsg("hashtab.c:Growing hashtable %p, because it has " -+ "exceeded maxfill, old size: %" _sizet "\n", s, -+ s->capacity); - cli_hashtab_grow(s); - } - do { -@@ -486,7 +490,8 @@ const struct cli_element* cli_hashtab_insert(struct cli_hashtable *s, const char - } while (tries <= s->capacity); - /* no free place found*/ - PROFILE_HASH_EXHAUSTED(s); -- cli_dbgmsg("hashtab.c: Growing hashtable %p, because its full, old size:%ld.\n",(void*)s,s->capacity); -+ cli_dbgmsg("hashtab.c: Growing hashtable %p, because its full, " -+ "old size: %" _sizet ".\n", s, s->capacity); - } while( cli_hashtab_grow(s) >= 0 ); - cli_warnmsg("hashtab.c: Unable to grow hashtable\n"); - return NULL; -@@ -504,7 +509,9 @@ int cli_htu32_insert(struct cli_htu32 *s, const struct cli_htu32_element *item, - if(!s) - return CL_ENULLARG; - if(s->used > s->maxfill) { -- cli_dbgmsg("hashtab.c:Growing hashtable %p, because it has exceeded maxfill, old size:%ld\n",(void*)s,s->capacity); -+ cli_dbgmsg("hashtab.c:Growing hashtable %p, because it has " -+ "exceeded maxfill, old size: %" _sizet "\n", s, -+ s->capacity); - cli_htu32_grow(s, mempool); - } - do { -@@ -543,7 +550,8 @@ int cli_htu32_insert(struct cli_htu32 *s, const struct cli_htu32_element *item, - } while (tries <= s->capacity); - /* no free place found*/ - PROFILE_HASH_EXHAUSTED(s); -- cli_dbgmsg("hashtab.c: Growing hashtable %p, because its full, old size:%ld.\n",(void*)s,s->capacity); -+ cli_dbgmsg("hashtab.c: Growing hashtable %p, because its full, " -+ "old size: %" _sizet ".\n", s, s->capacity); - } while( (ret = cli_htu32_grow(s, mempool)) >= 0 ); - cli_warnmsg("hashtab.c: Unable to grow hashtable\n"); - return ret; -@@ -632,11 +640,13 @@ int cli_hashtab_generate_c(const struct cli_hashtable *s,const char* name) - else if(e->key == DELETED_KEY) - printf("\t{DELETED_KEY,0,0},\n"); - else -- printf("\t{\"%s\", %ld, %ld},\n", e->key, e->data, e->len); -+ printf("\t{\"%s\", %ld, %" _sizet"},\n", e->key, -+ e->data, e->len); - } - printf("};\n"); - printf("const struct cli_hashtable %s = {\n",name); -- printf("\t%s_elements, %ld, %ld, %ld", name, s->capacity, s->used, s->maxfill); -+ printf("\t%s_elements, %" _sizet ", %" _sizet" , %" _sizet, name, -+ s->capacity, s->used, s->maxfill); - printf("\n};\n"); - - PROFILE_REPORT(s); -diff --git a/libclamav/jsparse/js-norm.c b/libclamav/jsparse/js-norm.c -index 85eba72c2e87..9a56aa34856f 100644 ---- a/libclamav/jsparse/js-norm.c -+++ b/libclamav/jsparse/js-norm.c -@@ -34,6 +34,7 @@ - #include - #include - -+#include "shared/misc.h" - #include "clamav.h" - #include "cltypes.h" - #include "jsparse/lexglobal.h" -@@ -525,7 +526,8 @@ static int replace_token_range(struct tokens *dst, size_t start, size_t end, con - { - const size_t len = with ? with->cnt : 0; - size_t i; -- cli_dbgmsg(MODULE "Replacing tokens %lu - %lu with %lu tokens\n",start, end, len); -+ cli_dbgmsg(MODULE "Replacing tokens %" _sizet " - %" _sizet " with %" -+ _sizet " tokens\n", start, end, len); - if(start >= dst->cnt || end > dst->cnt) - return -1; - for(i=start;icnt + src->cnt)) - return CL_EMEM; -- cli_dbgmsg(MODULE "Appending %lu tokens\n", src->cnt); -+ cli_dbgmsg(MODULE "Appending %" _sizet " tokens\n", src->cnt); - memcpy(&dst->data[dst->cnt], src->data, src->cnt * sizeof(dst->data[0])); - dst->cnt += src->cnt; - return CL_SUCCESS; -diff --git a/libclamav/matcher.c b/libclamav/matcher.c -index 3f4f5c1659d5..e684f7122e26 100644 ---- a/libclamav/matcher.c -+++ b/libclamav/matcher.c -@@ -52,6 +52,7 @@ - #include "perflogging.h" - #include "bytecode_priv.h" - #include "bytecode_api_impl.h" -+#include "shared/misc.h" - - #ifdef CLI_PERF_LOGGING - -@@ -1069,8 +1070,9 @@ int cli_matchmeta(cli_ctx *ctx, const char *fname, size_t fsizec, size_t fsizer, - const struct cli_cdb *cdb; - unsigned int viruses_found = 0; - -- cli_dbgmsg("CDBNAME:%s:%lu:%s:%lu:%lu:%d:%u:%u:%p\n", -- cli_ftname(ctx->container_type), fsizec, fname, fsizec, fsizer, encrypted, filepos, res1, res2); -+ cli_dbgmsg("CDBNAME:%s:%" _sizet ":%s:%" _sizet ":%" _sizet ":%d:%u:%u:%p\n", -+ cli_ftname(ctx->container_type), fsizec, fname, fsizec, fsizer, -+ encrypted, filepos, res1, res2); - - if (ctx->engine && ctx->engine->cb_meta) - if (ctx->engine->cb_meta(cli_ftname(ctx->container_type), fsizec, fname, fsizer, encrypted, filepos, ctx->cb_ctx) == CL_VIRUS) { -diff --git a/libclamav/pdf.c b/libclamav/pdf.c -index 2e469c1e5d56..2de348e7c3fd 100644 ---- a/libclamav/pdf.c -+++ b/libclamav/pdf.c -@@ -60,6 +60,7 @@ - #include "rijndael.h" - #include "textnorm.h" - #include "json_api.h" -+#include "shared/misc.h" - - #ifdef CL_DEBUG - /*#define SAVE_TMP -@@ -1019,10 +1020,12 @@ int pdf_extract_obj(struct pdf_struct *pdf, struct pdf_obj *obj, uint32_t flags) - - orig_length = length; - if (length > pdf->size || obj->start + p_stream + length > pdf->size) { -- cli_dbgmsg("cli_pdf: length out of file: %ld + %ld > %ld\n", -- p_stream, length, pdf->size); -- noisy_warnmsg("length out of file, truncated: %ld + %ld > %ld\n", -- p_stream, length, pdf->size); -+ cli_dbgmsg("cli_pdf: length out of file: %" PRId64 " + %" -+ PRId64 " > % " PRId64 "\n", p_stream, -+ length, pdf->size); -+ noisy_warnmsg("length out of file, truncated: %" PRId64 -+ " + %" PRId64 " > %" PRId64 "\n", -+ p_stream, length, pdf->size); - length = pdf->size - (obj->start + p_stream); - } - -@@ -1044,17 +1047,21 @@ int pdf_extract_obj(struct pdf_struct *pdf, struct pdf_obj *obj, uint32_t flags) - if (length < 0) - length = 0; - -- cli_dbgmsg("cli_pdf: calculated length %ld\n", length); -+ cli_dbgmsg("cli_pdf: calculated length %" PRId64 "\n", -+ length); - } else { - if (size > (size_t)length+2) { -- cli_dbgmsg("cli_pdf: calculated length %ld < %ld\n", -+ cli_dbgmsg("cli_pdf: calculated length %" PRId64 " < %" -+ _ssizet "\n", - length, size); - length = size; - } - } - - if (orig_length && size > (size_t)orig_length + 20) { -- cli_dbgmsg("cli_pdf: orig length: %ld, length: %ld, size: %ld\n", orig_length, length, size); -+ cli_dbgmsg("cli_pdf: orig length: %" PRId64 ", length: %" -+ PRId64", size: %" _ssizet "\n", orig_length, -+ length, size); - pdfobj_flag(pdf, obj, BAD_STREAMLEN); - } - -@@ -1240,7 +1247,7 @@ int pdf_extract_obj(struct pdf_struct *pdf, struct pdf_obj *obj, uint32_t flags) - } - } while (0); - -- cli_dbgmsg("cli_pdf: extracted %ld bytes %u %u obj to %s\n", sum, obj->id>>8, obj->id&0xff, fullname); -+ cli_dbgmsg("cli_pdf: extracted %" PRId64 " bytes %u %u obj to %p\n", sum, obj->id>>8, obj->id&0xff, fullname); - - if (flags & PDF_EXTRACT_OBJ_SCAN && sum) { - int rc2; -@@ -2493,7 +2500,8 @@ int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset) - - if (pdfver != start || offset) { - pdf.flags |= 1 << BAD_PDF_HEADERPOS; -- cli_dbgmsg("cli_pdf: PDF header is not at position 0: %ld\n",pdfver-start+offset); -+ cli_dbgmsg("cli_pdf: PDF header is not at position 0: %" PRId64 "\n", -+ pdfver - start + offset); - #if HAVE_JSON - if (pdfobj) - cli_jsonbool(pdfobj, "BadVersionLocation", 1); -@@ -2602,7 +2610,8 @@ int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset) - while ((rc = pdf_findobj(&pdf)) > 0) { - struct pdf_obj *obj = &pdf.objs[pdf.nobjs-1]; - -- cli_dbgmsg("cli_pdf: found %d %d obj @%ld\n", obj->id >> 8, obj->id&0xff, obj->start + offset); -+ cli_dbgmsg("cli_pdf: found %d %d obj @%" PRId64 "\n", obj->id >> 8, -+ obj->id & 0xff, obj->start + offset); - } - - if (pdf.nobjs) -diff --git a/libclamav/regex_list.c b/libclamav/regex_list.c -index f30cc4cd4349..4b27c2974fb6 100644 ---- a/libclamav/regex_list.c -+++ b/libclamav/regex_list.c -@@ -41,6 +41,7 @@ - #include - - #include "regex/regex.h" -+#include "shared/misc.h" - - #include "clamav.h" - #include "others.h" -@@ -84,7 +85,9 @@ static inline size_t get_char_at_pos_with_skip(const struct pre_fixup_info* info - return (pos <= strlen(buffer)) ? buffer[pos>0 ? pos-1:0] : '\0'; - } - str = info->pre_displayLink.data; -- cli_dbgmsg("calc_pos_with_skip: skip:%lu, %lu - %lu \"%s\",\"%s\"\n", pos, info->host_start, info->host_end, str, buffer); -+ cli_dbgmsg("calc_pos_with_skip: skip: %" _sizet ", %" _sizet " - %" -+ _sizet " \"%s\",\"%s\"\n", pos, info->host_start, -+ info->host_end, str, buffer); - pos += info->host_start; - while(str[realpos] && !isalnum(str[realpos])) realpos++; - for(; str[realpos] && (pos>0); pos--) { -diff --git a/libclamav/scanners.c b/libclamav/scanners.c -index 07a38eedc7a5..49cd70a18d9e 100644 ---- a/libclamav/scanners.c -+++ b/libclamav/scanners.c -@@ -49,6 +49,7 @@ - #define DCONF_MAIL ctx->dconf->mail - #define DCONF_OTHER ctx->dconf->other - -+#include "shared/misc.h" - #include "clamav.h" - #include "others.h" - #include "dconf.h" -@@ -3171,8 +3172,8 @@ int cli_map_scandesc(cl_fmap_t *map, off_t offset, size_t length, cli_ctx *ctx, - - if (!length) length = old_len - offset; - if (length > old_len - offset) { -- cli_dbgmsg("Data truncated: %lu -> %lu\n", -- (unsigned long)length, old_len - offset); -+ cli_dbgmsg("Data truncated: %" _sizet" -> %" PRIu64" \n", length, -+ old_len - offset); - length = old_len - offset; - } - -diff --git a/shared/misc.h b/shared/misc.h -index 3e093936caa1..65f8c9ce0382 100644 ---- a/shared/misc.h -+++ b/shared/misc.h -@@ -51,6 +51,10 @@ - #define PATH_MAX 1024 - #endif - -+#include -+#define _sizet "zu" -+#define _ssizet "zd" -+ - char *freshdbdir(void); - void print_version(const char *dbdir); - int check_flevel(void); -diff --git a/shared/output.c b/shared/output.c -index 5e947a57a6f9..ab054a8bbeee 100644 ---- a/shared/output.c -+++ b/shared/output.c -@@ -214,7 +214,8 @@ static int rename_logg(STATBUF *sb) - - if (!logg_rotate) { - if (logg_fp) { -- fprintf(logg_fp, "Log size = %zu, max = %zu\n", sb->st_size, logg_size); -+ fprintf(logg_fp, "Log size = %" PRId64 ", max = %" PRId64 "\n", -+ sb->st_size, logg_size); - fprintf(logg_fp, "WARNING: Log size limit met but log file rotation turned off. Forcing log file rotation anyways.\n"); - } - -diff --git a/sigtool/sigtool.c b/sigtool/sigtool.c -index f2135c210e02..d67e662cfea1 100644 ---- a/sigtool/sigtool.c -+++ b/sigtool/sigtool.c -@@ -373,7 +373,8 @@ static char *getdsig(const char *host, const char *user, const unsigned char *da - closesocket(sockd); - return NULL; - } else { -- mprintf("Signature received (length = %lu)\n", (unsigned long)strlen(buff) - 10); -+ mprintf("Signature received (length = %" _sizet ")\n", -+ (unsigned long)strlen(buff) - 10); - } - } else { - mprintf("!getdsig: Communication error with remote server\n"); diff --git a/recipes-security/clamav/clamav-0.98.5/0010-hardcode-LLVM-linker-flag-because-llvm-config-return.patch b/recipes-security/clamav/clamav-0.98.5/0010-hardcode-LLVM-linker-flag-because-llvm-config-return.patch deleted file mode 100644 index 9699b50..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0010-hardcode-LLVM-linker-flag-because-llvm-config-return.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 86ebd6e3f8fa60d0bdbed10eb10c5a7699b821e4 Mon Sep 17 00:00:00 2001 -From: Andreas Cadhalpun -Date: Mon, 25 Aug 2014 22:54:37 +0200 -Subject: hardcode LLVM linker flag, because llvm-config returns only flags for - linking statically - -this reduces the size of libclamav by more than 80 percent ---- - libclamav/c++/configure.ac | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/libclamav/c++/configure.ac b/libclamav/c++/configure.ac -index a6697ddd8e82..3c7c7e26fbf8 100644 ---- a/libclamav/c++/configure.ac -+++ b/libclamav/c++/configure.ac -@@ -121,8 +121,8 @@ if test "x$llvmconfig" != "x"; then - else - AC_SUBST(LLVMCONFIG_LDFLAGS, [`$llvmconfig --ldflags`]) - fi -- AC_SUBST(LLVMCONFIG_LIBS, [`$llvmconfig --libs jit nativecodegen scalaropts ipo`]) -- AC_SUBST(LLVMCONFIG_LIBFILES, [`$llvmconfig --libfiles jit nativecodegen scalaropts ipo`]) -+ AC_SUBST(LLVMCONFIG_LIBS, [-lLLVM-$llvmver]) -+ AC_SUBST(LLVMCONFIG_LIBFILES, []) - AC_MSG_NOTICE([CXXFLAGS from llvm-config: $LLVMCONFIG_CXXFLAGS]) - AC_MSG_NOTICE([LDFLAGS from llvm-config: $LLVMCONFIG_LDFLAGS]) - AC_MSG_NOTICE([LIBS from llvm-config: $LLVMCONFIG_LIBS]) diff --git a/recipes-security/clamav/clamav-0.98.5/0011-Add-libmspack-library-from-upstream-without-unnecess.patch b/recipes-security/clamav/clamav-0.98.5/0011-Add-libmspack-library-from-upstream-without-unnecess.patch deleted file mode 100644 index b6df9c2..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0011-Add-libmspack-library-from-upstream-without-unnecess.patch +++ /dev/null @@ -1,56090 +0,0 @@ -From e61759267dd586ead646ac7717edf73cf04fe4f3 Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior -Date: Wed, 30 Jul 2014 21:01:09 +0200 -Subject: Add libmspack library from upstream without unnecessary files - -this is from http://www.cabextract.org.uk/libmspack/libmspack-0.4alpha.tar.gz - -Signed-off-by: Sebastian Andrzej Siewior ---- - libclamav/libmspack-0.4alpha/AUTHORS | 12 + - libclamav/libmspack-0.4alpha/COPYING.LIB | 504 + - libclamav/libmspack-0.4alpha/ChangeLog | 491 + - libclamav/libmspack-0.4alpha/INSTALL | 370 + - libclamav/libmspack-0.4alpha/Makefile.am | 100 + - libclamav/libmspack-0.4alpha/Makefile.in | 1371 ++ - libclamav/libmspack-0.4alpha/NEWS | 0 - libclamav/libmspack-0.4alpha/README | 130 + - libclamav/libmspack-0.4alpha/TODO | 8 + - libclamav/libmspack-0.4alpha/aclocal.m4 | 1033 ++ - libclamav/libmspack-0.4alpha/config.guess | 1530 +++ - libclamav/libmspack-0.4alpha/config.h.in | 113 + - libclamav/libmspack-0.4alpha/config.sub | 1773 +++ - libclamav/libmspack-0.4alpha/configure | 14567 ++++++++++++++++++++++ - libclamav/libmspack-0.4alpha/configure.ac | 50 + - libclamav/libmspack-0.4alpha/depcomp | 688 + - libclamav/libmspack-0.4alpha/install-sh | 520 + - libclamav/libmspack-0.4alpha/libmspack.pc.in | 10 + - libclamav/libmspack-0.4alpha/ltmain.sh | 9661 ++++++++++++++ - libclamav/libmspack-0.4alpha/m4/libtool.m4 | 8001 ++++++++++++ - libclamav/libmspack-0.4alpha/m4/ltoptions.m4 | 384 + - libclamav/libmspack-0.4alpha/m4/ltsugar.m4 | 123 + - libclamav/libmspack-0.4alpha/m4/ltversion.m4 | 23 + - libclamav/libmspack-0.4alpha/m4/lt~obsolete.m4 | 98 + - libclamav/libmspack-0.4alpha/missing | 331 + - libclamav/libmspack-0.4alpha/mspack/cab.h | 127 + - libclamav/libmspack-0.4alpha/mspack/cabc.c | 24 + - libclamav/libmspack-0.4alpha/mspack/cabd.c | 1444 +++ - libclamav/libmspack-0.4alpha/mspack/chm.h | 122 + - libclamav/libmspack-0.4alpha/mspack/chmc.c | 24 + - libclamav/libmspack-0.4alpha/mspack/chmd.c | 1392 +++ - libclamav/libmspack-0.4alpha/mspack/crc32.c | 95 + - libclamav/libmspack-0.4alpha/mspack/crc32.h | 17 + - libclamav/libmspack-0.4alpha/mspack/des.h | 15 + - libclamav/libmspack-0.4alpha/mspack/hlp.h | 33 + - libclamav/libmspack-0.4alpha/mspack/hlpc.c | 24 + - libclamav/libmspack-0.4alpha/mspack/hlpd.c | 24 + - libclamav/libmspack-0.4alpha/mspack/kwaj.h | 118 + - libclamav/libmspack-0.4alpha/mspack/kwajc.c | 24 + - libclamav/libmspack-0.4alpha/mspack/kwajd.c | 561 + - libclamav/libmspack-0.4alpha/mspack/lit.h | 35 + - libclamav/libmspack-0.4alpha/mspack/litc.c | 24 + - libclamav/libmspack-0.4alpha/mspack/litd.c | 24 + - libclamav/libmspack-0.4alpha/mspack/lzss.h | 66 + - libclamav/libmspack-0.4alpha/mspack/lzssd.c | 93 + - libclamav/libmspack-0.4alpha/mspack/lzx.h | 221 + - libclamav/libmspack-0.4alpha/mspack/lzxc.c | 18 + - libclamav/libmspack-0.4alpha/mspack/lzxd.c | 895 ++ - libclamav/libmspack-0.4alpha/mspack/mspack.h | 2353 ++++ - libclamav/libmspack-0.4alpha/mspack/mszip.h | 126 + - libclamav/libmspack-0.4alpha/mspack/mszipc.c | 18 + - libclamav/libmspack-0.4alpha/mspack/mszipd.c | 514 + - libclamav/libmspack-0.4alpha/mspack/oab.h | 60 + - libclamav/libmspack-0.4alpha/mspack/oabc.c | 24 + - libclamav/libmspack-0.4alpha/mspack/oabd.c | 408 + - libclamav/libmspack-0.4alpha/mspack/qtm.h | 128 + - libclamav/libmspack-0.4alpha/mspack/qtmd.c | 489 + - libclamav/libmspack-0.4alpha/mspack/readbits.h | 207 + - libclamav/libmspack-0.4alpha/mspack/readhuff.h | 173 + - libclamav/libmspack-0.4alpha/mspack/sha.h | 15 + - libclamav/libmspack-0.4alpha/mspack/system.c | 239 + - libclamav/libmspack-0.4alpha/mspack/system.h | 124 + - libclamav/libmspack-0.4alpha/mspack/szdd.h | 39 + - libclamav/libmspack-0.4alpha/mspack/szddc.c | 24 + - libclamav/libmspack-0.4alpha/mspack/szddd.c | 247 + - libclamav/libmspack-0.4alpha/test/cabd_md5.c | 161 + - libclamav/libmspack-0.4alpha/test/cabd_memory.c | 179 + - libclamav/libmspack-0.4alpha/test/cabd_test.c | 386 + - libclamav/libmspack-0.4alpha/test/cabrip.c | 81 + - libclamav/libmspack-0.4alpha/test/chmd_find.c | 95 + - libclamav/libmspack-0.4alpha/test/chmd_md5.c | 67 + - libclamav/libmspack-0.4alpha/test/chmd_order.c | 144 + - libclamav/libmspack-0.4alpha/test/chminfo.c | 284 + - libclamav/libmspack-0.4alpha/test/chmx.c | 216 + - libclamav/libmspack-0.4alpha/test/error.h | 22 + - libclamav/libmspack-0.4alpha/test/expand.c | 79 + - libclamav/libmspack-0.4alpha/test/md5.c | 457 + - libclamav/libmspack-0.4alpha/test/md5.h | 165 + - libclamav/libmspack-0.4alpha/test/md5_fh.h | 123 + - libclamav/libmspack-0.4alpha/test/multifh.c | 435 + - libclamav/libmspack-0.4alpha/test/oabx.c | 41 + - 81 files changed, 55434 insertions(+) - create mode 100644 libclamav/libmspack-0.4alpha/AUTHORS - create mode 100644 libclamav/libmspack-0.4alpha/COPYING.LIB - create mode 100644 libclamav/libmspack-0.4alpha/ChangeLog - create mode 100644 libclamav/libmspack-0.4alpha/INSTALL - create mode 100644 libclamav/libmspack-0.4alpha/Makefile.am - create mode 100644 libclamav/libmspack-0.4alpha/Makefile.in - create mode 100644 libclamav/libmspack-0.4alpha/NEWS - create mode 100644 libclamav/libmspack-0.4alpha/README - create mode 100644 libclamav/libmspack-0.4alpha/TODO - create mode 100644 libclamav/libmspack-0.4alpha/aclocal.m4 - create mode 100755 libclamav/libmspack-0.4alpha/config.guess - create mode 100644 libclamav/libmspack-0.4alpha/config.h.in - create mode 100755 libclamav/libmspack-0.4alpha/config.sub - create mode 100755 libclamav/libmspack-0.4alpha/configure - create mode 100644 libclamav/libmspack-0.4alpha/configure.ac - create mode 100755 libclamav/libmspack-0.4alpha/depcomp - create mode 100755 libclamav/libmspack-0.4alpha/install-sh - create mode 100644 libclamav/libmspack-0.4alpha/libmspack.pc.in - create mode 100644 libclamav/libmspack-0.4alpha/ltmain.sh - create mode 100644 libclamav/libmspack-0.4alpha/m4/libtool.m4 - create mode 100644 libclamav/libmspack-0.4alpha/m4/ltoptions.m4 - create mode 100644 libclamav/libmspack-0.4alpha/m4/ltsugar.m4 - create mode 100644 libclamav/libmspack-0.4alpha/m4/ltversion.m4 - create mode 100644 libclamav/libmspack-0.4alpha/m4/lt~obsolete.m4 - create mode 100755 libclamav/libmspack-0.4alpha/missing - create mode 100644 libclamav/libmspack-0.4alpha/mspack/cab.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/cabc.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/cabd.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/chm.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/chmc.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/chmd.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/crc32.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/crc32.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/des.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/hlp.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/hlpc.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/hlpd.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/kwaj.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/kwajc.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/kwajd.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/lit.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/litc.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/litd.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/lzss.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/lzssd.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/lzx.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/lzxc.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/lzxd.c - create mode 100755 libclamav/libmspack-0.4alpha/mspack/mspack.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/mszip.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/mszipc.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/mszipd.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/oab.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/oabc.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/oabd.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/qtm.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/qtmd.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/readbits.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/readhuff.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/sha.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/system.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/system.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/szdd.h - create mode 100644 libclamav/libmspack-0.4alpha/mspack/szddc.c - create mode 100644 libclamav/libmspack-0.4alpha/mspack/szddd.c - create mode 100644 libclamav/libmspack-0.4alpha/test/cabd_md5.c - create mode 100644 libclamav/libmspack-0.4alpha/test/cabd_memory.c - create mode 100644 libclamav/libmspack-0.4alpha/test/cabd_test.c - create mode 100644 libclamav/libmspack-0.4alpha/test/cabrip.c - create mode 100644 libclamav/libmspack-0.4alpha/test/chmd_find.c - create mode 100644 libclamav/libmspack-0.4alpha/test/chmd_md5.c - create mode 100644 libclamav/libmspack-0.4alpha/test/chmd_order.c - create mode 100644 libclamav/libmspack-0.4alpha/test/chminfo.c - create mode 100644 libclamav/libmspack-0.4alpha/test/chmx.c - create mode 100644 libclamav/libmspack-0.4alpha/test/error.h - create mode 100644 libclamav/libmspack-0.4alpha/test/expand.c - create mode 100644 libclamav/libmspack-0.4alpha/test/md5.c - create mode 100644 libclamav/libmspack-0.4alpha/test/md5.h - create mode 100644 libclamav/libmspack-0.4alpha/test/md5_fh.h - create mode 100644 libclamav/libmspack-0.4alpha/test/multifh.c - create mode 100644 libclamav/libmspack-0.4alpha/test/oabx.c - -diff --git a/libclamav/libmspack-0.4alpha/AUTHORS b/libclamav/libmspack-0.4alpha/AUTHORS -new file mode 100644 -index 000000000000..be28722a8075 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/AUTHORS -@@ -0,0 +1,12 @@ -+Principal author: Stuart Caie -+ -+Based on specification documents from Microsoft Corporation and PKWARE. -+ -+Contributors: -+- LZX compressor by Matthew Russotto -+- Quantum decompressor by Matthew Russotto -+- old inflate decompressor by Dirk Stoecker / InfoZIP team -+- Huffman table builder adapted from unlzx by Dave Tritscher -+- LZX decompressor fixes by Jae Jung and Igor Glucksmann -+- Debianisation by Markus Sinner -+- Quantum decompressor fix by Larry Frieson -diff --git a/libclamav/libmspack-0.4alpha/COPYING.LIB b/libclamav/libmspack-0.4alpha/COPYING.LIB -new file mode 100644 -index 000000000000..b1e3f5a26387 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/COPYING.LIB -@@ -0,0 +1,504 @@ -+ GNU LESSER GENERAL PUBLIC LICENSE -+ Version 2.1, February 1999 -+ -+ Copyright (C) 1991, 1999 Free Software Foundation, Inc. -+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ Everyone is permitted to copy and distribute verbatim copies -+ of this license document, but changing it is not allowed. -+ -+[This is the first released version of the Lesser GPL. It also counts -+ as the successor of the GNU Library Public License, version 2, hence -+ the version number 2.1.] -+ -+ Preamble -+ -+ The licenses for most software are designed to take away your -+freedom to share and change it. By contrast, the GNU General Public -+Licenses are intended to guarantee your freedom to share and change -+free software--to make sure the software is free for all its users. -+ -+ This license, the Lesser General Public License, applies to some -+specially designated software packages--typically libraries--of the -+Free Software Foundation and other authors who decide to use it. You -+can use it too, but we suggest you first think carefully about whether -+this license or the ordinary General Public License is the better -+strategy to use in any particular case, based on the explanations below. -+ -+ When we speak of free software, we are referring to freedom of use, -+not price. Our General Public Licenses are designed to make sure that -+you have the freedom to distribute copies of free software (and charge -+for this service if you wish); that you receive source code or can get -+it if you want it; that you can change the software and use pieces of -+it in new free programs; and that you are informed that you can do -+these things. -+ -+ To protect your rights, we need to make restrictions that forbid -+distributors to deny you these rights or to ask you to surrender these -+rights. These restrictions translate to certain responsibilities for -+you if you distribute copies of the library or if you modify it. -+ -+ For example, if you distribute copies of the library, whether gratis -+or for a fee, you must give the recipients all the rights that we gave -+you. You must make sure that they, too, receive or can get the source -+code. If you link other code with the library, you must provide -+complete object files to the recipients, so that they can relink them -+with the library after making changes to the library and recompiling -+it. And you must show them these terms so they know their rights. -+ -+ We protect your rights with a two-step method: (1) we copyright the -+library, and (2) we offer you this license, which gives you legal -+permission to copy, distribute and/or modify the library. -+ -+ To protect each distributor, we want to make it very clear that -+there is no warranty for the free library. Also, if the library is -+modified by someone else and passed on, the recipients should know -+that what they have is not the original version, so that the original -+author's reputation will not be affected by problems that might be -+introduced by others. -+ -+ Finally, software patents pose a constant threat to the existence of -+any free program. We wish to make sure that a company cannot -+effectively restrict the users of a free program by obtaining a -+restrictive license from a patent holder. Therefore, we insist that -+any patent license obtained for a version of the library must be -+consistent with the full freedom of use specified in this license. -+ -+ Most GNU software, including some libraries, is covered by the -+ordinary GNU General Public License. This license, the GNU Lesser -+General Public License, applies to certain designated libraries, and -+is quite different from the ordinary General Public License. We use -+this license for certain libraries in order to permit linking those -+libraries into non-free programs. -+ -+ When a program is linked with a library, whether statically or using -+a shared library, the combination of the two is legally speaking a -+combined work, a derivative of the original library. The ordinary -+General Public License therefore permits such linking only if the -+entire combination fits its criteria of freedom. The Lesser General -+Public License permits more lax criteria for linking other code with -+the library. -+ -+ We call this license the "Lesser" General Public License because it -+does Less to protect the user's freedom than the ordinary General -+Public License. It also provides other free software developers Less -+of an advantage over competing non-free programs. These disadvantages -+are the reason we use the ordinary General Public License for many -+libraries. However, the Lesser license provides advantages in certain -+special circumstances. -+ -+ For example, on rare occasions, there may be a special need to -+encourage the widest possible use of a certain library, so that it becomes -+a de-facto standard. To achieve this, non-free programs must be -+allowed to use the library. A more frequent case is that a free -+library does the same job as widely used non-free libraries. In this -+case, there is little to gain by limiting the free library to free -+software only, so we use the Lesser General Public License. -+ -+ In other cases, permission to use a particular library in non-free -+programs enables a greater number of people to use a large body of -+free software. For example, permission to use the GNU C Library in -+non-free programs enables many more people to use the whole GNU -+operating system, as well as its variant, the GNU/Linux operating -+system. -+ -+ Although the Lesser General Public License is Less protective of the -+users' freedom, it does ensure that the user of a program that is -+linked with the Library has the freedom and the wherewithal to run -+that program using a modified version of the Library. -+ -+ The precise terms and conditions for copying, distribution and -+modification follow. Pay close attention to the difference between a -+"work based on the library" and a "work that uses the library". The -+former contains code derived from the library, whereas the latter must -+be combined with the library in order to run. -+ -+ GNU LESSER GENERAL PUBLIC LICENSE -+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION -+ -+ 0. This License Agreement applies to any software library or other -+program which contains a notice placed by the copyright holder or -+other authorized party saying it may be distributed under the terms of -+this Lesser General Public License (also called "this License"). -+Each licensee is addressed as "you". -+ -+ A "library" means a collection of software functions and/or data -+prepared so as to be conveniently linked with application programs -+(which use some of those functions and data) to form executables. -+ -+ The "Library", below, refers to any such software library or work -+which has been distributed under these terms. A "work based on the -+Library" means either the Library or any derivative work under -+copyright law: that is to say, a work containing the Library or a -+portion of it, either verbatim or with modifications and/or translated -+straightforwardly into another language. (Hereinafter, translation is -+included without limitation in the term "modification".) -+ -+ "Source code" for a work means the preferred form of the work for -+making modifications to it. For a library, complete source code means -+all the source code for all modules it contains, plus any associated -+interface definition files, plus the scripts used to control compilation -+and installation of the library. -+ -+ Activities other than copying, distribution and modification are not -+covered by this License; they are outside its scope. The act of -+running a program using the Library is not restricted, and output from -+such a program is covered only if its contents constitute a work based -+on the Library (independent of the use of the Library in a tool for -+writing it). Whether that is true depends on what the Library does -+and what the program that uses the Library does. -+ -+ 1. You may copy and distribute verbatim copies of the Library's -+complete source code as you receive it, in any medium, provided that -+you conspicuously and appropriately publish on each copy an -+appropriate copyright notice and disclaimer of warranty; keep intact -+all the notices that refer to this License and to the absence of any -+warranty; and distribute a copy of this License along with the -+Library. -+ -+ You may charge a fee for the physical act of transferring a copy, -+and you may at your option offer warranty protection in exchange for a -+fee. -+ -+ 2. You may modify your copy or copies of the Library or any portion -+of it, thus forming a work based on the Library, and copy and -+distribute such modifications or work under the terms of Section 1 -+above, provided that you also meet all of these conditions: -+ -+ a) The modified work must itself be a software library. -+ -+ b) You must cause the files modified to carry prominent notices -+ stating that you changed the files and the date of any change. -+ -+ c) You must cause the whole of the work to be licensed at no -+ charge to all third parties under the terms of this License. -+ -+ d) If a facility in the modified Library refers to a function or a -+ table of data to be supplied by an application program that uses -+ the facility, other than as an argument passed when the facility -+ is invoked, then you must make a good faith effort to ensure that, -+ in the event an application does not supply such function or -+ table, the facility still operates, and performs whatever part of -+ its purpose remains meaningful. -+ -+ (For example, a function in a library to compute square roots has -+ a purpose that is entirely well-defined independent of the -+ application. Therefore, Subsection 2d requires that any -+ application-supplied function or table used by this function must -+ be optional: if the application does not supply it, the square -+ root function must still compute square roots.) -+ -+These requirements apply to the modified work as a whole. If -+identifiable sections of that work are not derived from the Library, -+and can be reasonably considered independent and separate works in -+themselves, then this License, and its terms, do not apply to those -+sections when you distribute them as separate works. But when you -+distribute the same sections as part of a whole which is a work based -+on the Library, the distribution of the whole must be on the terms of -+this License, whose permissions for other licensees extend to the -+entire whole, and thus to each and every part regardless of who wrote -+it. -+ -+Thus, it is not the intent of this section to claim rights or contest -+your rights to work written entirely by you; rather, the intent is to -+exercise the right to control the distribution of derivative or -+collective works based on the Library. -+ -+In addition, mere aggregation of another work not based on the Library -+with the Library (or with a work based on the Library) on a volume of -+a storage or distribution medium does not bring the other work under -+the scope of this License. -+ -+ 3. You may opt to apply the terms of the ordinary GNU General Public -+License instead of this License to a given copy of the Library. To do -+this, you must alter all the notices that refer to this License, so -+that they refer to the ordinary GNU General Public License, version 2, -+instead of to this License. (If a newer version than version 2 of the -+ordinary GNU General Public License has appeared, then you can specify -+that version instead if you wish.) Do not make any other change in -+these notices. -+ -+ Once this change is made in a given copy, it is irreversible for -+that copy, so the ordinary GNU General Public License applies to all -+subsequent copies and derivative works made from that copy. -+ -+ This option is useful when you wish to copy part of the code of -+the Library into a program that is not a library. -+ -+ 4. You may copy and distribute the Library (or a portion or -+derivative of it, under Section 2) in object code or executable form -+under the terms of Sections 1 and 2 above provided that you accompany -+it with the complete corresponding machine-readable source code, which -+must be distributed under the terms of Sections 1 and 2 above on a -+medium customarily used for software interchange. -+ -+ If distribution of object code is made by offering access to copy -+from a designated place, then offering equivalent access to copy the -+source code from the same place satisfies the requirement to -+distribute the source code, even though third parties are not -+compelled to copy the source along with the object code. -+ -+ 5. A program that contains no derivative of any portion of the -+Library, but is designed to work with the Library by being compiled or -+linked with it, is called a "work that uses the Library". Such a -+work, in isolation, is not a derivative work of the Library, and -+therefore falls outside the scope of this License. -+ -+ However, linking a "work that uses the Library" with the Library -+creates an executable that is a derivative of the Library (because it -+contains portions of the Library), rather than a "work that uses the -+library". The executable is therefore covered by this License. -+Section 6 states terms for distribution of such executables. -+ -+ When a "work that uses the Library" uses material from a header file -+that is part of the Library, the object code for the work may be a -+derivative work of the Library even though the source code is not. -+Whether this is true is especially significant if the work can be -+linked without the Library, or if the work is itself a library. The -+threshold for this to be true is not precisely defined by law. -+ -+ If such an object file uses only numerical parameters, data -+structure layouts and accessors, and small macros and small inline -+functions (ten lines or less in length), then the use of the object -+file is unrestricted, regardless of whether it is legally a derivative -+work. (Executables containing this object code plus portions of the -+Library will still fall under Section 6.) -+ -+ Otherwise, if the work is a derivative of the Library, you may -+distribute the object code for the work under the terms of Section 6. -+Any executables containing that work also fall under Section 6, -+whether or not they are linked directly with the Library itself. -+ -+ 6. As an exception to the Sections above, you may also combine or -+link a "work that uses the Library" with the Library to produce a -+work containing portions of the Library, and distribute that work -+under terms of your choice, provided that the terms permit -+modification of the work for the customer's own use and reverse -+engineering for debugging such modifications. -+ -+ You must give prominent notice with each copy of the work that the -+Library is used in it and that the Library and its use are covered by -+this License. You must supply a copy of this License. If the work -+during execution displays copyright notices, you must include the -+copyright notice for the Library among them, as well as a reference -+directing the user to the copy of this License. Also, you must do one -+of these things: -+ -+ a) Accompany the work with the complete corresponding -+ machine-readable source code for the Library including whatever -+ changes were used in the work (which must be distributed under -+ Sections 1 and 2 above); and, if the work is an executable linked -+ with the Library, with the complete machine-readable "work that -+ uses the Library", as object code and/or source code, so that the -+ user can modify the Library and then relink to produce a modified -+ executable containing the modified Library. (It is understood -+ that the user who changes the contents of definitions files in the -+ Library will not necessarily be able to recompile the application -+ to use the modified definitions.) -+ -+ b) Use a suitable shared library mechanism for linking with the -+ Library. A suitable mechanism is one that (1) uses at run time a -+ copy of the library already present on the user's computer system, -+ rather than copying library functions into the executable, and (2) -+ will operate properly with a modified version of the library, if -+ the user installs one, as long as the modified version is -+ interface-compatible with the version that the work was made with. -+ -+ c) Accompany the work with a written offer, valid for at -+ least three years, to give the same user the materials -+ specified in Subsection 6a, above, for a charge no more -+ than the cost of performing this distribution. -+ -+ d) If distribution of the work is made by offering access to copy -+ from a designated place, offer equivalent access to copy the above -+ specified materials from the same place. -+ -+ e) Verify that the user has already received a copy of these -+ materials or that you have already sent this user a copy. -+ -+ For an executable, the required form of the "work that uses the -+Library" must include any data and utility programs needed for -+reproducing the executable from it. However, as a special exception, -+the materials to be distributed need not include anything that is -+normally distributed (in either source or binary form) with the major -+components (compiler, kernel, and so on) of the operating system on -+which the executable runs, unless that component itself accompanies -+the executable. -+ -+ It may happen that this requirement contradicts the license -+restrictions of other proprietary libraries that do not normally -+accompany the operating system. Such a contradiction means you cannot -+use both them and the Library together in an executable that you -+distribute. -+ -+ 7. You may place library facilities that are a work based on the -+Library side-by-side in a single library together with other library -+facilities not covered by this License, and distribute such a combined -+library, provided that the separate distribution of the work based on -+the Library and of the other library facilities is otherwise -+permitted, and provided that you do these two things: -+ -+ a) Accompany the combined library with a copy of the same work -+ based on the Library, uncombined with any other library -+ facilities. This must be distributed under the terms of the -+ Sections above. -+ -+ b) Give prominent notice with the combined library of the fact -+ that part of it is a work based on the Library, and explaining -+ where to find the accompanying uncombined form of the same work. -+ -+ 8. You may not copy, modify, sublicense, link with, or distribute -+the Library except as expressly provided under this License. Any -+attempt otherwise to copy, modify, sublicense, link with, or -+distribute the Library is void, and will automatically terminate your -+rights under this License. However, parties who have received copies, -+or rights, from you under this License will not have their licenses -+terminated so long as such parties remain in full compliance. -+ -+ 9. You are not required to accept this License, since you have not -+signed it. However, nothing else grants you permission to modify or -+distribute the Library or its derivative works. These actions are -+prohibited by law if you do not accept this License. Therefore, by -+modifying or distributing the Library (or any work based on the -+Library), you indicate your acceptance of this License to do so, and -+all its terms and conditions for copying, distributing or modifying -+the Library or works based on it. -+ -+ 10. Each time you redistribute the Library (or any work based on the -+Library), the recipient automatically receives a license from the -+original licensor to copy, distribute, link with or modify the Library -+subject to these terms and conditions. You may not impose any further -+restrictions on the recipients' exercise of the rights granted herein. -+You are not responsible for enforcing compliance by third parties with -+this License. -+ -+ 11. If, as a consequence of a court judgment or allegation of patent -+infringement or for any other reason (not limited to patent issues), -+conditions are imposed on you (whether by court order, agreement or -+otherwise) that contradict the conditions of this License, they do not -+excuse you from the conditions of this License. If you cannot -+distribute so as to satisfy simultaneously your obligations under this -+License and any other pertinent obligations, then as a consequence you -+may not distribute the Library at all. For example, if a patent -+license would not permit royalty-free redistribution of the Library by -+all those who receive copies directly or indirectly through you, then -+the only way you could satisfy both it and this License would be to -+refrain entirely from distribution of the Library. -+ -+If any portion of this section is held invalid or unenforceable under any -+particular circumstance, the balance of the section is intended to apply, -+and the section as a whole is intended to apply in other circumstances. -+ -+It is not the purpose of this section to induce you to infringe any -+patents or other property right claims or to contest validity of any -+such claims; this section has the sole purpose of protecting the -+integrity of the free software distribution system which is -+implemented by public license practices. Many people have made -+generous contributions to the wide range of software distributed -+through that system in reliance on consistent application of that -+system; it is up to the author/donor to decide if he or she is willing -+to distribute software through any other system and a licensee cannot -+impose that choice. -+ -+This section is intended to make thoroughly clear what is believed to -+be a consequence of the rest of this License. -+ -+ 12. If the distribution and/or use of the Library is restricted in -+certain countries either by patents or by copyrighted interfaces, the -+original copyright holder who places the Library under this License may add -+an explicit geographical distribution limitation excluding those countries, -+so that distribution is permitted only in or among countries not thus -+excluded. In such case, this License incorporates the limitation as if -+written in the body of this License. -+ -+ 13. The Free Software Foundation may publish revised and/or new -+versions of the Lesser General Public License from time to time. -+Such new versions will be similar in spirit to the present version, -+but may differ in detail to address new problems or concerns. -+ -+Each version is given a distinguishing version number. If the Library -+specifies a version number of this License which applies to it and -+"any later version", you have the option of following the terms and -+conditions either of that version or of any later version published by -+the Free Software Foundation. If the Library does not specify a -+license version number, you may choose any version ever published by -+the Free Software Foundation. -+ -+ 14. If you wish to incorporate parts of the Library into other free -+programs whose distribution conditions are incompatible with these, -+write to the author to ask for permission. For software which is -+copyrighted by the Free Software Foundation, write to the Free -+Software Foundation; we sometimes make exceptions for this. Our -+decision will be guided by the two goals of preserving the free status -+of all derivatives of our free software and of promoting the sharing -+and reuse of software generally. -+ -+ NO WARRANTY -+ -+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. -+ -+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -+DAMAGES. -+ -+ END OF TERMS AND CONDITIONS -+ -+ How to Apply These Terms to Your New Libraries -+ -+ If you develop a new library, and you want it to be of the greatest -+possible use to the public, we recommend making it free software that -+everyone can redistribute and change. You can do so by permitting -+redistribution under these terms (or, alternatively, under the terms of the -+ordinary General Public License). -+ -+ To apply these terms, attach the following notices to the library. It is -+safest to attach them to the start of each source file to most effectively -+convey the exclusion of warranty; and each file should have at least the -+"copyright" line and a pointer to where the full notice is found. -+ -+ -+ Copyright (C) -+ -+ This library is free software; you can redistribute it and/or -+ modify it under the terms of the GNU Lesser General Public -+ License as published by the Free Software Foundation; either -+ version 2.1 of the License, or (at your option) any later version. -+ -+ This library is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Lesser General Public License for more details. -+ -+ You should have received a copy of the GNU Lesser General Public -+ License along with this library; if not, write to the Free Software -+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -+ -+Also add information on how to contact you by electronic and paper mail. -+ -+You should also get your employer (if you work as a programmer) or your -+school, if any, to sign a "copyright disclaimer" for the library, if -+necessary. Here is a sample; alter the names: -+ -+ Yoyodyne, Inc., hereby disclaims all copyright interest in the -+ library `Frob' (a library for tweaking knobs) written by James Random Hacker. -+ -+ , 1 April 1990 -+ Ty Coon, President of Vice -+ -+That's all there is to it! -+ -+ -diff --git a/libclamav/libmspack-0.4alpha/ChangeLog b/libclamav/libmspack-0.4alpha/ChangeLog -new file mode 100644 -index 000000000000..2d3cf198d499 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/ChangeLog -@@ -0,0 +1,491 @@ -+2013-05-27 Stuart Caie -+ -+ * test/oabx.c: added new example command for unpacking OAB files. -+ -+2013-05-17 Stuart Caie -+ -+ * mspack.h: Support for decompressing a new file format, the Exchange -+ Offline Address Book (OAB). Thanks to David Woodhouse for writing -+ the implementation. I've bumped the version to 0.4alpha in celebration. -+ -+2012-04-15 Stuart Caie -+ -+ * chmd_read_headers(): More thorough validation of CHM header values. -+ Thanks to Sergei Trofimovich for finding sample files. -+ -+ * read_reset_table(): Better test for overflow. Thanks again to -+ Sergei Trofimovich for generating a good example. -+ -+ * test/chminfo.c: this test program reads the reset table by itself -+ and was also susceptible to the same overflow problems. -+ -+2012-03-16 Stuart Caie -+ -+ * Makefile.am, configure.ac: make the GCC warning flags conditional -+ on using the GCC compiler. Thanks to Dagobert Michelsen for letting -+ me know. -+ -+2011-11-25 Stuart Caie -+ -+ * lzxd_decompress(): Prevent matches that go beyond the start -+ of the LZX stream. Thanks to Sergei Trofimovich for testing -+ with valgrind and finding a corrupt sample file that exercises -+ this scenario. -+ -+2011-11-23 Stuart Caie -+ -+ * chmd_fast_find(): add a simple check against infinite PGML -+ loops. Thanks to Sergei Trofimovich for finding sample files. -+ Multi-step PGML or PGMI infinite loops remain possible. -+ -+2011-06-17 Stuart Caie -+ -+ * read_reset_table(): wasn't reading the right offset for getting -+ the LZX uncompressed length. Thanks to Sergei Trofimovich for -+ finding the bug. -+ -+2011-05-31 Stuart Caie -+ -+ * kwajd.c, mszipd.c: KWAJ type 4 files (MSZIP) are now supported. -+ Thanks to Clive Turvey for sending me the format details. -+ -+ * doc/szdd_kwaj_format.html: Updated documentation to cover -+ KWAJ's MSZIP compression. -+ -+2011-05-11 Stuart Caie -+ -+ * cabd_find(): rethought how large vs small file support is -+ handled, as users were getting "library not compiled to support -+ large files" message on some small files. Now checks for actual -+ off_t overflow, rather than trying to preempt it. -+ -+2011-05-10: Stuart Caie -+ -+ * chmd.c: implemented fast_find() -+ -+ * test/chmx.c: removed the multiple extraction orders, now it just -+ extracts in the fastest order -+ -+ * test/chmd_order.c: new program added to test that different -+ extraction orders don't affect the results of extraction -+ -+ * test/chmd_find.c: new program to test that fast_find() works. -+ Either supply your own filename to find, or it will try finding -+ every file in the CHM. -+ -+ * configure.ac: because CHM fast find requires case-insensitive -+ comparisons, tolower() or towlower() are used where possible. -+ These functions and their headers are checked for. -+ -+ * mspack.h: exposed struct mschmd_sec_mscompressed's spaninfo -+ and struct mschmd_header's first_pmgl, last_pmgl and chunk_cache -+ to the world. Check that the CHM decoder version is v2 or higher -+ before using them. -+ -+ * system.c: set CHM decoder version to v2 -+ -+2011-04-27: Stuart Caie -+ -+ * many files: Made C++ compilers much happier with libmspack. -+ Changed char * to const char * where possible. -+ -+ * mspack.h: Changed user-supplied char * to const char *. -+ Unless you've written your own mspack_system implementation, -+ you will likely be unaffected. -+ If you have written your own mspack_system implementation: -+ 1: change open() so it takes a const char *filename -+ 2: change message() so it takes a const char *format -+ If you cast your function into the mspack_system struct, -+ you can change the cast instead of the function. -+ -+2011-04-27: Stuart Caie -+ -+ * Makefile.am: changed CFLAGS from "-Wsign-compare -Wconversion -+ -pedantic" to "-W -Wno-unused". This enables more warnings, and -+ disables these specific warnings which are now a hinderance. -+ -+2011-04-27: Stuart Caie -+ -+ * test/cabrip.c, test/chminfo.c: used macros from system.h for -+ printing offsets and reading 64-bit values, rather than -+ reinvent the wheel. -+ -+ * cabd_can_merge_folders(): declare variables at the start of -+ a block so older C compilers won't choke. -+ -+ * cabd_find(): avoid compiler complaints about non-initialised -+ variables. We know they'll get initialised before use, but the -+ compiler can't reverse a state machine to draw the same conclusion. -+ -+2011-04-26: Stuart Caie -+ -+ * configure.ac, mspack/system.h: Added a configure test to get -+ the size of off_t. If off_t is 8 bytes or more, we presume this -+ system has large file support. This fixes LFS detection for Fedora -+ x86_64 and Darwin/Mac OS X, neither of which declare FILESIZEBITS in -+ . It's not against the POSIX standard to do this: "A -+ definition of [FILESIZEBITS] shall be omitted from the -+ header on specific implementations where the corresponding value is -+ equal to or greater than the stated minimum, but where the value can -+ vary depending on the file to which it is applied." -+ (http://pubs.opengroup.org/onlinepubs/009695399/basedefs/limits.h.html) -+ Thanks to Edward Sheldrake for the patch. -+ -+2011-04-26: Stuart Caie -+ -+ * chmd.c: all 64-bit integer reads are now consolidated into -+ the read_off64() function -+ -+ * chmd_read_headers(): this function has been made resilient -+ against accessing memory past the end of a chunk. Thanks to -+ Sergei Trofimovich for sending me examples and analysis. -+ -+ * chmd_init_decomp(): this function now reads the SpanInfo file -+ if the ResetTable file isn't available, it also checks that each -+ system file it needs is large enough before accessing it, and -+ some of its code has been split into several new functions: -+ find_sys_file(), read_reset_table() and read_spaninfo() -+ -+2011-04-26: Stuart Caie -+ -+ * mspack.h, chmd.c: now reads the SpanInfo system file if the -+ ResetTable file isn't available. This adds a new spaninfo pointer -+ into struct mschmd_sec_mscompressed -+ -+2011-04-26: Stuart Caie -+ -+ * test/chminfo.c: more sanity checks for corrupted CHM files where -+ entries go past the end of a PGML/PGMI chunk, thanks to -+ Sergei Trofimovich for sending me examples and analysis. -+ -+2011-04-25: Stuart Caie -+ -+ * cabd_merge(): Drew D'Addesio showed me spanning cabinets which -+ don't have all the CFFILE entries they should, but otherwise have -+ all necessary data for extraction. Changed the merging folders -+ test to be less strict; if folders don't exactly match, warn which -+ files are missing, but allow merging if at least one necessary -+ file is present. -+ -+2010-09-24: Stuart Caie -+ -+ * readhuff.h: Don't let build_decode_table() allow empty trees. -+ It's meant to be special case just for the LZX length tree, so -+ move that logic out to the LZX code. Thanks to Danny Kroshin for -+ discovering the bug. -+ -+ * lzxd.c: Allow empty length trees, but not other trees. If -+ the length tree is empty, fail if asked to decode a length symbol. -+ Again, thanks to Danny Kroshin for discovering the bug. -+ -+2010-09-20: Stuart Caie -+ -+ * Makefile.am: Set EXTRA_DIST so it doesn't include .svn -+ directories in the distribution, but does include docs. -+ -+2010-09-20: Stuart Caie -+ -+ * Makefile.am, configure.ac: Use modern auto* practises; turn on -+ automake silent rules where possible, use "m4" directory for libtool -+ macros, use LT_INIT instead of AC_PROG_LIBTOOL and use AM_CPPFLAGS -+ instead of INCLUDES. Thanks to Sergei Trofimovich for the patch. -+ -+2010-09-15: Stuart Caie -+ -+ * many files: Made the code compile with C++ -+ - Renamed all 'this' variables/parameters to 'self' -+ - Added casts to all memory allocations. -+ - Added extern "C" to header files with extern declarations. -+ - Made system.c include system.h. -+ - Changed the K&R-style headers to ANSI-style headers in md5.c -+ -+2010-08-04: Stuart Caie -+ -+ * many files: removed unnecessary include -+ -+2010-07-19: Stuart Caie -+ -+ * cabd_md5.c, chmd_md5.c: Replace writing files to disk then -+ MD5summing them, with an MD5summer built into mspack_system. -+ Much, much faster results. -+ -+ * qtmd_decompress(): Robert Riebisch pointed out a Quantum -+ data integrity check that could never be tripped, because -+ frame_todo is unsigned, so it will never be decremented -+ below zero. Replaced the check with one that assumes that -+ decrementing past zero wraps frame_todo round to a number -+ more than its maximum value (QTM_FRAME_SIZE). -+ -+2010-07-18: Stuart Caie -+ -+ * cabd.c: Special logic to pass cabd_sys_read() errors back -+ to cabd_extract() wasn't compatible with the decompressor -+ logic of returning the same error repeatedly once unpacking -+ fails. This meant that if decompressing failed because of -+ a read error, then the next file in the same folder would -+ come back as "no error", but the decompressed wouldn't have -+ even attempted to decompress the file. Added a new state -+ variable, read_error, with the same lifespan as a decompressor, -+ to pass the underlying reason for MSPACK_ERR_READ errors back. -+ -+ * mszipd.c: improve MS-ZIP recovery by saving all the bytes -+ decoded prior to a block failing. This requires remembering -+ how far we got through the block, so the code has been made -+ slightly slower (about 0.003 seconds slower per gigabyte -+ unpacked) by removing the local variable window_posn -+ and keeping it in the state structure instead. -+ -+2010-07-16: Stuart Caie -+ -+ * Makefile.am: strange interactions. When -std=c99 is used, -+ my Ubuntu's (libc6-dev 2.11.1-0ubuntu7.2) does NOT -+ define fseeko() unless _LARGEFILE_SOURCE is also defined. But -+ configure always uses -std=gnu99, not -std=c99, so its test -+ determines _LARGEFILE_SOURCE isn't needed but HAVE_FSEEKO is -+ true. The implicit fseeko definition has a 32-bit rather than -+ 64-bit offset, which means the mode parameter is interpreted -+ as part of the offset, and the mode is taken from the stack, -+ which is generally 0 (SEEK_SET). This breaks all SEEK_CURs. -+ The code works fine when -std=c99 is not set, so just remove -+ it for the time being. -+ -+2010-07-12: Stuart Caie -+ -+ * system.c: Reject reading/writing a negative number of bytes. -+ -+ * chmd.c: allow zero-length files to be seen. Previously they were -+ skipped because they were mistaken for directory entries. -+ -+2010-07-08: Stuart Caie -+ -+ * qtmd.c: Larry Frieson found an important bug in the Quantum -+ decoder. Window wraps flush all unwritten data to disk. -+ However, sometimes less data is needed, which makes -+ out_bytes negative, which is then passed to write(). Some -+ write() implementations treat negative sizes it as a large -+ positive integer and segfault trying to write the buffer. -+ -+ * Makefile.am, test/*.c: fixed automake file so that the -+ package passes a "make distcheck". -+ -+2010-07-07: Stuart Caie -+ -+ * doc/szdd_kwaj_format.html: explain SZDD/KWAJ file format. -+ -+ * lzssd.c: fixed SZDD decompression bugs. -+ -+ * test/chmd_compare: Add scripts for comparing chmd_md5 against -+ Microsoft's own code. -+ -+ * test/chmd_md5.c: remove the need to decompress everything -+ twice, as this is already in chmx.c if needed. -+ -+2010-07-06: Stuart Caie -+ -+ * many files: added SZDD and KWAJ decompression support. -+ -+2010-06-18: Stuart Caie -+ -+ * system.h: expanded the test for 64-bit largefile support so -+ it also works on 64-bit native operating systems where you -+ don't have to define _FILE_OFFSET_BITS. -+ -+2010-06-17: Stuart Caie -+ -+ * libmspack.pc.in: Added pkg-config support. Thanks to -+ Patrice Dumas for the patch. -+ -+2010-06-14: Stuart Caie -+ -+ * qtmd.c, lzxd.c, mszipd.c: created new headers, readbits.h and -+ readhuff.h, which bundle up the bit-reading and huffman-reading -+ code found in the MSZIP, LZX and Quantum decoders. -+ -+2010-06-11: Stuart Caie -+ -+ * qtmd_static_init(): Removed function in favour of static const -+ tables, same rationale as for lzxd_static_init(). -+ -+ * qtmd_read_input(), zipd_read_input(): After testing against my -+ set of CABs from the wild, I've found both these functions _need_ -+ an extra EOF flag, like lzxd_read_input() has. So I've added -+ it. This means CABs get decoded properly AND there's no reading -+ fictional bytes. -+ -+2010-06-03: Stuart Caie -+ -+ * test/cabd_md5.c: updated this so it has better output and -+ doesn't need to be in the same directory as the files for multi- -+ part sets. -+ -+2010-05-20: Stuart Caie -+ -+ * qtmd_read_input(), zipd_read_input(): Both these functions are -+ essentially copies of lzxd_read_input(), but that has a feature -+ they don't have - an extra EOF flag. So if EOF is -+ encountered (sys->read() returns 0 bytes), these don't pass on the -+ error. Their respective bit-reading functions that called them -+ then go on to access at least one byte of the input buffer, which -+ doesn't exist as sys->read() returned 0. Thanks to Michael -+ Vidrevich for spotting this and providing a test case. -+ -+2010-05-20: Stuart Caie -+ -+ * system.h: It turns out no configure.ac tests are needed to -+ decide between __func__ and __FUNCTION__, so I put the standard -+ one (__func__) back into the D() macro, along with some -+ special-case ifdefs for old versions of GCC. -+ -+ * lzxd_static_init(): Removed function in favour of static const -+ tables. Jorge Lodos thinks it causes multithreading problems, I -+ disagree. However, there are speed benefits to declaring the -+ tables as static const. -+ -+ * cabd_init_decomp(): Fixed code which never runs but would write -+ to a null pointer if it could. Changed it to an assert() as it -+ will only trip if someone rewrites the internals of cabd.c. Thanks -+ to Jorge Lodos for finding it. -+ -+ * inflate(): Fixed an off-by-one error: if the LITERAL table -+ emitted code 286, this would read one byte past the end of -+ lit_extrabits[]. Thanks to Jorge Lodos for finding it. -+ -+2010-05-06: Stuart Caie -+ -+ * test/cabrip.c, test/chminfo.c: add fseeko() support -+ -+2009-06-01: Stuart Caie -+ -+ * README: clarify the extended license terms -+ -+ * doc, Makefile.am: make the doxygen makefile work when using -+ an alternate build directory -+ -+2006-09-20: Stuart Caie -+ -+ * system.h: I had a choice of adding more to configure.ac to -+ test for __func__ and __FUNCTION__, or just removing __FUNCTION__ -+ from the D() macro. I chose the latter. -+ -+ * Makefile.am: Now the --enable-debug in configure will actually -+ apply -DDEBUG to the sources. -+ -+2006-09-20: Stuart Caie -+ -+ * qtmd_decompress(): Fixed a major bug in the QTM decoder, as -+ reported by Tomasz Kojm last year. Removed the restriction on -+ window sizes as a result. Correctly decodes the XLVIEW cabinets. -+ -+2006-08-31: Stuart Caie -+ -+ * lzxd_decompress(): Two major bugs fixed. Firstly, the R0/R1/R2 -+ local variables weren't set to 1 after lzxd_reset_state(). -+ Secondly, the LZX decompression stream can sometimes become -+ odd-aligned (after an uncompressed block) and the next 16 bit -+ fetch needs to be split across two input buffers, ENSURE_BITS() -+ didn't cover this case. Many thanks to Igor Glucksmann for -+ discovering both these bugs. -+ -+2005-06-30: Stuart Caie -+ -+ * cabd_search(): fixed problems with searching files > 4GB for -+ cabinets. -+ -+2005-06-23: Stuart Caie -+ -+ * qtmd_init(): The QTM decoder is broken for QTM streams with a -+ window size less than the frame size. Until this is fixed, fail -+ to initialise QTM window sizes less than 15. Thanks to Tomasz Kojm -+ for finding the bug. -+ -+2005-03-22: Stuart Caie -+ -+ * system.h: now undefs "read", as the latest glibc defines read() -+ as a macro which messes everything up. Thanks to Ville Skyttä for -+ the update. -+ -+2005-03-14: Stuart Caie -+ -+ * test/multifh.c: write an mspack_system implementation that can -+ handle normal disk files, open file handles, open file descriptors -+ and raw memory all at the same time. -+ -+2005-02-24: Stuart Caie -+ -+ * chmd_read_headers(): avoid infinite loop when chmhs1_ChunkSize is -+ zero. Thanks to Serge Semashko for the research and discovery. -+ -+2005-02-18: Stuart Caie -+ -+ * mspack.h: renamed the "interface" parameter of mspack_version() to -+ "entity", as interface is a reserved word in C++. Thanks to Yuriy Z -+ for the discovery. -+ -+2004-12-09: Stuart Caie -+ -+ * lzss.h, szdd.h, szddd.h: more work on the SZDD/LZSS design. -+ -+2004-06-12: Stuart Caie -+ -+ * lzxd_static_init(): removed write to lzxd_extra_bits[52], thanks -+ to Nigel Horne from the ClamAV project. -+ -+2004-04-23: Stuart Caie -+ -+ * mspack.h: changed 'this' parameters to 'self' to allow compiling in -+ C++ compilers, thanks to Michal Cihar for the suggestion. -+ -+ * mspack.h, system.h, mspack.def, winbuild.sh: integrated some changes -+ from Petr Blahos to let libmspack build as a Win32 DLL. -+ -+ * chmd_fast_find(): added the first part of this code, and comments -+ sufficient to finish it :) -+ -+2004-04-08 Stuart Caie -+ -+ * test/chminfo.c: added a program for dumping useful data from CHM -+ files, e.g. index entries and reset tables. I wrote this a while ago -+ for investigating a corrupt cabinet, but I never committed it. -+ -+2004-03-26 Stuart Caie -+ -+ * test/cabd_memory.c: added a new test example which shows an -+ mspack_system implementation that reads and writes from memory only, -+ no file I/O. Even the source code has a little cab file embedded in it. -+ -+2004-03-10 Stuart Caie -+ -+ * cabd.c: updated the location of the CAB SDK. -+ -+ * cabd.c: changed a couple of MSPACK_ERR_READ errors not based on -+ read() failures into MSPACK_ERR_DATAFORMAT errors. -+ -+ * mszipd_decompress(): repair mode now aborts after writing a -+ repaired block if the error was a hard error (e.g. read error, out -+ of blocks, etc) -+ -+2004-03-08 Stuart Caie -+ -+ * Makefile.am: now builds and installs a versioned library. -+ -+ * mszipd.c: completed a new MS-ZIP and inflate implementation. -+ -+ * system.c: added mspack_version() and committed to a versioned -+ ABI for the library. -+ -+ * cabd.c: made mszip repair functionality work correctly. -+ -+ * cabd.c: now identifies invalid block headers -+ -+ * doc/: API documentation is now included with the library, not -+ just on the web. -+ -+ * chmd.c: fixed error messages and 64-bit debug output. -+ -+ * chmd.c: now also catches NULL files in section 1. -+ -+ * test/chmx.c: now acts more like cabextract. -+ -+2003-08-29 Stuart Caie -+ -+ * ChangeLog: started keeping a ChangeLog :) -diff --git a/libclamav/libmspack-0.4alpha/INSTALL b/libclamav/libmspack-0.4alpha/INSTALL -new file mode 100644 -index 000000000000..a1e89e18ad20 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/INSTALL -@@ -0,0 +1,370 @@ -+Installation Instructions -+************************* -+ -+Copyright (C) 1994-1996, 1999-2002, 2004-2011 Free Software Foundation, -+Inc. -+ -+ Copying and distribution of this file, with or without modification, -+are permitted in any medium without royalty provided the copyright -+notice and this notice are preserved. This file is offered as-is, -+without warranty of any kind. -+ -+Basic Installation -+================== -+ -+ Briefly, the shell commands `./configure; make; make install' should -+configure, build, and install this package. The following -+more-detailed instructions are generic; see the `README' file for -+instructions specific to this package. Some packages provide this -+`INSTALL' file but do not implement all of the features documented -+below. The lack of an optional feature in a given package is not -+necessarily a bug. More recommendations for GNU packages can be found -+in *note Makefile Conventions: (standards)Makefile Conventions. -+ -+ The `configure' shell script attempts to guess correct values for -+various system-dependent variables used during compilation. It uses -+those values to create a `Makefile' in each directory of the package. -+It may also create one or more `.h' files containing system-dependent -+definitions. Finally, it creates a shell script `config.status' that -+you can run in the future to recreate the current configuration, and a -+file `config.log' containing compiler output (useful mainly for -+debugging `configure'). -+ -+ It can also use an optional file (typically called `config.cache' -+and enabled with `--cache-file=config.cache' or simply `-C') that saves -+the results of its tests to speed up reconfiguring. Caching is -+disabled by default to prevent problems with accidental use of stale -+cache files. -+ -+ If you need to do unusual things to compile the package, please try -+to figure out how `configure' could check whether to do them, and mail -+diffs or instructions to the address given in the `README' so they can -+be considered for the next release. If you are using the cache, and at -+some point `config.cache' contains results you don't want to keep, you -+may remove or edit it. -+ -+ The file `configure.ac' (or `configure.in') is used to create -+`configure' by a program called `autoconf'. You need `configure.ac' if -+you want to change it or regenerate `configure' using a newer version -+of `autoconf'. -+ -+ The simplest way to compile this package is: -+ -+ 1. `cd' to the directory containing the package's source code and type -+ `./configure' to configure the package for your system. -+ -+ Running `configure' might take a while. While running, it prints -+ some messages telling which features it is checking for. -+ -+ 2. Type `make' to compile the package. -+ -+ 3. Optionally, type `make check' to run any self-tests that come with -+ the package, generally using the just-built uninstalled binaries. -+ -+ 4. Type `make install' to install the programs and any data files and -+ documentation. When installing into a prefix owned by root, it is -+ recommended that the package be configured and built as a regular -+ user, and only the `make install' phase executed with root -+ privileges. -+ -+ 5. Optionally, type `make installcheck' to repeat any self-tests, but -+ this time using the binaries in their final installed location. -+ This target does not install anything. Running this target as a -+ regular user, particularly if the prior `make install' required -+ root privileges, verifies that the installation completed -+ correctly. -+ -+ 6. You can remove the program binaries and object files from the -+ source code directory by typing `make clean'. To also remove the -+ files that `configure' created (so you can compile the package for -+ a different kind of computer), type `make distclean'. There is -+ also a `make maintainer-clean' target, but that is intended mainly -+ for the package's developers. If you use it, you may have to get -+ all sorts of other programs in order to regenerate files that came -+ with the distribution. -+ -+ 7. Often, you can also type `make uninstall' to remove the installed -+ files again. In practice, not all packages have tested that -+ uninstallation works correctly, even though it is required by the -+ GNU Coding Standards. -+ -+ 8. Some packages, particularly those that use Automake, provide `make -+ distcheck', which can by used by developers to test that all other -+ targets like `make install' and `make uninstall' work correctly. -+ This target is generally not run by end users. -+ -+Compilers and Options -+===================== -+ -+ Some systems require unusual options for compilation or linking that -+the `configure' script does not know about. Run `./configure --help' -+for details on some of the pertinent environment variables. -+ -+ You can give `configure' initial values for configuration parameters -+by setting variables in the command line or in the environment. Here -+is an example: -+ -+ ./configure CC=c99 CFLAGS=-g LIBS=-lposix -+ -+ *Note Defining Variables::, for more details. -+ -+Compiling For Multiple Architectures -+==================================== -+ -+ You can compile the package for more than one kind of computer at the -+same time, by placing the object files for each architecture in their -+own directory. To do this, you can use GNU `make'. `cd' to the -+directory where you want the object files and executables to go and run -+the `configure' script. `configure' automatically checks for the -+source code in the directory that `configure' is in and in `..'. This -+is known as a "VPATH" build. -+ -+ With a non-GNU `make', it is safer to compile the package for one -+architecture at a time in the source code directory. After you have -+installed the package for one architecture, use `make distclean' before -+reconfiguring for another architecture. -+ -+ On MacOS X 10.5 and later systems, you can create libraries and -+executables that work on multiple system types--known as "fat" or -+"universal" binaries--by specifying multiple `-arch' options to the -+compiler but only a single `-arch' option to the preprocessor. Like -+this: -+ -+ ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ -+ CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ -+ CPP="gcc -E" CXXCPP="g++ -E" -+ -+ This is not guaranteed to produce working output in all cases, you -+may have to build one architecture at a time and combine the results -+using the `lipo' tool if you have problems. -+ -+Installation Names -+================== -+ -+ By default, `make install' installs the package's commands under -+`/usr/local/bin', include files under `/usr/local/include', etc. You -+can specify an installation prefix other than `/usr/local' by giving -+`configure' the option `--prefix=PREFIX', where PREFIX must be an -+absolute file name. -+ -+ You can specify separate installation prefixes for -+architecture-specific files and architecture-independent files. If you -+pass the option `--exec-prefix=PREFIX' to `configure', the package uses -+PREFIX as the prefix for installing programs and libraries. -+Documentation and other data files still use the regular prefix. -+ -+ In addition, if you use an unusual directory layout you can give -+options like `--bindir=DIR' to specify different values for particular -+kinds of files. Run `configure --help' for a list of the directories -+you can set and what kinds of files go in them. In general, the -+default for these options is expressed in terms of `${prefix}', so that -+specifying just `--prefix' will affect all of the other directory -+specifications that were not explicitly provided. -+ -+ The most portable way to affect installation locations is to pass the -+correct locations to `configure'; however, many packages provide one or -+both of the following shortcuts of passing variable assignments to the -+`make install' command line to change installation locations without -+having to reconfigure or recompile. -+ -+ The first method involves providing an override variable for each -+affected directory. For example, `make install -+prefix=/alternate/directory' will choose an alternate location for all -+directory configuration variables that were expressed in terms of -+`${prefix}'. Any directories that were specified during `configure', -+but not in terms of `${prefix}', must each be overridden at install -+time for the entire installation to be relocated. The approach of -+makefile variable overrides for each directory variable is required by -+the GNU Coding Standards, and ideally causes no recompilation. -+However, some platforms have known limitations with the semantics of -+shared libraries that end up requiring recompilation when using this -+method, particularly noticeable in packages that use GNU Libtool. -+ -+ The second method involves providing the `DESTDIR' variable. For -+example, `make install DESTDIR=/alternate/directory' will prepend -+`/alternate/directory' before all installation names. The approach of -+`DESTDIR' overrides is not required by the GNU Coding Standards, and -+does not work on platforms that have drive letters. On the other hand, -+it does better at avoiding recompilation issues, and works well even -+when some directory options were not specified in terms of `${prefix}' -+at `configure' time. -+ -+Optional Features -+================= -+ -+ If the package supports it, you can cause programs to be installed -+with an extra prefix or suffix on their names by giving `configure' the -+option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. -+ -+ Some packages pay attention to `--enable-FEATURE' options to -+`configure', where FEATURE indicates an optional part of the package. -+They may also pay attention to `--with-PACKAGE' options, where PACKAGE -+is something like `gnu-as' or `x' (for the X Window System). The -+`README' should mention any `--enable-' and `--with-' options that the -+package recognizes. -+ -+ For packages that use the X Window System, `configure' can usually -+find the X include and library files automatically, but if it doesn't, -+you can use the `configure' options `--x-includes=DIR' and -+`--x-libraries=DIR' to specify their locations. -+ -+ Some packages offer the ability to configure how verbose the -+execution of `make' will be. For these packages, running `./configure -+--enable-silent-rules' sets the default to minimal output, which can be -+overridden with `make V=1'; while running `./configure -+--disable-silent-rules' sets the default to verbose, which can be -+overridden with `make V=0'. -+ -+Particular systems -+================== -+ -+ On HP-UX, the default C compiler is not ANSI C compatible. If GNU -+CC is not installed, it is recommended to use the following options in -+order to use an ANSI C compiler: -+ -+ ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" -+ -+and if that doesn't work, install pre-built binaries of GCC for HP-UX. -+ -+ HP-UX `make' updates targets which have the same time stamps as -+their prerequisites, which makes it generally unusable when shipped -+generated files such as `configure' are involved. Use GNU `make' -+instead. -+ -+ On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot -+parse its `' header file. The option `-nodtk' can be used as -+a workaround. If GNU CC is not installed, it is therefore recommended -+to try -+ -+ ./configure CC="cc" -+ -+and if that doesn't work, try -+ -+ ./configure CC="cc -nodtk" -+ -+ On Solaris, don't put `/usr/ucb' early in your `PATH'. This -+directory contains several dysfunctional programs; working variants of -+these programs are available in `/usr/bin'. So, if you need `/usr/ucb' -+in your `PATH', put it _after_ `/usr/bin'. -+ -+ On Haiku, software installed for all users goes in `/boot/common', -+not `/usr/local'. It is recommended to use the following options: -+ -+ ./configure --prefix=/boot/common -+ -+Specifying the System Type -+========================== -+ -+ There may be some features `configure' cannot figure out -+automatically, but needs to determine by the type of machine the package -+will run on. Usually, assuming the package is built to be run on the -+_same_ architectures, `configure' can figure that out, but if it prints -+a message saying it cannot guess the machine type, give it the -+`--build=TYPE' option. TYPE can either be a short name for the system -+type, such as `sun4', or a canonical name which has the form: -+ -+ CPU-COMPANY-SYSTEM -+ -+where SYSTEM can have one of these forms: -+ -+ OS -+ KERNEL-OS -+ -+ See the file `config.sub' for the possible values of each field. If -+`config.sub' isn't included in this package, then this package doesn't -+need to know the machine type. -+ -+ If you are _building_ compiler tools for cross-compiling, you should -+use the option `--target=TYPE' to select the type of system they will -+produce code for. -+ -+ If you want to _use_ a cross compiler, that generates code for a -+platform different from the build platform, you should specify the -+"host" platform (i.e., that on which the generated programs will -+eventually be run) with `--host=TYPE'. -+ -+Sharing Defaults -+================ -+ -+ If you want to set default values for `configure' scripts to share, -+you can create a site shell script called `config.site' that gives -+default values for variables like `CC', `cache_file', and `prefix'. -+`configure' looks for `PREFIX/share/config.site' if it exists, then -+`PREFIX/etc/config.site' if it exists. Or, you can set the -+`CONFIG_SITE' environment variable to the location of the site script. -+A warning: not all `configure' scripts look for a site script. -+ -+Defining Variables -+================== -+ -+ Variables not defined in a site shell script can be set in the -+environment passed to `configure'. However, some packages may run -+configure again during the build, and the customized values of these -+variables may be lost. In order to avoid this problem, you should set -+them in the `configure' command line, using `VAR=value'. For example: -+ -+ ./configure CC=/usr/local2/bin/gcc -+ -+causes the specified `gcc' to be used as the C compiler (unless it is -+overridden in the site shell script). -+ -+Unfortunately, this technique does not work for `CONFIG_SHELL' due to -+an Autoconf bug. Until the bug is fixed you can use this workaround: -+ -+ CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash -+ -+`configure' Invocation -+====================== -+ -+ `configure' recognizes the following options to control how it -+operates. -+ -+`--help' -+`-h' -+ Print a summary of all of the options to `configure', and exit. -+ -+`--help=short' -+`--help=recursive' -+ Print a summary of the options unique to this package's -+ `configure', and exit. The `short' variant lists options used -+ only in the top level, while the `recursive' variant lists options -+ also present in any nested packages. -+ -+`--version' -+`-V' -+ Print the version of Autoconf used to generate the `configure' -+ script, and exit. -+ -+`--cache-file=FILE' -+ Enable the cache: use and save the results of the tests in FILE, -+ traditionally `config.cache'. FILE defaults to `/dev/null' to -+ disable caching. -+ -+`--config-cache' -+`-C' -+ Alias for `--cache-file=config.cache'. -+ -+`--quiet' -+`--silent' -+`-q' -+ Do not print messages saying which checks are being made. To -+ suppress all normal output, redirect it to `/dev/null' (any error -+ messages will still be shown). -+ -+`--srcdir=DIR' -+ Look for the package's source code in directory DIR. Usually -+ `configure' can determine that directory automatically. -+ -+`--prefix=DIR' -+ Use DIR as the installation prefix. *note Installation Names:: -+ for more details, including other options available for fine-tuning -+ the installation locations. -+ -+`--no-create' -+`-n' -+ Run the configure checks, but stop before creating any output -+ files. -+ -+`configure' also accepts some other, not widely useful, options. Run -+`configure --help' for more details. -+ -diff --git a/libclamav/libmspack-0.4alpha/Makefile.am b/libclamav/libmspack-0.4alpha/Makefile.am -new file mode 100644 -index 000000000000..4f249275001a ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/Makefile.am -@@ -0,0 +1,100 @@ -+EXTRA_DIST = $(srcdir)/debian/* $(srcdir)/doc/* $(srcdir)/test/test_files/*/* -+pkgconfigdir = $(libdir)/pkgconfig -+pkgconfig_DATA = libmspack.pc -+ -+dist-hook: -+ -rm -f $(distdir)/*.la -+ -+ACLOCAL_AMFLAGS = -I m4 -+AM_CFLAGS = -+# add "-DMSPACK_NO_DEFAULT_SYSTEM" to remove default mspack_system -+if DEBUG -+AM_CFLAGS += -DDEBUG -+endif -+if GCC -+AM_CFLAGS += -Wall -W -Wno-unused -+endif -+AM_CPPFLAGS = -I$(top_srcdir)/mspack -I$(top_srcdir)/test -+ -+lib_LTLIBRARIES = libmspack.la -+include_HEADERS = mspack/mspack.h -+ -+noinst_LTLIBRARIES = libmscabd.la libmschmd.la -+noinst_PROGRAMS = test/cabd_md5 test/cabd_memory test/cabd_test \ -+ test/cabrip test/chmd_md5 test/chmx test/chminfo \ -+ test/multifh test/expand test/chmd_find \ -+ test/chmd_order test/oabx -+ -+libmspack_la_SOURCES = mspack/mspack.h \ -+ mspack/system.h mspack/system.c \ -+ mspack/cab.h mspack/cabc.c mspack/cabd.c \ -+ mspack/chm.h mspack/chmc.c mspack/chmd.c \ -+ mspack/hlp.h mspack/hlpc.c mspack/hlpd.c \ -+ mspack/lit.h mspack/litc.c mspack/litd.c \ -+ mspack/kwaj.h mspack/kwajc.c mspack/kwajd.c \ -+ mspack/szdd.h mspack/szddc.c mspack/szddd.c \ -+ mspack/oab.h mspack/oabc.c mspack/oabd.c \ -+ mspack/lzx.h mspack/lzxc.c mspack/lzxd.c \ -+ mspack/mszip.h mspack/mszipc.c mspack/mszipd.c \ -+ mspack/qtm.h mspack/qtmd.c \ -+ mspack/readbits.h mspack/readhuff.h \ -+ mspack/lzss.h mspack/lzssd.c \ -+ mspack/des.h mspack/sha.h \ -+ mspack/crc32.c mspack/crc32.h -+libmspack_la_LDFLAGS = -export-symbols-regex '^mspack_' -version-info 1:0:1 -+ -+libmscabd_la_SOURCES = mspack/mspack.h \ -+ mspack/system.h mspack/system.c \ -+ mspack/cab.h mspack/cabd.c \ -+ mspack/lzx.h mspack/lzxd.c \ -+ mspack/mszip.h mspack/mszipd.c \ -+ mspack/qtm.h mspack/qtmd.c \ -+ mspack/readbits.h mspack/readhuff.h -+libmscabd_la_LDFLAGS = -export-symbols-regex '^mspack_' -+ -+libmschmd_la_SOURCES = mspack/mspack.h \ -+ mspack/system.h mspack/system.c \ -+ mspack/chm.h mspack/chmd.c \ -+ mspack/lzx.h mspack/lzxd.c \ -+ mspack/readbits.h mspack/readhuff.h -+libmschmd_la_LDFLAGS = -export-symbols-regex '^mspack_' -+ -+test_chmx_SOURCES = test/chmx.c test/error.h libmschmd.la -+test_chmx_LDADD = libmschmd.la -+ -+test_chmd_md5_SOURCES = test/chmd_md5.c test/md5.c test/md5.h test/md5_fh.h \ -+ test/error.h libmschmd.la -+test_chmd_md5_LDADD = libmschmd.la -+ -+test_cabd_md5_SOURCES = test/cabd_md5.c test/md5.c test/md5.h test/md5_fh.h \ -+ test/error.h libmscabd.la -+test_cabd_md5_LDADD = libmscabd.la -+ -+test_cabd_test_SOURCES= test/cabd_test.c libmscabd.la -+test_cabd_test_LDADD = libmscabd.la -+ -+test_cabrip_SOURCES = test/cabrip.c libmscabd.la -+test_cabrip_LDADD = libmscabd.la -+ -+test_cabd_memory_SOURCES = test/cabd_memory.c libmscabd.la -+test_cabd_memory_LDADD = libmscabd.la -+ -+test_chminfo_SOURCES = test/chminfo.c libmschmd.la -+test_chminfo_LDADD = libmschmd.la -+ -+test_multifh_SOURCES = test/multifh.c libmscabd.la -+test_multifh_LDADD = libmscabd.la -+ -+test_expand_SOURCES = test/expand.c test/error.h libmspack.la -+test_expand_LDADD = libmspack.la -+ -+test_chmd_find_SOURCES = test/chmd_find.c test/error.h libmschmd.la -+test_chmd_find_LDADD = libmschmd.la -+ -+test_chmd_order_SOURCES = test/chmd_order.c test/md5.c test/md5.h test/md5_fh.h \ -+ test/error.h libmschmd.la -+test_chmd_order_LDADD = libmschmd.la -+ -+test_oabx_SOURCES = test/oabx.c test/md5.c test/md5.h test/md5_fh.h \ -+ test/error.h libmspack.la -+test_oabx_LDADD = libmspack.la -diff --git a/libclamav/libmspack-0.4alpha/Makefile.in b/libclamav/libmspack-0.4alpha/Makefile.in -new file mode 100644 -index 000000000000..2c1e02e9aa9c ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/Makefile.in -@@ -0,0 +1,1371 @@ -+# Makefile.in generated by automake 1.11.3 from Makefile.am. -+# @configure_input@ -+ -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 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. -+ -+@SET_MAKE@ -+ -+ -+ -+ -+VPATH = @srcdir@ -+pkgdatadir = $(datadir)/@PACKAGE@ -+pkgincludedir = $(includedir)/@PACKAGE@ -+pkglibdir = $(libdir)/@PACKAGE@ -+pkglibexecdir = $(libexecdir)/@PACKAGE@ -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) -+NORMAL_INSTALL = : -+PRE_INSTALL = : -+POST_INSTALL = : -+NORMAL_UNINSTALL = : -+PRE_UNINSTALL = : -+POST_UNINSTALL = : -+build_triplet = @build@ -+host_triplet = @host@ -+# add "-DMSPACK_NO_DEFAULT_SYSTEM" to remove default mspack_system -+@DEBUG_TRUE@am__append_1 = -DDEBUG -+@GCC_TRUE@am__append_2 = -Wall -W -Wno-unused -+noinst_PROGRAMS = test/cabd_md5$(EXEEXT) test/cabd_memory$(EXEEXT) \ -+ test/cabd_test$(EXEEXT) test/cabrip$(EXEEXT) \ -+ test/chmd_md5$(EXEEXT) test/chmx$(EXEEXT) \ -+ test/chminfo$(EXEEXT) test/multifh$(EXEEXT) \ -+ test/expand$(EXEEXT) test/chmd_find$(EXEEXT) \ -+ test/chmd_order$(EXEEXT) test/oabx$(EXEEXT) -+subdir = . -+DIST_COMMON = README $(am__configure_deps) $(include_HEADERS) \ -+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ -+ $(srcdir)/config.h.in $(srcdir)/libmspack.pc.in \ -+ $(top_srcdir)/configure $(top_srcdir)/doc/Doxyfile.in \ -+ $(top_srcdir)/doc/Makefile.in AUTHORS COPYING.LIB ChangeLog \ -+ INSTALL NEWS TODO config.guess config.sub depcomp install-sh \ -+ ltmain.sh missing -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ -+ $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ -+ $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ -+ $(top_srcdir)/configure.ac -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ -+ configure.lineno config.status.lineno -+mkinstalldirs = $(install_sh) -d -+CONFIG_HEADER = config.h -+CONFIG_CLEAN_FILES = doc/Makefile doc/Doxyfile libmspack.pc -+CONFIG_CLEAN_VPATH_FILES = -+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -+am__vpath_adj = case $$p in \ -+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ -+ *) f=$$p;; \ -+ esac; -+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -+am__install_max = 40 -+am__nobase_strip_setup = \ -+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -+am__nobase_strip = \ -+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -+am__nobase_list = $(am__nobase_strip_setup); \ -+ for p in $$list; do echo "$$p $$p"; done | \ -+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ -+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ -+ if (++n[$$2] == $(am__install_max)) \ -+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ -+ END { for (dir in files) print dir, files[dir] }' -+am__base_list = \ -+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ -+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -+am__uninstall_files_from_dir = { \ -+ test -z "$$files" \ -+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ -+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ -+ $(am__cd) "$$dir" && rm -f $$files; }; \ -+ } -+am__installdirs = "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" \ -+ "$(DESTDIR)$(includedir)" -+LTLIBRARIES = $(lib_LTLIBRARIES) $(noinst_LTLIBRARIES) -+libmscabd_la_LIBADD = -+am_libmscabd_la_OBJECTS = system.lo cabd.lo lzxd.lo mszipd.lo qtmd.lo -+libmscabd_la_OBJECTS = $(am_libmscabd_la_OBJECTS) -+AM_V_lt = $(am__v_lt_@AM_V@) -+am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) -+am__v_lt_0 = --silent -+libmscabd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(libmscabd_la_LDFLAGS) $(LDFLAGS) -o $@ -+libmschmd_la_LIBADD = -+am_libmschmd_la_OBJECTS = system.lo chmd.lo lzxd.lo -+libmschmd_la_OBJECTS = $(am_libmschmd_la_OBJECTS) -+libmschmd_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(libmschmd_la_LDFLAGS) $(LDFLAGS) -o $@ -+libmspack_la_LIBADD = -+am_libmspack_la_OBJECTS = system.lo cabc.lo cabd.lo chmc.lo chmd.lo \ -+ hlpc.lo hlpd.lo litc.lo litd.lo kwajc.lo kwajd.lo szddc.lo \ -+ szddd.lo oabc.lo oabd.lo lzxc.lo lzxd.lo mszipc.lo mszipd.lo \ -+ qtmd.lo lzssd.lo crc32.lo -+libmspack_la_OBJECTS = $(am_libmspack_la_OBJECTS) -+libmspack_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(libmspack_la_LDFLAGS) $(LDFLAGS) -o $@ -+PROGRAMS = $(noinst_PROGRAMS) -+am_test_cabd_md5_OBJECTS = cabd_md5.$(OBJEXT) md5.$(OBJEXT) -+test_cabd_md5_OBJECTS = $(am_test_cabd_md5_OBJECTS) -+test_cabd_md5_DEPENDENCIES = libmscabd.la -+am__dirstamp = $(am__leading_dot)dirstamp -+am_test_cabd_memory_OBJECTS = cabd_memory.$(OBJEXT) -+test_cabd_memory_OBJECTS = $(am_test_cabd_memory_OBJECTS) -+test_cabd_memory_DEPENDENCIES = libmscabd.la -+am_test_cabd_test_OBJECTS = cabd_test.$(OBJEXT) -+test_cabd_test_OBJECTS = $(am_test_cabd_test_OBJECTS) -+test_cabd_test_DEPENDENCIES = libmscabd.la -+am_test_cabrip_OBJECTS = cabrip.$(OBJEXT) -+test_cabrip_OBJECTS = $(am_test_cabrip_OBJECTS) -+test_cabrip_DEPENDENCIES = libmscabd.la -+am_test_chmd_find_OBJECTS = chmd_find.$(OBJEXT) -+test_chmd_find_OBJECTS = $(am_test_chmd_find_OBJECTS) -+test_chmd_find_DEPENDENCIES = libmschmd.la -+am_test_chmd_md5_OBJECTS = chmd_md5.$(OBJEXT) md5.$(OBJEXT) -+test_chmd_md5_OBJECTS = $(am_test_chmd_md5_OBJECTS) -+test_chmd_md5_DEPENDENCIES = libmschmd.la -+am_test_chmd_order_OBJECTS = chmd_order.$(OBJEXT) md5.$(OBJEXT) -+test_chmd_order_OBJECTS = $(am_test_chmd_order_OBJECTS) -+test_chmd_order_DEPENDENCIES = libmschmd.la -+am_test_chminfo_OBJECTS = chminfo.$(OBJEXT) -+test_chminfo_OBJECTS = $(am_test_chminfo_OBJECTS) -+test_chminfo_DEPENDENCIES = libmschmd.la -+am_test_chmx_OBJECTS = chmx.$(OBJEXT) -+test_chmx_OBJECTS = $(am_test_chmx_OBJECTS) -+test_chmx_DEPENDENCIES = libmschmd.la -+am_test_expand_OBJECTS = expand.$(OBJEXT) -+test_expand_OBJECTS = $(am_test_expand_OBJECTS) -+test_expand_DEPENDENCIES = libmspack.la -+am_test_multifh_OBJECTS = multifh.$(OBJEXT) -+test_multifh_OBJECTS = $(am_test_multifh_OBJECTS) -+test_multifh_DEPENDENCIES = libmscabd.la -+am_test_oabx_OBJECTS = oabx.$(OBJEXT) md5.$(OBJEXT) -+test_oabx_OBJECTS = $(am_test_oabx_OBJECTS) -+test_oabx_DEPENDENCIES = libmspack.la -+DEFAULT_INCLUDES = -I.@am__isrc@ -+depcomp = $(SHELL) $(top_srcdir)/depcomp -+am__depfiles_maybe = depfiles -+am__mv = mv -f -+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ -+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ -+ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ -+ $(AM_CFLAGS) $(CFLAGS) -+AM_V_CC = $(am__v_CC_@AM_V@) -+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) -+am__v_CC_0 = @echo " CC " $@; -+AM_V_at = $(am__v_at_@AM_V@) -+am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) -+am__v_at_0 = @ -+CCLD = $(CC) -+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ -+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ -+ $(AM_LDFLAGS) $(LDFLAGS) -o $@ -+AM_V_CCLD = $(am__v_CCLD_@AM_V@) -+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) -+am__v_CCLD_0 = @echo " CCLD " $@; -+AM_V_GEN = $(am__v_GEN_@AM_V@) -+am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) -+am__v_GEN_0 = @echo " GEN " $@; -+SOURCES = $(libmscabd_la_SOURCES) $(libmschmd_la_SOURCES) \ -+ $(libmspack_la_SOURCES) $(test_cabd_md5_SOURCES) \ -+ $(test_cabd_memory_SOURCES) $(test_cabd_test_SOURCES) \ -+ $(test_cabrip_SOURCES) $(test_chmd_find_SOURCES) \ -+ $(test_chmd_md5_SOURCES) $(test_chmd_order_SOURCES) \ -+ $(test_chminfo_SOURCES) $(test_chmx_SOURCES) \ -+ $(test_expand_SOURCES) $(test_multifh_SOURCES) \ -+ $(test_oabx_SOURCES) -+DIST_SOURCES = $(libmscabd_la_SOURCES) $(libmschmd_la_SOURCES) \ -+ $(libmspack_la_SOURCES) $(test_cabd_md5_SOURCES) \ -+ $(test_cabd_memory_SOURCES) $(test_cabd_test_SOURCES) \ -+ $(test_cabrip_SOURCES) $(test_chmd_find_SOURCES) \ -+ $(test_chmd_md5_SOURCES) $(test_chmd_order_SOURCES) \ -+ $(test_chminfo_SOURCES) $(test_chmx_SOURCES) \ -+ $(test_expand_SOURCES) $(test_multifh_SOURCES) \ -+ $(test_oabx_SOURCES) -+DATA = $(pkgconfig_DATA) -+HEADERS = $(include_HEADERS) -+ETAGS = etags -+CTAGS = ctags -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+distdir = $(PACKAGE)-$(VERSION) -+top_distdir = $(distdir) -+am__remove_distdir = \ -+ if test -d "$(distdir)"; then \ -+ find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ -+ && rm -rf "$(distdir)" \ -+ || { sleep 5 && rm -rf "$(distdir)"; }; \ -+ else :; fi -+DIST_ARCHIVES = $(distdir).tar.gz -+GZIP_ENV = --best -+distuninstallcheck_listfiles = find . -type f -print -+am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ -+ | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -+distcleancheck_listfiles = find . -type f -print -+ACLOCAL = @ACLOCAL@ -+AMTAR = @AMTAR@ -+AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ -+AR = @AR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ -+CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ -+CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CYGPATH_W = @CYGPATH_W@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+DLLTOOL = @DLLTOOL@ -+DSYMUTIL = @DSYMUTIL@ -+DUMPBIN = @DUMPBIN@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+EXEEXT = @EXEEXT@ -+FGREP = @FGREP@ -+GREP = @GREP@ -+INSTALL = @INSTALL@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+LD = @LD@ -+LDFLAGS = @LDFLAGS@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LIBTOOL = @LIBTOOL@ -+LIPO = @LIPO@ -+LN_S = @LN_S@ -+LTLIBOBJS = @LTLIBOBJS@ -+MAKEINFO = @MAKEINFO@ -+MANIFEST_TOOL = @MANIFEST_TOOL@ -+MKDIR_P = @MKDIR_P@ -+NM = @NM@ -+NMEDIT = @NMEDIT@ -+OBJDUMP = @OBJDUMP@ -+OBJEXT = @OBJEXT@ -+OTOOL = @OTOOL@ -+OTOOL64 = @OTOOL64@ -+PACKAGE = @PACKAGE@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_URL = @PACKAGE_URL@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ -+RANLIB = @RANLIB@ -+SED = @SED@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ -+VERSION = @VERSION@ -+abs_builddir = @abs_builddir@ -+abs_srcdir = @abs_srcdir@ -+abs_top_builddir = @abs_top_builddir@ -+abs_top_srcdir = @abs_top_srcdir@ -+ac_ct_AR = @ac_ct_AR@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+am__tar = @am__tar@ -+am__untar = @am__untar@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+builddir = @builddir@ -+datadir = @datadir@ -+datarootdir = @datarootdir@ -+docdir = @docdir@ -+dvidir = @dvidir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+htmldir = @htmldir@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localedir = @localedir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+pdfdir = @pdfdir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+psdir = @psdir@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+srcdir = @srcdir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ -+top_build_prefix = @top_build_prefix@ -+top_builddir = @top_builddir@ -+top_srcdir = @top_srcdir@ -+EXTRA_DIST = $(srcdir)/debian/* $(srcdir)/doc/* $(srcdir)/test/test_files/*/* -+pkgconfigdir = $(libdir)/pkgconfig -+pkgconfig_DATA = libmspack.pc -+ACLOCAL_AMFLAGS = -I m4 -+AM_CFLAGS = $(am__append_1) $(am__append_2) -+AM_CPPFLAGS = -I$(top_srcdir)/mspack -I$(top_srcdir)/test -+lib_LTLIBRARIES = libmspack.la -+include_HEADERS = mspack/mspack.h -+noinst_LTLIBRARIES = libmscabd.la libmschmd.la -+libmspack_la_SOURCES = mspack/mspack.h \ -+ mspack/system.h mspack/system.c \ -+ mspack/cab.h mspack/cabc.c mspack/cabd.c \ -+ mspack/chm.h mspack/chmc.c mspack/chmd.c \ -+ mspack/hlp.h mspack/hlpc.c mspack/hlpd.c \ -+ mspack/lit.h mspack/litc.c mspack/litd.c \ -+ mspack/kwaj.h mspack/kwajc.c mspack/kwajd.c \ -+ mspack/szdd.h mspack/szddc.c mspack/szddd.c \ -+ mspack/oab.h mspack/oabc.c mspack/oabd.c \ -+ mspack/lzx.h mspack/lzxc.c mspack/lzxd.c \ -+ mspack/mszip.h mspack/mszipc.c mspack/mszipd.c \ -+ mspack/qtm.h mspack/qtmd.c \ -+ mspack/readbits.h mspack/readhuff.h \ -+ mspack/lzss.h mspack/lzssd.c \ -+ mspack/des.h mspack/sha.h \ -+ mspack/crc32.c mspack/crc32.h -+ -+libmspack_la_LDFLAGS = -export-symbols-regex '^mspack_' -version-info 1:0:1 -+libmscabd_la_SOURCES = mspack/mspack.h \ -+ mspack/system.h mspack/system.c \ -+ mspack/cab.h mspack/cabd.c \ -+ mspack/lzx.h mspack/lzxd.c \ -+ mspack/mszip.h mspack/mszipd.c \ -+ mspack/qtm.h mspack/qtmd.c \ -+ mspack/readbits.h mspack/readhuff.h -+ -+libmscabd_la_LDFLAGS = -export-symbols-regex '^mspack_' -+libmschmd_la_SOURCES = mspack/mspack.h \ -+ mspack/system.h mspack/system.c \ -+ mspack/chm.h mspack/chmd.c \ -+ mspack/lzx.h mspack/lzxd.c \ -+ mspack/readbits.h mspack/readhuff.h -+ -+libmschmd_la_LDFLAGS = -export-symbols-regex '^mspack_' -+test_chmx_SOURCES = test/chmx.c test/error.h libmschmd.la -+test_chmx_LDADD = libmschmd.la -+test_chmd_md5_SOURCES = test/chmd_md5.c test/md5.c test/md5.h test/md5_fh.h \ -+ test/error.h libmschmd.la -+ -+test_chmd_md5_LDADD = libmschmd.la -+test_cabd_md5_SOURCES = test/cabd_md5.c test/md5.c test/md5.h test/md5_fh.h \ -+ test/error.h libmscabd.la -+ -+test_cabd_md5_LDADD = libmscabd.la -+test_cabd_test_SOURCES = test/cabd_test.c libmscabd.la -+test_cabd_test_LDADD = libmscabd.la -+test_cabrip_SOURCES = test/cabrip.c libmscabd.la -+test_cabrip_LDADD = libmscabd.la -+test_cabd_memory_SOURCES = test/cabd_memory.c libmscabd.la -+test_cabd_memory_LDADD = libmscabd.la -+test_chminfo_SOURCES = test/chminfo.c libmschmd.la -+test_chminfo_LDADD = libmschmd.la -+test_multifh_SOURCES = test/multifh.c libmscabd.la -+test_multifh_LDADD = libmscabd.la -+test_expand_SOURCES = test/expand.c test/error.h libmspack.la -+test_expand_LDADD = libmspack.la -+test_chmd_find_SOURCES = test/chmd_find.c test/error.h libmschmd.la -+test_chmd_find_LDADD = libmschmd.la -+test_chmd_order_SOURCES = test/chmd_order.c test/md5.c test/md5.h test/md5_fh.h \ -+ test/error.h libmschmd.la -+ -+test_chmd_order_LDADD = libmschmd.la -+test_oabx_SOURCES = test/oabx.c test/md5.c test/md5.h test/md5_fh.h \ -+ test/error.h libmspack.la -+ -+test_oabx_LDADD = libmspack.la -+all: config.h -+ $(MAKE) $(AM_MAKEFLAGS) all-am -+ -+.SUFFIXES: -+.SUFFIXES: .c .lo .o .obj -+am--refresh: Makefile -+ @: -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \ -+ $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \ -+ $(am__cd) $(top_srcdir) && \ -+ $(AUTOMAKE) --gnu Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ echo ' $(SHELL) ./config.status'; \ -+ $(SHELL) ./config.status;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ -+ esac; -+ -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ $(SHELL) ./config.status --recheck -+ -+$(top_srcdir)/configure: $(am__configure_deps) -+ $(am__cd) $(srcdir) && $(AUTOCONF) -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -+$(am__aclocal_m4_deps): -+ -+config.h: stamp-h1 -+ @if test ! -f $@; then rm -f stamp-h1; else :; fi -+ @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi -+ -+stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status -+ @rm -f stamp-h1 -+ cd $(top_builddir) && $(SHELL) ./config.status config.h -+$(srcdir)/config.h.in: $(am__configure_deps) -+ ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) -+ rm -f stamp-h1 -+ touch $@ -+ -+distclean-hdr: -+ -rm -f config.h stamp-h1 -+doc/Makefile: $(top_builddir)/config.status $(top_srcdir)/doc/Makefile.in -+ cd $(top_builddir) && $(SHELL) ./config.status $@ -+doc/Doxyfile: $(top_builddir)/config.status $(top_srcdir)/doc/Doxyfile.in -+ cd $(top_builddir) && $(SHELL) ./config.status $@ -+libmspack.pc: $(top_builddir)/config.status $(srcdir)/libmspack.pc.in -+ cd $(top_builddir) && $(SHELL) ./config.status $@ -+install-libLTLIBRARIES: $(lib_LTLIBRARIES) -+ @$(NORMAL_INSTALL) -+ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)" -+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ -+ list2=; for p in $$list; do \ -+ if test -f $$p; then \ -+ list2="$$list2 $$p"; \ -+ else :; fi; \ -+ done; \ -+ test -z "$$list2" || { \ -+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ -+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ -+ } -+ -+uninstall-libLTLIBRARIES: -+ @$(NORMAL_UNINSTALL) -+ @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ -+ for p in $$list; do \ -+ $(am__strip_dir) \ -+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ -+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ -+ done -+ -+clean-libLTLIBRARIES: -+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) -+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ -+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ -+ test "$$dir" != "$$p" || dir=.; \ -+ echo "rm -f \"$${dir}/so_locations\""; \ -+ rm -f "$${dir}/so_locations"; \ -+ done -+ -+clean-noinstLTLIBRARIES: -+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) -+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ -+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ -+ test "$$dir" != "$$p" || dir=.; \ -+ echo "rm -f \"$${dir}/so_locations\""; \ -+ rm -f "$${dir}/so_locations"; \ -+ done -+libmscabd.la: $(libmscabd_la_OBJECTS) $(libmscabd_la_DEPENDENCIES) $(EXTRA_libmscabd_la_DEPENDENCIES) -+ $(AM_V_CCLD)$(libmscabd_la_LINK) $(libmscabd_la_OBJECTS) $(libmscabd_la_LIBADD) $(LIBS) -+libmschmd.la: $(libmschmd_la_OBJECTS) $(libmschmd_la_DEPENDENCIES) $(EXTRA_libmschmd_la_DEPENDENCIES) -+ $(AM_V_CCLD)$(libmschmd_la_LINK) $(libmschmd_la_OBJECTS) $(libmschmd_la_LIBADD) $(LIBS) -+libmspack.la: $(libmspack_la_OBJECTS) $(libmspack_la_DEPENDENCIES) $(EXTRA_libmspack_la_DEPENDENCIES) -+ $(AM_V_CCLD)$(libmspack_la_LINK) -rpath $(libdir) $(libmspack_la_OBJECTS) $(libmspack_la_LIBADD) $(LIBS) -+ -+clean-noinstPROGRAMS: -+ @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ -+ echo " rm -f" $$list; \ -+ rm -f $$list || exit $$?; \ -+ test -n "$(EXEEXT)" || exit 0; \ -+ list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ -+ echo " rm -f" $$list; \ -+ rm -f $$list -+test/$(am__dirstamp): -+ @$(MKDIR_P) test -+ @: > test/$(am__dirstamp) -+test/cabd_md5$(EXEEXT): $(test_cabd_md5_OBJECTS) $(test_cabd_md5_DEPENDENCIES) $(EXTRA_test_cabd_md5_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/cabd_md5$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_cabd_md5_OBJECTS) $(test_cabd_md5_LDADD) $(LIBS) -+test/cabd_memory$(EXEEXT): $(test_cabd_memory_OBJECTS) $(test_cabd_memory_DEPENDENCIES) $(EXTRA_test_cabd_memory_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/cabd_memory$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_cabd_memory_OBJECTS) $(test_cabd_memory_LDADD) $(LIBS) -+test/cabd_test$(EXEEXT): $(test_cabd_test_OBJECTS) $(test_cabd_test_DEPENDENCIES) $(EXTRA_test_cabd_test_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/cabd_test$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_cabd_test_OBJECTS) $(test_cabd_test_LDADD) $(LIBS) -+test/cabrip$(EXEEXT): $(test_cabrip_OBJECTS) $(test_cabrip_DEPENDENCIES) $(EXTRA_test_cabrip_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/cabrip$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_cabrip_OBJECTS) $(test_cabrip_LDADD) $(LIBS) -+test/chmd_find$(EXEEXT): $(test_chmd_find_OBJECTS) $(test_chmd_find_DEPENDENCIES) $(EXTRA_test_chmd_find_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/chmd_find$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_chmd_find_OBJECTS) $(test_chmd_find_LDADD) $(LIBS) -+test/chmd_md5$(EXEEXT): $(test_chmd_md5_OBJECTS) $(test_chmd_md5_DEPENDENCIES) $(EXTRA_test_chmd_md5_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/chmd_md5$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_chmd_md5_OBJECTS) $(test_chmd_md5_LDADD) $(LIBS) -+test/chmd_order$(EXEEXT): $(test_chmd_order_OBJECTS) $(test_chmd_order_DEPENDENCIES) $(EXTRA_test_chmd_order_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/chmd_order$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_chmd_order_OBJECTS) $(test_chmd_order_LDADD) $(LIBS) -+test/chminfo$(EXEEXT): $(test_chminfo_OBJECTS) $(test_chminfo_DEPENDENCIES) $(EXTRA_test_chminfo_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/chminfo$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_chminfo_OBJECTS) $(test_chminfo_LDADD) $(LIBS) -+test/chmx$(EXEEXT): $(test_chmx_OBJECTS) $(test_chmx_DEPENDENCIES) $(EXTRA_test_chmx_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/chmx$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_chmx_OBJECTS) $(test_chmx_LDADD) $(LIBS) -+test/expand$(EXEEXT): $(test_expand_OBJECTS) $(test_expand_DEPENDENCIES) $(EXTRA_test_expand_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/expand$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_expand_OBJECTS) $(test_expand_LDADD) $(LIBS) -+test/multifh$(EXEEXT): $(test_multifh_OBJECTS) $(test_multifh_DEPENDENCIES) $(EXTRA_test_multifh_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/multifh$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_multifh_OBJECTS) $(test_multifh_LDADD) $(LIBS) -+test/oabx$(EXEEXT): $(test_oabx_OBJECTS) $(test_oabx_DEPENDENCIES) $(EXTRA_test_oabx_DEPENDENCIES) test/$(am__dirstamp) -+ @rm -f test/oabx$(EXEEXT) -+ $(AM_V_CCLD)$(LINK) $(test_oabx_OBJECTS) $(test_oabx_LDADD) $(LIBS) -+ -+mostlyclean-compile: -+ -rm -f *.$(OBJEXT) -+ -+distclean-compile: -+ -rm -f *.tab.c -+ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cabc.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cabd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cabd_md5.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cabd_memory.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cabd_test.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cabrip.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmc.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmd_find.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmd_md5.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmd_order.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chminfo.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/chmx.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc32.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/expand.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hlpc.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hlpd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kwajc.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/kwajd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/litc.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/litd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzssd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzxc.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lzxd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mszipc.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mszipd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/multifh.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oabc.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oabd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/oabx.Po@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/qtmd.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/system.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/szddc.Plo@am__quote@ -+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/szddd.Plo@am__quote@ -+ -+.c.o: -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< -+ -+.c.obj: -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` -+ -+.c.lo: -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< -+ -+system.lo: mspack/system.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT system.lo -MD -MP -MF $(DEPDIR)/system.Tpo -c -o system.lo `test -f 'mspack/system.c' || echo '$(srcdir)/'`mspack/system.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/system.Tpo $(DEPDIR)/system.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/system.c' object='system.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o system.lo `test -f 'mspack/system.c' || echo '$(srcdir)/'`mspack/system.c -+ -+cabd.lo: mspack/cabd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd.lo -MD -MP -MF $(DEPDIR)/cabd.Tpo -c -o cabd.lo `test -f 'mspack/cabd.c' || echo '$(srcdir)/'`mspack/cabd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabd.Tpo $(DEPDIR)/cabd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/cabd.c' object='cabd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd.lo `test -f 'mspack/cabd.c' || echo '$(srcdir)/'`mspack/cabd.c -+ -+lzxd.lo: mspack/lzxd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lzxd.lo -MD -MP -MF $(DEPDIR)/lzxd.Tpo -c -o lzxd.lo `test -f 'mspack/lzxd.c' || echo '$(srcdir)/'`mspack/lzxd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lzxd.Tpo $(DEPDIR)/lzxd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/lzxd.c' object='lzxd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lzxd.lo `test -f 'mspack/lzxd.c' || echo '$(srcdir)/'`mspack/lzxd.c -+ -+mszipd.lo: mspack/mszipd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mszipd.lo -MD -MP -MF $(DEPDIR)/mszipd.Tpo -c -o mszipd.lo `test -f 'mspack/mszipd.c' || echo '$(srcdir)/'`mspack/mszipd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mszipd.Tpo $(DEPDIR)/mszipd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/mszipd.c' object='mszipd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mszipd.lo `test -f 'mspack/mszipd.c' || echo '$(srcdir)/'`mspack/mszipd.c -+ -+qtmd.lo: mspack/qtmd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qtmd.lo -MD -MP -MF $(DEPDIR)/qtmd.Tpo -c -o qtmd.lo `test -f 'mspack/qtmd.c' || echo '$(srcdir)/'`mspack/qtmd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/qtmd.Tpo $(DEPDIR)/qtmd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/qtmd.c' object='qtmd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qtmd.lo `test -f 'mspack/qtmd.c' || echo '$(srcdir)/'`mspack/qtmd.c -+ -+chmd.lo: mspack/chmd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmd.lo -MD -MP -MF $(DEPDIR)/chmd.Tpo -c -o chmd.lo `test -f 'mspack/chmd.c' || echo '$(srcdir)/'`mspack/chmd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmd.Tpo $(DEPDIR)/chmd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/chmd.c' object='chmd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmd.lo `test -f 'mspack/chmd.c' || echo '$(srcdir)/'`mspack/chmd.c -+ -+cabc.lo: mspack/cabc.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabc.lo -MD -MP -MF $(DEPDIR)/cabc.Tpo -c -o cabc.lo `test -f 'mspack/cabc.c' || echo '$(srcdir)/'`mspack/cabc.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabc.Tpo $(DEPDIR)/cabc.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/cabc.c' object='cabc.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabc.lo `test -f 'mspack/cabc.c' || echo '$(srcdir)/'`mspack/cabc.c -+ -+chmc.lo: mspack/chmc.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmc.lo -MD -MP -MF $(DEPDIR)/chmc.Tpo -c -o chmc.lo `test -f 'mspack/chmc.c' || echo '$(srcdir)/'`mspack/chmc.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmc.Tpo $(DEPDIR)/chmc.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/chmc.c' object='chmc.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmc.lo `test -f 'mspack/chmc.c' || echo '$(srcdir)/'`mspack/chmc.c -+ -+hlpc.lo: mspack/hlpc.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hlpc.lo -MD -MP -MF $(DEPDIR)/hlpc.Tpo -c -o hlpc.lo `test -f 'mspack/hlpc.c' || echo '$(srcdir)/'`mspack/hlpc.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hlpc.Tpo $(DEPDIR)/hlpc.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/hlpc.c' object='hlpc.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hlpc.lo `test -f 'mspack/hlpc.c' || echo '$(srcdir)/'`mspack/hlpc.c -+ -+hlpd.lo: mspack/hlpd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT hlpd.lo -MD -MP -MF $(DEPDIR)/hlpd.Tpo -c -o hlpd.lo `test -f 'mspack/hlpd.c' || echo '$(srcdir)/'`mspack/hlpd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/hlpd.Tpo $(DEPDIR)/hlpd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/hlpd.c' object='hlpd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o hlpd.lo `test -f 'mspack/hlpd.c' || echo '$(srcdir)/'`mspack/hlpd.c -+ -+litc.lo: mspack/litc.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT litc.lo -MD -MP -MF $(DEPDIR)/litc.Tpo -c -o litc.lo `test -f 'mspack/litc.c' || echo '$(srcdir)/'`mspack/litc.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/litc.Tpo $(DEPDIR)/litc.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/litc.c' object='litc.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o litc.lo `test -f 'mspack/litc.c' || echo '$(srcdir)/'`mspack/litc.c -+ -+litd.lo: mspack/litd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT litd.lo -MD -MP -MF $(DEPDIR)/litd.Tpo -c -o litd.lo `test -f 'mspack/litd.c' || echo '$(srcdir)/'`mspack/litd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/litd.Tpo $(DEPDIR)/litd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/litd.c' object='litd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o litd.lo `test -f 'mspack/litd.c' || echo '$(srcdir)/'`mspack/litd.c -+ -+kwajc.lo: mspack/kwajc.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT kwajc.lo -MD -MP -MF $(DEPDIR)/kwajc.Tpo -c -o kwajc.lo `test -f 'mspack/kwajc.c' || echo '$(srcdir)/'`mspack/kwajc.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/kwajc.Tpo $(DEPDIR)/kwajc.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/kwajc.c' object='kwajc.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o kwajc.lo `test -f 'mspack/kwajc.c' || echo '$(srcdir)/'`mspack/kwajc.c -+ -+kwajd.lo: mspack/kwajd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT kwajd.lo -MD -MP -MF $(DEPDIR)/kwajd.Tpo -c -o kwajd.lo `test -f 'mspack/kwajd.c' || echo '$(srcdir)/'`mspack/kwajd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/kwajd.Tpo $(DEPDIR)/kwajd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/kwajd.c' object='kwajd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o kwajd.lo `test -f 'mspack/kwajd.c' || echo '$(srcdir)/'`mspack/kwajd.c -+ -+szddc.lo: mspack/szddc.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT szddc.lo -MD -MP -MF $(DEPDIR)/szddc.Tpo -c -o szddc.lo `test -f 'mspack/szddc.c' || echo '$(srcdir)/'`mspack/szddc.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/szddc.Tpo $(DEPDIR)/szddc.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/szddc.c' object='szddc.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o szddc.lo `test -f 'mspack/szddc.c' || echo '$(srcdir)/'`mspack/szddc.c -+ -+szddd.lo: mspack/szddd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT szddd.lo -MD -MP -MF $(DEPDIR)/szddd.Tpo -c -o szddd.lo `test -f 'mspack/szddd.c' || echo '$(srcdir)/'`mspack/szddd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/szddd.Tpo $(DEPDIR)/szddd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/szddd.c' object='szddd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o szddd.lo `test -f 'mspack/szddd.c' || echo '$(srcdir)/'`mspack/szddd.c -+ -+oabc.lo: mspack/oabc.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT oabc.lo -MD -MP -MF $(DEPDIR)/oabc.Tpo -c -o oabc.lo `test -f 'mspack/oabc.c' || echo '$(srcdir)/'`mspack/oabc.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/oabc.Tpo $(DEPDIR)/oabc.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/oabc.c' object='oabc.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o oabc.lo `test -f 'mspack/oabc.c' || echo '$(srcdir)/'`mspack/oabc.c -+ -+oabd.lo: mspack/oabd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT oabd.lo -MD -MP -MF $(DEPDIR)/oabd.Tpo -c -o oabd.lo `test -f 'mspack/oabd.c' || echo '$(srcdir)/'`mspack/oabd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/oabd.Tpo $(DEPDIR)/oabd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/oabd.c' object='oabd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o oabd.lo `test -f 'mspack/oabd.c' || echo '$(srcdir)/'`mspack/oabd.c -+ -+lzxc.lo: mspack/lzxc.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lzxc.lo -MD -MP -MF $(DEPDIR)/lzxc.Tpo -c -o lzxc.lo `test -f 'mspack/lzxc.c' || echo '$(srcdir)/'`mspack/lzxc.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lzxc.Tpo $(DEPDIR)/lzxc.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/lzxc.c' object='lzxc.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lzxc.lo `test -f 'mspack/lzxc.c' || echo '$(srcdir)/'`mspack/lzxc.c -+ -+mszipc.lo: mspack/mszipc.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mszipc.lo -MD -MP -MF $(DEPDIR)/mszipc.Tpo -c -o mszipc.lo `test -f 'mspack/mszipc.c' || echo '$(srcdir)/'`mspack/mszipc.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mszipc.Tpo $(DEPDIR)/mszipc.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/mszipc.c' object='mszipc.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mszipc.lo `test -f 'mspack/mszipc.c' || echo '$(srcdir)/'`mspack/mszipc.c -+ -+lzssd.lo: mspack/lzssd.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT lzssd.lo -MD -MP -MF $(DEPDIR)/lzssd.Tpo -c -o lzssd.lo `test -f 'mspack/lzssd.c' || echo '$(srcdir)/'`mspack/lzssd.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/lzssd.Tpo $(DEPDIR)/lzssd.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/lzssd.c' object='lzssd.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o lzssd.lo `test -f 'mspack/lzssd.c' || echo '$(srcdir)/'`mspack/lzssd.c -+ -+crc32.lo: mspack/crc32.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT crc32.lo -MD -MP -MF $(DEPDIR)/crc32.Tpo -c -o crc32.lo `test -f 'mspack/crc32.c' || echo '$(srcdir)/'`mspack/crc32.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/crc32.Tpo $(DEPDIR)/crc32.Plo -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mspack/crc32.c' object='crc32.lo' libtool=yes @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o crc32.lo `test -f 'mspack/crc32.c' || echo '$(srcdir)/'`mspack/crc32.c -+ -+cabd_md5.o: test/cabd_md5.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd_md5.o -MD -MP -MF $(DEPDIR)/cabd_md5.Tpo -c -o cabd_md5.o `test -f 'test/cabd_md5.c' || echo '$(srcdir)/'`test/cabd_md5.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabd_md5.Tpo $(DEPDIR)/cabd_md5.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/cabd_md5.c' object='cabd_md5.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd_md5.o `test -f 'test/cabd_md5.c' || echo '$(srcdir)/'`test/cabd_md5.c -+ -+cabd_md5.obj: test/cabd_md5.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd_md5.obj -MD -MP -MF $(DEPDIR)/cabd_md5.Tpo -c -o cabd_md5.obj `if test -f 'test/cabd_md5.c'; then $(CYGPATH_W) 'test/cabd_md5.c'; else $(CYGPATH_W) '$(srcdir)/test/cabd_md5.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabd_md5.Tpo $(DEPDIR)/cabd_md5.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/cabd_md5.c' object='cabd_md5.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd_md5.obj `if test -f 'test/cabd_md5.c'; then $(CYGPATH_W) 'test/cabd_md5.c'; else $(CYGPATH_W) '$(srcdir)/test/cabd_md5.c'; fi` -+ -+md5.o: test/md5.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5.o -MD -MP -MF $(DEPDIR)/md5.Tpo -c -o md5.o `test -f 'test/md5.c' || echo '$(srcdir)/'`test/md5.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/md5.c' object='md5.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5.o `test -f 'test/md5.c' || echo '$(srcdir)/'`test/md5.c -+ -+md5.obj: test/md5.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5.obj -MD -MP -MF $(DEPDIR)/md5.Tpo -c -o md5.obj `if test -f 'test/md5.c'; then $(CYGPATH_W) 'test/md5.c'; else $(CYGPATH_W) '$(srcdir)/test/md5.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/md5.Tpo $(DEPDIR)/md5.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/md5.c' object='md5.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5.obj `if test -f 'test/md5.c'; then $(CYGPATH_W) 'test/md5.c'; else $(CYGPATH_W) '$(srcdir)/test/md5.c'; fi` -+ -+cabd_memory.o: test/cabd_memory.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd_memory.o -MD -MP -MF $(DEPDIR)/cabd_memory.Tpo -c -o cabd_memory.o `test -f 'test/cabd_memory.c' || echo '$(srcdir)/'`test/cabd_memory.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabd_memory.Tpo $(DEPDIR)/cabd_memory.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/cabd_memory.c' object='cabd_memory.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd_memory.o `test -f 'test/cabd_memory.c' || echo '$(srcdir)/'`test/cabd_memory.c -+ -+cabd_memory.obj: test/cabd_memory.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd_memory.obj -MD -MP -MF $(DEPDIR)/cabd_memory.Tpo -c -o cabd_memory.obj `if test -f 'test/cabd_memory.c'; then $(CYGPATH_W) 'test/cabd_memory.c'; else $(CYGPATH_W) '$(srcdir)/test/cabd_memory.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabd_memory.Tpo $(DEPDIR)/cabd_memory.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/cabd_memory.c' object='cabd_memory.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd_memory.obj `if test -f 'test/cabd_memory.c'; then $(CYGPATH_W) 'test/cabd_memory.c'; else $(CYGPATH_W) '$(srcdir)/test/cabd_memory.c'; fi` -+ -+cabd_test.o: test/cabd_test.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd_test.o -MD -MP -MF $(DEPDIR)/cabd_test.Tpo -c -o cabd_test.o `test -f 'test/cabd_test.c' || echo '$(srcdir)/'`test/cabd_test.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabd_test.Tpo $(DEPDIR)/cabd_test.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/cabd_test.c' object='cabd_test.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd_test.o `test -f 'test/cabd_test.c' || echo '$(srcdir)/'`test/cabd_test.c -+ -+cabd_test.obj: test/cabd_test.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabd_test.obj -MD -MP -MF $(DEPDIR)/cabd_test.Tpo -c -o cabd_test.obj `if test -f 'test/cabd_test.c'; then $(CYGPATH_W) 'test/cabd_test.c'; else $(CYGPATH_W) '$(srcdir)/test/cabd_test.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabd_test.Tpo $(DEPDIR)/cabd_test.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/cabd_test.c' object='cabd_test.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabd_test.obj `if test -f 'test/cabd_test.c'; then $(CYGPATH_W) 'test/cabd_test.c'; else $(CYGPATH_W) '$(srcdir)/test/cabd_test.c'; fi` -+ -+cabrip.o: test/cabrip.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabrip.o -MD -MP -MF $(DEPDIR)/cabrip.Tpo -c -o cabrip.o `test -f 'test/cabrip.c' || echo '$(srcdir)/'`test/cabrip.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabrip.Tpo $(DEPDIR)/cabrip.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/cabrip.c' object='cabrip.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabrip.o `test -f 'test/cabrip.c' || echo '$(srcdir)/'`test/cabrip.c -+ -+cabrip.obj: test/cabrip.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT cabrip.obj -MD -MP -MF $(DEPDIR)/cabrip.Tpo -c -o cabrip.obj `if test -f 'test/cabrip.c'; then $(CYGPATH_W) 'test/cabrip.c'; else $(CYGPATH_W) '$(srcdir)/test/cabrip.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cabrip.Tpo $(DEPDIR)/cabrip.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/cabrip.c' object='cabrip.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o cabrip.obj `if test -f 'test/cabrip.c'; then $(CYGPATH_W) 'test/cabrip.c'; else $(CYGPATH_W) '$(srcdir)/test/cabrip.c'; fi` -+ -+chmd_find.o: test/chmd_find.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmd_find.o -MD -MP -MF $(DEPDIR)/chmd_find.Tpo -c -o chmd_find.o `test -f 'test/chmd_find.c' || echo '$(srcdir)/'`test/chmd_find.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmd_find.Tpo $(DEPDIR)/chmd_find.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chmd_find.c' object='chmd_find.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmd_find.o `test -f 'test/chmd_find.c' || echo '$(srcdir)/'`test/chmd_find.c -+ -+chmd_find.obj: test/chmd_find.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmd_find.obj -MD -MP -MF $(DEPDIR)/chmd_find.Tpo -c -o chmd_find.obj `if test -f 'test/chmd_find.c'; then $(CYGPATH_W) 'test/chmd_find.c'; else $(CYGPATH_W) '$(srcdir)/test/chmd_find.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmd_find.Tpo $(DEPDIR)/chmd_find.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chmd_find.c' object='chmd_find.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmd_find.obj `if test -f 'test/chmd_find.c'; then $(CYGPATH_W) 'test/chmd_find.c'; else $(CYGPATH_W) '$(srcdir)/test/chmd_find.c'; fi` -+ -+chmd_md5.o: test/chmd_md5.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmd_md5.o -MD -MP -MF $(DEPDIR)/chmd_md5.Tpo -c -o chmd_md5.o `test -f 'test/chmd_md5.c' || echo '$(srcdir)/'`test/chmd_md5.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmd_md5.Tpo $(DEPDIR)/chmd_md5.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chmd_md5.c' object='chmd_md5.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmd_md5.o `test -f 'test/chmd_md5.c' || echo '$(srcdir)/'`test/chmd_md5.c -+ -+chmd_md5.obj: test/chmd_md5.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmd_md5.obj -MD -MP -MF $(DEPDIR)/chmd_md5.Tpo -c -o chmd_md5.obj `if test -f 'test/chmd_md5.c'; then $(CYGPATH_W) 'test/chmd_md5.c'; else $(CYGPATH_W) '$(srcdir)/test/chmd_md5.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmd_md5.Tpo $(DEPDIR)/chmd_md5.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chmd_md5.c' object='chmd_md5.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmd_md5.obj `if test -f 'test/chmd_md5.c'; then $(CYGPATH_W) 'test/chmd_md5.c'; else $(CYGPATH_W) '$(srcdir)/test/chmd_md5.c'; fi` -+ -+chmd_order.o: test/chmd_order.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmd_order.o -MD -MP -MF $(DEPDIR)/chmd_order.Tpo -c -o chmd_order.o `test -f 'test/chmd_order.c' || echo '$(srcdir)/'`test/chmd_order.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmd_order.Tpo $(DEPDIR)/chmd_order.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chmd_order.c' object='chmd_order.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmd_order.o `test -f 'test/chmd_order.c' || echo '$(srcdir)/'`test/chmd_order.c -+ -+chmd_order.obj: test/chmd_order.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmd_order.obj -MD -MP -MF $(DEPDIR)/chmd_order.Tpo -c -o chmd_order.obj `if test -f 'test/chmd_order.c'; then $(CYGPATH_W) 'test/chmd_order.c'; else $(CYGPATH_W) '$(srcdir)/test/chmd_order.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmd_order.Tpo $(DEPDIR)/chmd_order.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chmd_order.c' object='chmd_order.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmd_order.obj `if test -f 'test/chmd_order.c'; then $(CYGPATH_W) 'test/chmd_order.c'; else $(CYGPATH_W) '$(srcdir)/test/chmd_order.c'; fi` -+ -+chminfo.o: test/chminfo.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chminfo.o -MD -MP -MF $(DEPDIR)/chminfo.Tpo -c -o chminfo.o `test -f 'test/chminfo.c' || echo '$(srcdir)/'`test/chminfo.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chminfo.Tpo $(DEPDIR)/chminfo.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chminfo.c' object='chminfo.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chminfo.o `test -f 'test/chminfo.c' || echo '$(srcdir)/'`test/chminfo.c -+ -+chminfo.obj: test/chminfo.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chminfo.obj -MD -MP -MF $(DEPDIR)/chminfo.Tpo -c -o chminfo.obj `if test -f 'test/chminfo.c'; then $(CYGPATH_W) 'test/chminfo.c'; else $(CYGPATH_W) '$(srcdir)/test/chminfo.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chminfo.Tpo $(DEPDIR)/chminfo.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chminfo.c' object='chminfo.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chminfo.obj `if test -f 'test/chminfo.c'; then $(CYGPATH_W) 'test/chminfo.c'; else $(CYGPATH_W) '$(srcdir)/test/chminfo.c'; fi` -+ -+chmx.o: test/chmx.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmx.o -MD -MP -MF $(DEPDIR)/chmx.Tpo -c -o chmx.o `test -f 'test/chmx.c' || echo '$(srcdir)/'`test/chmx.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmx.Tpo $(DEPDIR)/chmx.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chmx.c' object='chmx.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmx.o `test -f 'test/chmx.c' || echo '$(srcdir)/'`test/chmx.c -+ -+chmx.obj: test/chmx.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT chmx.obj -MD -MP -MF $(DEPDIR)/chmx.Tpo -c -o chmx.obj `if test -f 'test/chmx.c'; then $(CYGPATH_W) 'test/chmx.c'; else $(CYGPATH_W) '$(srcdir)/test/chmx.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/chmx.Tpo $(DEPDIR)/chmx.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/chmx.c' object='chmx.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o chmx.obj `if test -f 'test/chmx.c'; then $(CYGPATH_W) 'test/chmx.c'; else $(CYGPATH_W) '$(srcdir)/test/chmx.c'; fi` -+ -+expand.o: test/expand.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT expand.o -MD -MP -MF $(DEPDIR)/expand.Tpo -c -o expand.o `test -f 'test/expand.c' || echo '$(srcdir)/'`test/expand.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/expand.Tpo $(DEPDIR)/expand.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/expand.c' object='expand.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o expand.o `test -f 'test/expand.c' || echo '$(srcdir)/'`test/expand.c -+ -+expand.obj: test/expand.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT expand.obj -MD -MP -MF $(DEPDIR)/expand.Tpo -c -o expand.obj `if test -f 'test/expand.c'; then $(CYGPATH_W) 'test/expand.c'; else $(CYGPATH_W) '$(srcdir)/test/expand.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/expand.Tpo $(DEPDIR)/expand.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/expand.c' object='expand.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o expand.obj `if test -f 'test/expand.c'; then $(CYGPATH_W) 'test/expand.c'; else $(CYGPATH_W) '$(srcdir)/test/expand.c'; fi` -+ -+multifh.o: test/multifh.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT multifh.o -MD -MP -MF $(DEPDIR)/multifh.Tpo -c -o multifh.o `test -f 'test/multifh.c' || echo '$(srcdir)/'`test/multifh.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/multifh.Tpo $(DEPDIR)/multifh.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/multifh.c' object='multifh.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o multifh.o `test -f 'test/multifh.c' || echo '$(srcdir)/'`test/multifh.c -+ -+multifh.obj: test/multifh.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT multifh.obj -MD -MP -MF $(DEPDIR)/multifh.Tpo -c -o multifh.obj `if test -f 'test/multifh.c'; then $(CYGPATH_W) 'test/multifh.c'; else $(CYGPATH_W) '$(srcdir)/test/multifh.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/multifh.Tpo $(DEPDIR)/multifh.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/multifh.c' object='multifh.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o multifh.obj `if test -f 'test/multifh.c'; then $(CYGPATH_W) 'test/multifh.c'; else $(CYGPATH_W) '$(srcdir)/test/multifh.c'; fi` -+ -+oabx.o: test/oabx.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT oabx.o -MD -MP -MF $(DEPDIR)/oabx.Tpo -c -o oabx.o `test -f 'test/oabx.c' || echo '$(srcdir)/'`test/oabx.c -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/oabx.Tpo $(DEPDIR)/oabx.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/oabx.c' object='oabx.o' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o oabx.o `test -f 'test/oabx.c' || echo '$(srcdir)/'`test/oabx.c -+ -+oabx.obj: test/oabx.c -+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT oabx.obj -MD -MP -MF $(DEPDIR)/oabx.Tpo -c -o oabx.obj `if test -f 'test/oabx.c'; then $(CYGPATH_W) 'test/oabx.c'; else $(CYGPATH_W) '$(srcdir)/test/oabx.c'; fi` -+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/oabx.Tpo $(DEPDIR)/oabx.Po -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='test/oabx.c' object='oabx.obj' libtool=no @AMDEPBACKSLASH@ -+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o oabx.obj `if test -f 'test/oabx.c'; then $(CYGPATH_W) 'test/oabx.c'; else $(CYGPATH_W) '$(srcdir)/test/oabx.c'; fi` -+ -+mostlyclean-libtool: -+ -rm -f *.lo -+ -+clean-libtool: -+ -rm -rf .libs _libs -+ -rm -rf test/.libs test/_libs -+ -+distclean-libtool: -+ -rm -f libtool config.lt -+install-pkgconfigDATA: $(pkgconfig_DATA) -+ @$(NORMAL_INSTALL) -+ test -z "$(pkgconfigdir)" || $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" -+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ -+ for p in $$list; do \ -+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ -+ echo "$$d$$p"; \ -+ done | $(am__base_list) | \ -+ while read files; do \ -+ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ -+ $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ -+ done -+ -+uninstall-pkgconfigDATA: -+ @$(NORMAL_UNINSTALL) -+ @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ -+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ -+ dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) -+install-includeHEADERS: $(include_HEADERS) -+ @$(NORMAL_INSTALL) -+ test -z "$(includedir)" || $(MKDIR_P) "$(DESTDIR)$(includedir)" -+ @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ -+ for p in $$list; do \ -+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ -+ echo "$$d$$p"; \ -+ done | $(am__base_list) | \ -+ while read files; do \ -+ echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(includedir)'"; \ -+ $(INSTALL_HEADER) $$files "$(DESTDIR)$(includedir)" || exit $$?; \ -+ done -+ -+uninstall-includeHEADERS: -+ @$(NORMAL_UNINSTALL) -+ @list='$(include_HEADERS)'; test -n "$(includedir)" || list=; \ -+ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ -+ dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) -+ -+ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) -+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ mkid -fID $$unique -+tags: TAGS -+ -+TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ set x; \ -+ here=`pwd`; \ -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ shift; \ -+ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ -+ test -n "$$unique" || unique=$$empty_fix; \ -+ if test $$# -gt 0; then \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ "$$@" $$unique; \ -+ else \ -+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ -+ $$unique; \ -+ fi; \ -+ fi -+ctags: CTAGS -+CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ -+ $(TAGS_FILES) $(LISP) -+ list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ -+ unique=`for i in $$list; do \ -+ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ -+ done | \ -+ $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ -+ END { if (nonempty) { for (i in files) print i; }; }'`; \ -+ test -z "$(CTAGS_ARGS)$$unique" \ -+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ -+ $$unique -+ -+GTAGS: -+ here=`$(am__cd) $(top_builddir) && pwd` \ -+ && $(am__cd) $(top_srcdir) \ -+ && gtags -i $(GTAGS_ARGS) "$$here" -+ -+distclean-tags: -+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags -+ -+distdir: $(DISTFILES) -+ $(am__remove_distdir) -+ test -d "$(distdir)" || mkdir "$(distdir)" -+ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ -+ list='$(DISTFILES)'; \ -+ dist_files=`for file in $$list; do echo $$file; done | \ -+ sed -e "s|^$$srcdirstrip/||;t" \ -+ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ -+ case $$dist_files in \ -+ */*) $(MKDIR_P) `echo "$$dist_files" | \ -+ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ -+ sort -u` ;; \ -+ esac; \ -+ for file in $$dist_files; do \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ if test -d $$d/$$file; then \ -+ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test -d "$(distdir)/$$file"; then \ -+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -+ fi; \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ -+ find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ -+ fi; \ -+ cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ -+ else \ -+ test -f "$(distdir)/$$file" \ -+ || cp -p $$d/$$file "$(distdir)/$$file" \ -+ || exit 1; \ -+ fi; \ -+ done -+ $(MAKE) $(AM_MAKEFLAGS) \ -+ top_distdir="$(top_distdir)" distdir="$(distdir)" \ -+ dist-hook -+ -test -n "$(am__skip_mode_fix)" \ -+ || find "$(distdir)" -type d ! -perm -755 \ -+ -exec chmod u+rwx,go+rx {} \; -o \ -+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ -+ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ -+ || chmod -R a+r "$(distdir)" -+dist-gzip: distdir -+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ $(am__remove_distdir) -+ -+dist-bzip2: distdir -+ tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 -+ $(am__remove_distdir) -+ -+dist-lzip: distdir -+ tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz -+ $(am__remove_distdir) -+ -+dist-lzma: distdir -+ tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma -+ $(am__remove_distdir) -+ -+dist-xz: distdir -+ tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz -+ $(am__remove_distdir) -+ -+dist-tarZ: distdir -+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z -+ $(am__remove_distdir) -+ -+dist-shar: distdir -+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz -+ $(am__remove_distdir) -+ -+dist-zip: distdir -+ -rm -f $(distdir).zip -+ zip -rq $(distdir).zip $(distdir) -+ $(am__remove_distdir) -+ -+dist dist-all: distdir -+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz -+ $(am__remove_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 -+ case '$(DIST_ARCHIVES)' in \ -+ *.tar.gz*) \ -+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ -+ *.tar.bz2*) \ -+ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ -+ *.tar.lzma*) \ -+ lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ -+ *.tar.lz*) \ -+ lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ -+ *.tar.xz*) \ -+ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ -+ *.tar.Z*) \ -+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ -+ *.shar.gz*) \ -+ GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ -+ *.zip*) \ -+ unzip $(distdir).zip ;;\ -+ esac -+ chmod -R a-w $(distdir); chmod a+w $(distdir) -+ mkdir $(distdir)/_build -+ mkdir $(distdir)/_inst -+ chmod a-w $(distdir) -+ test -d $(distdir)/_build || exit 0; \ -+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ -+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ -+ && am__cwd=`pwd` \ -+ && $(am__cd) $(distdir)/_build \ -+ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ -+ $(AM_DISTCHECK_CONFIGURE_FLAGS) \ -+ $(DISTCHECK_CONFIGURE_FLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) \ -+ && $(MAKE) $(AM_MAKEFLAGS) dvi \ -+ && $(MAKE) $(AM_MAKEFLAGS) check \ -+ && $(MAKE) $(AM_MAKEFLAGS) install \ -+ && $(MAKE) $(AM_MAKEFLAGS) installcheck \ -+ && $(MAKE) $(AM_MAKEFLAGS) uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ -+ distuninstallcheck \ -+ && chmod -R a-w "$$dc_install_base" \ -+ && ({ \ -+ (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ -+ && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ -+ distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ -+ } || { rm -rf "$$dc_destdir"; exit 1; }) \ -+ && rm -rf "$$dc_destdir" \ -+ && $(MAKE) $(AM_MAKEFLAGS) dist \ -+ && rm -rf $(DIST_ARCHIVES) \ -+ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ -+ && cd "$$am__cwd" \ -+ || exit 1 -+ $(am__remove_distdir) -+ @(echo "$(distdir) archives ready for distribution: "; \ -+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ -+ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -+distuninstallcheck: -+ @test -n '$(distuninstallcheck_dir)' || { \ -+ echo 'ERROR: trying to run $@ with an empty' \ -+ '$$(distuninstallcheck_dir)' >&2; \ -+ exit 1; \ -+ }; \ -+ $(am__cd) '$(distuninstallcheck_dir)' || { \ -+ echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ -+ exit 1; \ -+ }; \ -+ test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ -+ || { echo "ERROR: files left after uninstall:" ; \ -+ if test -n "$(DESTDIR)"; then \ -+ echo " (check DESTDIR support)"; \ -+ fi ; \ -+ $(distuninstallcheck_listfiles) ; \ -+ exit 1; } >&2 -+distcleancheck: distclean -+ @if test '$(srcdir)' = . ; then \ -+ echo "ERROR: distcleancheck can only run from a VPATH build" ; \ -+ exit 1 ; \ -+ fi -+ @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ -+ || { echo "ERROR: files left in build directory after distclean:" ; \ -+ $(distcleancheck_listfiles) ; \ -+ exit 1; } >&2 -+check-am: all-am -+check: check-am -+all-am: Makefile $(LTLIBRARIES) $(PROGRAMS) $(DATA) $(HEADERS) \ -+ config.h -+installdirs: -+ for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(pkgconfigdir)" "$(DESTDIR)$(includedir)"; do \ -+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ -+ done -+install: install-am -+install-exec: install-exec-am -+install-data: install-data-am -+uninstall: uninstall-am -+ -+install-am: all-am -+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am -+ -+installcheck: installcheck-am -+install-strip: -+ if test -z '$(STRIP)'; then \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ install; \ -+ else \ -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ -+ fi -+mostlyclean-generic: -+ -+clean-generic: -+ -+distclean-generic: -+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) -+ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) -+ -rm -f test/$(am__dirstamp) -+ -+maintainer-clean-generic: -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am -+ -+clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ -+ clean-noinstLTLIBRARIES clean-noinstPROGRAMS mostlyclean-am -+ -+distclean: distclean-am -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+distclean-am: clean-am distclean-compile distclean-generic \ -+ distclean-hdr distclean-libtool distclean-tags -+ -+dvi: dvi-am -+ -+dvi-am: -+ -+html: html-am -+ -+html-am: -+ -+info: info-am -+ -+info-am: -+ -+install-data-am: install-includeHEADERS install-pkgconfigDATA -+ -+install-dvi: install-dvi-am -+ -+install-dvi-am: -+ -+install-exec-am: install-libLTLIBRARIES -+ -+install-html: install-html-am -+ -+install-html-am: -+ -+install-info: install-info-am -+ -+install-info-am: -+ -+install-man: -+ -+install-pdf: install-pdf-am -+ -+install-pdf-am: -+ -+install-ps: install-ps-am -+ -+install-ps-am: -+ -+installcheck-am: -+ -+maintainer-clean: maintainer-clean-am -+ -rm -f $(am__CONFIG_DISTCLEAN_FILES) -+ -rm -rf $(top_srcdir)/autom4te.cache -+ -rm -rf ./$(DEPDIR) -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic -+ -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-compile mostlyclean-generic \ -+ mostlyclean-libtool -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am -+ -+ps-am: -+ -+uninstall-am: uninstall-includeHEADERS uninstall-libLTLIBRARIES \ -+ uninstall-pkgconfigDATA -+ -+.MAKE: all install-am install-strip -+ -+.PHONY: CTAGS GTAGS all all-am am--refresh check check-am clean \ -+ clean-generic clean-libLTLIBRARIES clean-libtool \ -+ clean-noinstLTLIBRARIES clean-noinstPROGRAMS ctags dist \ -+ dist-all dist-bzip2 dist-gzip dist-hook dist-lzip dist-lzma \ -+ dist-shar dist-tarZ dist-xz dist-zip distcheck distclean \ -+ distclean-compile distclean-generic distclean-hdr \ -+ distclean-libtool distclean-tags distcleancheck distdir \ -+ distuninstallcheck dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-dvi \ -+ install-dvi-am install-exec install-exec-am install-html \ -+ install-html-am install-includeHEADERS install-info \ -+ install-info-am install-libLTLIBRARIES install-man install-pdf \ -+ install-pdf-am install-pkgconfigDATA install-ps install-ps-am \ -+ install-strip installcheck installcheck-am installdirs \ -+ maintainer-clean maintainer-clean-generic mostlyclean \ -+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ -+ pdf pdf-am ps ps-am tags uninstall uninstall-am \ -+ uninstall-includeHEADERS uninstall-libLTLIBRARIES \ -+ uninstall-pkgconfigDATA -+ -+ -+dist-hook: -+ -rm -f $(distdir)/*.la -+ -+# 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/libclamav/libmspack-0.4alpha/NEWS b/libclamav/libmspack-0.4alpha/NEWS -new file mode 100644 -index 000000000000..e69de29bb2d1 -diff --git a/libclamav/libmspack-0.4alpha/README b/libclamav/libmspack-0.4alpha/README -new file mode 100644 -index 000000000000..4361b5516e75 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/README -@@ -0,0 +1,130 @@ -+libmspack 0.4alpha -+ -+The purpose of libmspack is to provide compressors and decompressors, -+archivers and dearchivers for Microsoft compression formats: CAB, CHM, WIM, -+LIT, HLP, KWAJ and SZDD. It is also designed to be easily embeddable, -+stable, robust and resource-efficient. -+ -+The library is not intended as a generalised "any archiver" interface. -+Users of the library must explicitly choose the format they intend to work -+with. -+ -+All special features of the above formats will be covered as fully as -+possible -- for example, CAB's multi-part cabinet sets, or CHM's fast -+lookup indices. All compression methods used by the formats will be -+implemented as completely as possible. -+ -+However, other than what is required for access to these formats and their -+features, no other functionality is intended. There is no file metadata -+translation functionality. All file I/O is abstracted, although a default -+implementation using the standard C library is provided. -+ -+ -+DOCUMENTATION -+ -+The API documentation is stored in the doc/ directory. It is generated -+automatically from mspack.h with doxygen. It is also available online at -+http://www.cabextract.org.uk/libmspack/doc/ -+ -+ -+BUILDING / INSTALLING -+ -+./configure -+make -+make install -+ -+This will install the main libmspack library and mspack.h header file. -+Some other libraries and executables are built, but not installed. -+ -+If building from the Subversion repository, running rebuild.sh will create -+all the automatically generated files like the configure script, and will -+then ./configure, make and make distcheck. Running cleanup.sh will perform -+a thorough clean, deleting all automatically generated files. -+ -+In addition to gcc, you also need the following for building from Subversion: -+ -+- at least autoconf 2.57 -+- at least automake 1.7 -+- libtool -+ -+This is an alpha release. Unless you are in a position to package the -+libmspack library for the environment you intend to run your application, -+it is recommended that you do not rely on users of your software having -+the binary library installed and instead you should include the libmspack -+source files directly in your application's build environment. -+ -+ -+LEGAL ISSUES -+ -+The the best of my knowledge, libmspack does not infringe on any -+compression or decompression patents. However, this is not legal -+advice, and it is recommended that you perform your own patent search. -+ -+libmspack is licensed under the LGPL - see COPYING.LIB in this directory. -+ -+The LGPL requires you to build libmspack as a stand alone library then link -+your code to it using a linker. I personally grant you some extra rights: -+you can incorporate libmspack's source code wholly or partially in your own -+code, without having to build and link libmspack as an independent library, -+provided you meet ALL of the following conditions: -+ -+1. ANY modifications to the existing libmspack source code are published and -+ distributed under the LGPL license. -+2. You MUST NOT use libmspack function calls, structures or definitions unless -+ they are defined in the public library interface "mspack.h". -+3. When distributing your code, you MUST make clear your code uses libmspack, -+ and either include the full libmspack distribution with your code, or -+ provide access to it as per clause 4 of the LGPL. -+ -+EXAMPLE CODE -+ -+There are a number of useful programs in the test/ directory which -+exercise and demonstrate libmspack's features. -+ -+cabd_c10 - Tests the CAB decompressor on the C10 collection. -+cabd_compare - Compares the CAB decompressor with Microsoft's EXTRACT.EXE -+cabd_md5 - Prints the MD5 checksums of all files within a CAB file/set. -+cabd_memory - An mspack_system implementation that reads/writes to memory. -+cabd_test - Regression tests for libmspack's CAB decompression. -+cabrip - Extracts any CAB files embedded in another file. -+chmd_compare - Compares the CHM decompressor to Microsoft's HH.EXE -+chmd_find - Fast-finds a file within a CHM file. -+chmd_md5 - Prints the MD5 checksums of all files within a CHM file. -+chmd_order - Tests extracting files in a CHM file in four different ways. -+chminfo - Prints verbose information about CHM file structures. -+chmx - Extracts all files in a CHM file to disk. -+expand - Extracts an SZDD or KWAJ file. -+msdecompile_md5- Runs Microsoft's HH.EXE -DECOMPILE via WINE. -+msexpand_md5 - Runs Microsoft's EXTRACT.EXE via WINE. -+multifh - An mspack_system implementation that can simultaneously work -+ on in-memory images, raw file descriptors, open file handles -+ and regular disk files. -+ -+Here is a simple example of usage, which will create a CAB decompressor, -+then use that to open an existing Microsoft CAB file called "example.cab", -+and list the names of all the files contained in that cab. -+ -+#include -+#include -+#include -+ -+int main() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ struct mscabd_file *file; -+ int test; -+ -+ MSPACK_SYS_SELFTEST(test); -+ if (test != MSPACK_ERR_OK) exit(0); -+ -+ if ((cabd = mspack_create_cab_decompressor(NULL))) { -+ if ((cab = cabd->open(cabd, "example.cab"))) { -+ for (file = cab->files; file; file = file->next) { -+ printf("%s\n", file->filename); -+ } -+ cabd->close(cabd, cab); -+ } -+ mspack_destroy_cab_decompressor(cabd); -+ } -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/TODO b/libclamav/libmspack-0.4alpha/TODO -new file mode 100644 -index 000000000000..df1095d66332 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/TODO -@@ -0,0 +1,8 @@ -+* CAB compression -+* cabd_find(): if many bytes are missing from the end of a cabinet, it should still find it -+* CHM compression -+* HLP: everything -+* LIT: everything -+* SZDD/KWAJ: compression -+* WIM: everything -+* chm: make chunk cache size user-controllable -diff --git a/libclamav/libmspack-0.4alpha/aclocal.m4 b/libclamav/libmspack-0.4alpha/aclocal.m4 -new file mode 100644 -index 000000000000..22b5a662417c ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/aclocal.m4 -@@ -0,0 +1,1033 @@ -+# generated automatically by aclocal 1.11.3 -*- Autoconf -*- -+ -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -+# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, -+# Inc. -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# 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. -+ -+m4_ifndef([AC_AUTOCONF_VERSION], -+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -+[m4_warning([this file was generated for autoconf 2.68. -+You have another version of autoconf. It may work, but is not guaranteed to. -+If you have problems, you may need to regenerate the build system entirely. -+To do so, use the procedure documented by the package, typically `autoreconf'.])]) -+ -+# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software -+# Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 1 -+ -+# AM_AUTOMAKE_VERSION(VERSION) -+# ---------------------------- -+# Automake X.Y traces this macro to ensure aclocal.m4 has been -+# generated from the m4 files accompanying Automake X.Y. -+# (This private macro should not be called outside this file.) -+AC_DEFUN([AM_AUTOMAKE_VERSION], -+[am__api_version='1.11' -+dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -+dnl require some minimum version. Point them to the right macro. -+m4_if([$1], [1.11.3], [], -+ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -+]) -+ -+# _AM_AUTOCONF_VERSION(VERSION) -+# ----------------------------- -+# aclocal traces this macro to find the Autoconf version. -+# This is a private macro too. Using m4_define simplifies -+# the logic in aclocal, which can simply ignore this definition. -+m4_define([_AM_AUTOCONF_VERSION], []) -+ -+# AM_SET_CURRENT_AUTOMAKE_VERSION -+# ------------------------------- -+# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -+# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -+[AM_AUTOMAKE_VERSION([1.11.3])dnl -+m4_ifndef([AC_AUTOCONF_VERSION], -+ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -+_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) -+ -+# AM_AUX_DIR_EXPAND -*- Autoconf -*- -+ -+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 1 -+ -+# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -+# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -+# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -+# -+# Of course, Automake must honor this variable whenever it calls a -+# tool from the auxiliary directory. The problem is that $srcdir (and -+# therefore $ac_aux_dir as well) can be either absolute or relative, -+# depending on how configure is run. This is pretty annoying, since -+# it makes $ac_aux_dir quite unusable in subdirectories: in the top -+# source directory, any form will work fine, but in subdirectories a -+# relative path needs to be adjusted first. -+# -+# $ac_aux_dir/missing -+# fails when called from a subdirectory if $ac_aux_dir is relative -+# $top_srcdir/$ac_aux_dir/missing -+# fails if $ac_aux_dir is absolute, -+# fails when called from a subdirectory in a VPATH build with -+# a relative $ac_aux_dir -+# -+# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -+# are both prefixed by $srcdir. In an in-source build this is usually -+# harmless because $srcdir is `.', but things will broke when you -+# start a VPATH build or use an absolute $srcdir. -+# -+# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -+# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -+# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -+# and then we would define $MISSING as -+# MISSING="\${SHELL} $am_aux_dir/missing" -+# This will work as long as MISSING is not called from configure, because -+# unfortunately $(top_srcdir) has no meaning in configure. -+# However there are other variables, like CC, which are often used in -+# configure, and could therefore not use this "fixed" $ac_aux_dir. -+# -+# Another solution, used here, is to always expand $ac_aux_dir to an -+# absolute PATH. The drawback is that using absolute paths prevent a -+# configured tree to be moved without reconfiguration. -+ -+AC_DEFUN([AM_AUX_DIR_EXPAND], -+[dnl Rely on autoconf to set up CDPATH properly. -+AC_PREREQ([2.50])dnl -+# expand $ac_aux_dir to an absolute path -+am_aux_dir=`cd $ac_aux_dir && pwd` -+]) -+ -+# AM_CONDITIONAL -*- Autoconf -*- -+ -+# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -+# Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 9 -+ -+# AM_CONDITIONAL(NAME, SHELL-CONDITION) -+# ------------------------------------- -+# Define a conditional. -+AC_DEFUN([AM_CONDITIONAL], -+[AC_PREREQ(2.52)dnl -+ ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], -+ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -+AC_SUBST([$1_TRUE])dnl -+AC_SUBST([$1_FALSE])dnl -+_AM_SUBST_NOTMAKE([$1_TRUE])dnl -+_AM_SUBST_NOTMAKE([$1_FALSE])dnl -+m4_define([_AM_COND_VALUE_$1], [$2])dnl -+if $2; then -+ $1_TRUE= -+ $1_FALSE='#' -+else -+ $1_TRUE='#' -+ $1_FALSE= -+fi -+AC_CONFIG_COMMANDS_PRE( -+[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then -+ AC_MSG_ERROR([[conditional "$1" was never defined. -+Usually this means the macro was only invoked conditionally.]]) -+fi])]) -+ -+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, -+# 2010, 2011 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 12 -+ -+# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -+# written in clear, in which case automake, when reading aclocal.m4, -+# will think it sees a *use*, and therefore will trigger all it's -+# C support machinery. Also note that it means that autoscan, seeing -+# CC etc. in the Makefile, will ask for an AC_PROG_CC use... -+ -+ -+# _AM_DEPENDENCIES(NAME) -+# ---------------------- -+# See how the compiler implements dependency checking. -+# NAME is "CC", "CXX", "GCJ", or "OBJC". -+# We try a few techniques and use that to set a single cache variable. -+# -+# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -+# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -+# dependency, and given that the user is not expected to run this macro, -+# just rely on AC_PROG_CC. -+AC_DEFUN([_AM_DEPENDENCIES], -+[AC_REQUIRE([AM_SET_DEPDIR])dnl -+AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -+AC_REQUIRE([AM_MAKE_INCLUDE])dnl -+AC_REQUIRE([AM_DEP_TRACK])dnl -+ -+ifelse([$1], CC, [depcc="$CC" am_compiler_list=], -+ [$1], CXX, [depcc="$CXX" am_compiler_list=], -+ [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], -+ [$1], UPC, [depcc="$UPC" am_compiler_list=], -+ [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], -+ [depcc="$$1" am_compiler_list=]) -+ -+AC_CACHE_CHECK([dependency style of $depcc], -+ [am_cv_$1_dependencies_compiler_type], -+[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then -+ # We make a subdir and do the tests there. Otherwise we can end up -+ # making bogus files that we don't know about and never remove. For -+ # instance it was reported that on HP-UX the gcc test will end up -+ # making a dummy file named `D' -- because `-MD' means `put the output -+ # in D'. -+ rm -rf conftest.dir -+ mkdir conftest.dir -+ # Copy depcomp to subdir because otherwise we won't find it if we're -+ # using a relative directory. -+ cp "$am_depcomp" conftest.dir -+ cd conftest.dir -+ # We will build objects and dependencies in a subdirectory because -+ # it helps to detect inapplicable dependency modes. For instance -+ # both Tru64's cc and ICC support -MD to output dependencies as a -+ # side effect of compilation, but ICC will put the dependencies in -+ # the current directory while Tru64 will put them in the object -+ # directory. -+ mkdir sub -+ -+ am_cv_$1_dependencies_compiler_type=none -+ if test "$am_compiler_list" = ""; then -+ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` -+ fi -+ am__universal=false -+ m4_case([$1], [CC], -+ [case " $depcc " in #( -+ *\ -arch\ *\ -arch\ *) am__universal=true ;; -+ esac], -+ [CXX], -+ [case " $depcc " in #( -+ *\ -arch\ *\ -arch\ *) am__universal=true ;; -+ esac]) -+ -+ for depmode in $am_compiler_list; do -+ # Setup a source with many dependencies, because some compilers -+ # like to wrap large dependency lists on column 80 (with \), and -+ # we should not choose a depcomp mode which is confused by this. -+ # -+ # We need to recreate these files for each test, as the compiler may -+ # overwrite some of them when testing with obscure command lines. -+ # This happens at least with the AIX C compiler. -+ : > sub/conftest.c -+ for i in 1 2 3 4 5 6; do -+ echo '#include "conftst'$i'.h"' >> sub/conftest.c -+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with -+ # Solaris 8's {/usr,}/bin/sh. -+ touch sub/conftst$i.h -+ done -+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf -+ -+ # We check with `-c' and `-o' for the sake of the "dashmstdout" -+ # mode. It turns out that the SunPro C++ compiler does not properly -+ # handle `-M -o', and we need to detect this. Also, some Intel -+ # versions had trouble with output in subdirs -+ am__obj=sub/conftest.${OBJEXT-o} -+ am__minus_obj="-o $am__obj" -+ case $depmode in -+ gcc) -+ # This depmode causes a compiler race in universal mode. -+ test "$am__universal" = false || continue -+ ;; -+ nosideeffect) -+ # after this tag, mechanisms are not by side-effect, so they'll -+ # only be used when explicitly requested -+ if test "x$enable_dependency_tracking" = xyes; then -+ continue -+ else -+ break -+ fi -+ ;; -+ msvc7 | msvc7msys | msvisualcpp | msvcmsys) -+ # This compiler won't grok `-c -o', but also, the minuso test has -+ # not run yet. These depmodes are late enough in the game, and -+ # so weak that their functioning should not be impacted. -+ am__obj=conftest.${OBJEXT-o} -+ am__minus_obj= -+ ;; -+ none) break ;; -+ esac -+ if depmode=$depmode \ -+ source=sub/conftest.c object=$am__obj \ -+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ -+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ -+ >/dev/null 2>conftest.err && -+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && -+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && -+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && -+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then -+ # icc doesn't choke on unknown options, it will just issue warnings -+ # or remarks (even with -Werror). So we grep stderr for any message -+ # that says an option was ignored or not supported. -+ # When given -MP, icc 7.0 and 7.1 complain thusly: -+ # icc: Command line warning: ignoring option '-M'; no argument required -+ # The diagnosis changed in icc 8.0: -+ # icc: Command line remark: option '-MP' not supported -+ if (grep 'ignoring option' conftest.err || -+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else -+ am_cv_$1_dependencies_compiler_type=$depmode -+ break -+ fi -+ fi -+ done -+ -+ cd .. -+ rm -rf conftest.dir -+else -+ am_cv_$1_dependencies_compiler_type=none -+fi -+]) -+AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -+AM_CONDITIONAL([am__fastdep$1], [ -+ test "x$enable_dependency_tracking" != xno \ -+ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -+]) -+ -+ -+# AM_SET_DEPDIR -+# ------------- -+# Choose a directory name for dependency files. -+# This macro is AC_REQUIREd in _AM_DEPENDENCIES -+AC_DEFUN([AM_SET_DEPDIR], -+[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -+AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -+]) -+ -+ -+# AM_DEP_TRACK -+# ------------ -+AC_DEFUN([AM_DEP_TRACK], -+[AC_ARG_ENABLE(dependency-tracking, -+[ --disable-dependency-tracking speeds up one-time build -+ --enable-dependency-tracking do not reject slow dependency extractors]) -+if test "x$enable_dependency_tracking" != xno; then -+ am_depcomp="$ac_aux_dir/depcomp" -+ AMDEPBACKSLASH='\' -+ am__nodep='_no' -+fi -+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -+AC_SUBST([AMDEPBACKSLASH])dnl -+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -+AC_SUBST([am__nodep])dnl -+_AM_SUBST_NOTMAKE([am__nodep])dnl -+]) -+ -+# Generate code to set up dependency tracking. -*- Autoconf -*- -+ -+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -+# Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+#serial 5 -+ -+# _AM_OUTPUT_DEPENDENCY_COMMANDS -+# ------------------------------ -+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -+[{ -+ # Autoconf 2.62 quotes --file arguments for eval, but not when files -+ # are listed without --file. Let's play safe and only enable the eval -+ # if we detect the quoting. -+ case $CONFIG_FILES in -+ *\'*) eval set x "$CONFIG_FILES" ;; -+ *) set x $CONFIG_FILES ;; -+ esac -+ shift -+ for mf -+ do -+ # Strip MF so we end up with the name of the file. -+ mf=`echo "$mf" | sed -e 's/:.*$//'` -+ # Check whether this is an Automake generated Makefile or not. -+ # We used to match only the files named `Makefile.in', but -+ # some people rename them; so instead we look at the file content. -+ # Grep'ing the first line is not enough: some people post-process -+ # each Makefile.in and add a new line on top of each file to say so. -+ # Grep'ing the whole file is not good either: AIX grep has a line -+ # limit of 2048, but all sed's we know have understand at least 4000. -+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then -+ dirpart=`AS_DIRNAME("$mf")` -+ else -+ continue -+ fi -+ # Extract the definition of DEPDIR, am__include, and am__quote -+ # from the Makefile without running `make'. -+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` -+ test -z "$DEPDIR" && continue -+ am__include=`sed -n 's/^am__include = //p' < "$mf"` -+ test -z "am__include" && continue -+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` -+ # When using ansi2knr, U may be empty or an underscore; expand it -+ U=`sed -n 's/^U = //p' < "$mf"` -+ # Find all dependency output files, they are included files with -+ # $(DEPDIR) in their names. We invoke sed twice because it is the -+ # simplest approach to changing $(DEPDIR) to its actual value in the -+ # expansion. -+ for file in `sed -n " -+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ -+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do -+ # Make sure the directory exists. -+ test -f "$dirpart/$file" && continue -+ fdir=`AS_DIRNAME(["$file"])` -+ AS_MKDIR_P([$dirpart/$fdir]) -+ # echo "creating $dirpart/$file" -+ echo '# dummy' > "$dirpart/$file" -+ done -+ done -+} -+])# _AM_OUTPUT_DEPENDENCY_COMMANDS -+ -+ -+# AM_OUTPUT_DEPENDENCY_COMMANDS -+# ----------------------------- -+# This macro should only be invoked once -- use via AC_REQUIRE. -+# -+# This code is only required when automatic dependency tracking -+# is enabled. FIXME. This creates each `.P' file that we will -+# need in order to bootstrap the dependency handling code. -+AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -+[AC_CONFIG_COMMANDS([depfiles], -+ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], -+ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -+]) -+ -+# Do all the work for Automake. -*- Autoconf -*- -+ -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -+# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 16 -+ -+# This macro actually does too much. Some checks are only needed if -+# your package does certain things. But this isn't really a big deal. -+ -+# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -+# AM_INIT_AUTOMAKE([OPTIONS]) -+# ----------------------------------------------- -+# The call with PACKAGE and VERSION arguments is the old style -+# call (pre autoconf-2.50), which is being phased out. PACKAGE -+# and VERSION should now be passed to AC_INIT and removed from -+# the call to AM_INIT_AUTOMAKE. -+# We support both call styles for the transition. After -+# the next Automake release, Autoconf can make the AC_INIT -+# arguments mandatory, and then we can depend on a new Autoconf -+# release and drop the old call support. -+AC_DEFUN([AM_INIT_AUTOMAKE], -+[AC_PREREQ([2.62])dnl -+dnl Autoconf wants to disallow AM_ names. We explicitly allow -+dnl the ones we care about. -+m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -+AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -+AC_REQUIRE([AC_PROG_INSTALL])dnl -+if test "`cd $srcdir && pwd`" != "`pwd`"; then -+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output -+ # is not polluted with repeated "-I." -+ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl -+ # test to see if srcdir already configured -+ if test -f $srcdir/config.status; then -+ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) -+ fi -+fi -+ -+# test whether we have cygpath -+if test -z "$CYGPATH_W"; then -+ if (cygpath --version) >/dev/null 2>/dev/null; then -+ CYGPATH_W='cygpath -w' -+ else -+ CYGPATH_W=echo -+ fi -+fi -+AC_SUBST([CYGPATH_W]) -+ -+# Define the identity of the package. -+dnl Distinguish between old-style and new-style calls. -+m4_ifval([$2], -+[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl -+ AC_SUBST([PACKAGE], [$1])dnl -+ AC_SUBST([VERSION], [$2])], -+[_AM_SET_OPTIONS([$1])dnl -+dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -+m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, -+ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl -+ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl -+ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl -+ -+_AM_IF_OPTION([no-define],, -+[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) -+ AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl -+ -+# Some tools Automake needs. -+AC_REQUIRE([AM_SANITY_CHECK])dnl -+AC_REQUIRE([AC_ARG_PROGRAM])dnl -+AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -+AM_MISSING_PROG(AUTOCONF, autoconf) -+AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -+AM_MISSING_PROG(AUTOHEADER, autoheader) -+AM_MISSING_PROG(MAKEINFO, makeinfo) -+AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -+AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -+AC_REQUIRE([AM_PROG_MKDIR_P])dnl -+# We need awk for the "check" target. The system "awk" is bad on -+# some platforms. -+AC_REQUIRE([AC_PROG_AWK])dnl -+AC_REQUIRE([AC_PROG_MAKE_SET])dnl -+AC_REQUIRE([AM_SET_LEADING_DOT])dnl -+_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], -+ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], -+ [_AM_PROG_TAR([v7])])]) -+_AM_IF_OPTION([no-dependencies],, -+[AC_PROVIDE_IFELSE([AC_PROG_CC], -+ [_AM_DEPENDENCIES(CC)], -+ [define([AC_PROG_CC], -+ defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -+AC_PROVIDE_IFELSE([AC_PROG_CXX], -+ [_AM_DEPENDENCIES(CXX)], -+ [define([AC_PROG_CXX], -+ defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -+AC_PROVIDE_IFELSE([AC_PROG_OBJC], -+ [_AM_DEPENDENCIES(OBJC)], -+ [define([AC_PROG_OBJC], -+ defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -+]) -+_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -+dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -+dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -+dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -+AC_CONFIG_COMMANDS_PRE(dnl -+[m4_provide_if([_AM_COMPILER_EXEEXT], -+ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -+]) -+ -+dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -+dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -+dnl mangled by Autoconf and run in a shell conditional statement. -+m4_define([_AC_COMPILER_EXEEXT], -+m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) -+ -+ -+# When config.status generates a header, we must update the stamp-h file. -+# This file resides in the same directory as the config header -+# that is generated. The stamp files are numbered to have different names. -+ -+# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -+# loop where config.status creates the headers, so we can generate -+# our stamp files there. -+AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -+[# Compute $1's index in $config_headers. -+_am_arg=$1 -+_am_stamp_count=1 -+for _am_header in $config_headers :; do -+ case $_am_header in -+ $_am_arg | $_am_arg:* ) -+ break ;; -+ * ) -+ _am_stamp_count=`expr $_am_stamp_count + 1` ;; -+ esac -+done -+echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -+ -+# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, -+# Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 1 -+ -+# AM_PROG_INSTALL_SH -+# ------------------ -+# Define $install_sh. -+AC_DEFUN([AM_PROG_INSTALL_SH], -+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -+if test x"${install_sh}" != xset; then -+ case $am_aux_dir in -+ *\ * | *\ *) -+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; -+ *) -+ install_sh="\${SHELL} $am_aux_dir/install-sh" -+ esac -+fi -+AC_SUBST(install_sh)]) -+ -+# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 2 -+ -+# Check whether the underlying file-system supports filenames -+# with a leading dot. For instance MS-DOS doesn't. -+AC_DEFUN([AM_SET_LEADING_DOT], -+[rm -rf .tst 2>/dev/null -+mkdir .tst 2>/dev/null -+if test -d .tst; then -+ am__leading_dot=. -+else -+ am__leading_dot=_ -+fi -+rmdir .tst 2>/dev/null -+AC_SUBST([am__leading_dot])]) -+ -+# Check to see how 'make' treats includes. -*- Autoconf -*- -+ -+# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 4 -+ -+# AM_MAKE_INCLUDE() -+# ----------------- -+# Check to see how make treats includes. -+AC_DEFUN([AM_MAKE_INCLUDE], -+[am_make=${MAKE-make} -+cat > confinc << 'END' -+am__doit: -+ @echo this is the am__doit target -+.PHONY: am__doit -+END -+# If we don't find an include directive, just comment out the code. -+AC_MSG_CHECKING([for style of include used by $am_make]) -+am__include="#" -+am__quote= -+_am_result=none -+# First try GNU make style include. -+echo "include confinc" > confmf -+# Ignore all kinds of additional output from `make'. -+case `$am_make -s -f confmf 2> /dev/null` in #( -+*the\ am__doit\ target*) -+ am__include=include -+ am__quote= -+ _am_result=GNU -+ ;; -+esac -+# Now try BSD make style include. -+if test "$am__include" = "#"; then -+ echo '.include "confinc"' > confmf -+ case `$am_make -s -f confmf 2> /dev/null` in #( -+ *the\ am__doit\ target*) -+ am__include=.include -+ am__quote="\"" -+ _am_result=BSD -+ ;; -+ esac -+fi -+AC_SUBST([am__include]) -+AC_SUBST([am__quote]) -+AC_MSG_RESULT([$_am_result]) -+rm -f confinc confmf -+]) -+ -+# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -+ -+# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -+# Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 6 -+ -+# AM_MISSING_PROG(NAME, PROGRAM) -+# ------------------------------ -+AC_DEFUN([AM_MISSING_PROG], -+[AC_REQUIRE([AM_MISSING_HAS_RUN]) -+$1=${$1-"${am_missing_run}$2"} -+AC_SUBST($1)]) -+ -+ -+# AM_MISSING_HAS_RUN -+# ------------------ -+# Define MISSING if not defined so far and test if it supports --run. -+# If it does, set am_missing_run to use it, otherwise, to nothing. -+AC_DEFUN([AM_MISSING_HAS_RUN], -+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -+AC_REQUIRE_AUX_FILE([missing])dnl -+if test x"${MISSING+set}" != xset; then -+ case $am_aux_dir in -+ *\ * | *\ *) -+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; -+ *) -+ MISSING="\${SHELL} $am_aux_dir/missing" ;; -+ esac -+fi -+# Use eval to expand $SHELL -+if eval "$MISSING --run true"; then -+ am_missing_run="$MISSING --run " -+else -+ am_missing_run= -+ AC_MSG_WARN([`missing' script is too old or missing]) -+fi -+]) -+ -+# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, -+# Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 1 -+ -+# AM_PROG_MKDIR_P -+# --------------- -+# Check for `mkdir -p'. -+AC_DEFUN([AM_PROG_MKDIR_P], -+[AC_PREREQ([2.60])dnl -+AC_REQUIRE([AC_PROG_MKDIR_P])dnl -+dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -+dnl while keeping a definition of mkdir_p for backward compatibility. -+dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -+dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -+dnl Makefile.ins that do not define MKDIR_P, so we do our own -+dnl adjustment using top_builddir (which is defined more often than -+dnl MKDIR_P). -+AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -+case $mkdir_p in -+ [[\\/$]]* | ?:[[\\/]]*) ;; -+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -+esac -+]) -+ -+# Helper functions for option handling. -*- Autoconf -*- -+ -+# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software -+# Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 5 -+ -+# _AM_MANGLE_OPTION(NAME) -+# ----------------------- -+AC_DEFUN([_AM_MANGLE_OPTION], -+[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) -+ -+# _AM_SET_OPTION(NAME) -+# -------------------- -+# Set option NAME. Presently that only means defining a flag for this option. -+AC_DEFUN([_AM_SET_OPTION], -+[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) -+ -+# _AM_SET_OPTIONS(OPTIONS) -+# ------------------------ -+# OPTIONS is a space-separated list of Automake options. -+AC_DEFUN([_AM_SET_OPTIONS], -+[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) -+ -+# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -+# ------------------------------------------- -+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -+AC_DEFUN([_AM_IF_OPTION], -+[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -+ -+# Check to make sure that the build environment is sane. -*- Autoconf -*- -+ -+# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -+# Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 5 -+ -+# AM_SANITY_CHECK -+# --------------- -+AC_DEFUN([AM_SANITY_CHECK], -+[AC_MSG_CHECKING([whether build environment is sane]) -+# Just in case -+sleep 1 -+echo timestamp > conftest.file -+# Reject unsafe characters in $srcdir or the absolute working directory -+# name. Accept space and tab only in the latter. -+am_lf=' -+' -+case `pwd` in -+ *[[\\\"\#\$\&\'\`$am_lf]]*) -+ AC_MSG_ERROR([unsafe absolute working directory name]);; -+esac -+case $srcdir in -+ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) -+ AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -+esac -+ -+# 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" conftest.file 2> /dev/null` -+ if test "$[*]" = "X"; then -+ # -L didn't work. -+ set X `ls -t "$srcdir/configure" conftest.file` -+ fi -+ rm -f conftest.file -+ if test "$[*]" != "X $srcdir/configure conftest.file" \ -+ && test "$[*]" != "X conftest.file $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". -+ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -+alias in your environment]) -+ fi -+ -+ test "$[2]" = conftest.file -+ ) -+then -+ # Ok. -+ : -+else -+ AC_MSG_ERROR([newly created file is older than distributed files! -+Check your system clock]) -+fi -+AC_MSG_RESULT(yes)]) -+ -+# Copyright (C) 2009, 2011 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 2 -+ -+# AM_SILENT_RULES([DEFAULT]) -+# -------------------------- -+# Enable less verbose build rules; with the default set to DEFAULT -+# (`yes' being less verbose, `no' or empty being verbose). -+AC_DEFUN([AM_SILENT_RULES], -+[AC_ARG_ENABLE([silent-rules], -+[ --enable-silent-rules less verbose build output (undo: `make V=1') -+ --disable-silent-rules verbose build output (undo: `make V=0')]) -+case $enable_silent_rules in -+yes) AM_DEFAULT_VERBOSITY=0;; -+no) AM_DEFAULT_VERBOSITY=1;; -+*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; -+esac -+dnl -+dnl A few `make' implementations (e.g., NonStop OS and NextStep) -+dnl do not support nested variable expansions. -+dnl See automake bug#9928 and bug#10237. -+am_make=${MAKE-make} -+AC_CACHE_CHECK([whether $am_make supports nested variables], -+ [am_cv_make_support_nested_variables], -+ [if AS_ECHO([['TRUE=$(BAR$(V)) -+BAR0=false -+BAR1=true -+V=1 -+am__doit: -+ @$(TRUE) -+.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then -+ am_cv_make_support_nested_variables=yes -+else -+ am_cv_make_support_nested_variables=no -+fi]) -+if test $am_cv_make_support_nested_variables = yes; then -+ dnl Using `$V' instead of `$(V)' breaks IRIX make. -+ AM_V='$(V)' -+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -+else -+ AM_V=$AM_DEFAULT_VERBOSITY -+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -+fi -+AC_SUBST([AM_V])dnl -+AM_SUBST_NOTMAKE([AM_V])dnl -+AC_SUBST([AM_DEFAULT_V])dnl -+AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl -+AC_SUBST([AM_DEFAULT_VERBOSITY])dnl -+AM_BACKSLASH='\' -+AC_SUBST([AM_BACKSLASH])dnl -+_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl -+]) -+ -+# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 1 -+ -+# AM_PROG_INSTALL_STRIP -+# --------------------- -+# One issue with vendor `install' (even GNU) is that you can't -+# specify the program used to strip binaries. This is especially -+# annoying in cross-compiling environments, where the build's strip -+# is unlikely to handle the host's binaries. -+# Fortunately install-sh will honor a STRIPPROG variable, so we -+# always use install-sh in `make install-strip', and initialize -+# STRIPPROG with the value of the STRIP variable (set by the user). -+AC_DEFUN([AM_PROG_INSTALL_STRIP], -+[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -+# Installed binaries are usually stripped using `strip' when the user -+# run `make install-strip'. However `strip' might not be the right -+# tool to use in cross-compilation environments, therefore Automake -+# will honor the `STRIP' environment variable to overrule this program. -+dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -+if test "$cross_compiling" != no; then -+ AC_CHECK_TOOL([STRIP], [strip], :) -+fi -+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -+AC_SUBST([INSTALL_STRIP_PROGRAM])]) -+ -+# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 3 -+ -+# _AM_SUBST_NOTMAKE(VARIABLE) -+# --------------------------- -+# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -+# This macro is traced by Automake. -+AC_DEFUN([_AM_SUBST_NOTMAKE]) -+ -+# AM_SUBST_NOTMAKE(VARIABLE) -+# -------------------------- -+# Public sister of _AM_SUBST_NOTMAKE. -+AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) -+ -+# Check how to create a tarball. -*- Autoconf -*- -+ -+# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. -+# -+# This file is free software; the Free Software Foundation -+# gives unlimited permission to copy and/or distribute it, -+# with or without modifications, as long as this notice is preserved. -+ -+# serial 2 -+ -+# _AM_PROG_TAR(FORMAT) -+# -------------------- -+# Check how to create a tarball in format FORMAT. -+# FORMAT should be one of `v7', `ustar', or `pax'. -+# -+# Substitute a variable $(am__tar) that is a command -+# writing to stdout a FORMAT-tarball containing the directory -+# $tardir. -+# tardir=directory && $(am__tar) > result.tar -+# -+# Substitute a variable $(am__untar) that extract such -+# a tarball read from stdin. -+# $(am__untar) < result.tar -+AC_DEFUN([_AM_PROG_TAR], -+[# Always define AMTAR for backward compatibility. Yes, it's still used -+# in the wild :-( We should find a proper way to deprecate it ... -+AC_SUBST([AMTAR], ['$${TAR-tar}']) -+m4_if([$1], [v7], -+ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], -+ [m4_case([$1], [ustar],, [pax],, -+ [m4_fatal([Unknown tar format])]) -+AC_MSG_CHECKING([how to create a $1 tar archive]) -+# Loop over all known methods to create a tar archive until one works. -+_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -+_am_tools=${am_cv_prog_tar_$1-$_am_tools} -+# Do not fold the above two line into one, because Tru64 sh and -+# Solaris sh will not grok spaces in the rhs of `-'. -+for _am_tool in $_am_tools -+do -+ case $_am_tool in -+ gnutar) -+ for _am_tar in tar gnutar gtar; -+ do -+ AM_RUN_LOG([$_am_tar --version]) && break -+ done -+ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' -+ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' -+ am__untar="$_am_tar -xf -" -+ ;; -+ plaintar) -+ # Must skip GNU tar: if it does not support --format= it doesn't create -+ # ustar tarball either. -+ (tar --version) >/dev/null 2>&1 && continue -+ am__tar='tar chf - "$$tardir"' -+ am__tar_='tar chf - "$tardir"' -+ am__untar='tar xf -' -+ ;; -+ pax) -+ am__tar='pax -L -x $1 -w "$$tardir"' -+ am__tar_='pax -L -x $1 -w "$tardir"' -+ am__untar='pax -r' -+ ;; -+ cpio) -+ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' -+ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' -+ am__untar='cpio -i -H $1 -d' -+ ;; -+ none) -+ am__tar=false -+ am__tar_=false -+ am__untar=false -+ ;; -+ esac -+ -+ # If the value was cached, stop now. We just wanted to have am__tar -+ # and am__untar set. -+ test -n "${am_cv_prog_tar_$1}" && break -+ -+ # tar/untar a dummy directory, and stop if the command works -+ rm -rf conftest.dir -+ mkdir conftest.dir -+ echo GrepMe > conftest.dir/file -+ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) -+ rm -rf conftest.dir -+ if test -s conftest.tar; then -+ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break -+ fi -+done -+rm -rf conftest.dir -+ -+AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -+AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -+AC_SUBST([am__tar]) -+AC_SUBST([am__untar]) -+]) # _AM_PROG_TAR -+ -+m4_include([m4/libtool.m4]) -+m4_include([m4/ltoptions.m4]) -+m4_include([m4/ltsugar.m4]) -+m4_include([m4/ltversion.m4]) -+m4_include([m4/lt~obsolete.m4]) -diff --git a/libclamav/libmspack-0.4alpha/config.guess b/libclamav/libmspack-0.4alpha/config.guess -new file mode 100755 -index 000000000000..d622a44e551f ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/config.guess -@@ -0,0 +1,1530 @@ -+#! /bin/sh -+# Attempt to guess a canonical system name. -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -+# 2011, 2012 Free Software Foundation, Inc. -+ -+timestamp='2012-02-10' -+ -+# 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 -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, see . -+# -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+ -+# Originally written by Per Bothner. Please send patches (context -+# diff format) to and include a ChangeLog -+# entry. -+# -+# 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. -+# -+# You can get the latest version of this script from: -+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -+ -+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 ." -+ -+version="\ -+GNU config.guess ($timestamp) -+ -+Originally written by Per Bothner. -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -+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 ;; -+ --version | -v ) -+ echo "$version" ; exit ;; -+ --help | --h* | -h ) -+ echo "$usage"; exit ;; -+ -- ) # 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 -+ -+trap 'exit 1' 1 2 15 -+ -+# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -+# compiler to aid in system detection is discouraged as it requires -+# temporary files to be created and, as you can see below, it is a -+# headache to deal with in a portable fashion. -+ -+# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -+# use `HOST_CC' if defined, but it is deprecated. -+ -+# Portable tmp directory creation inspired by the Autoconf team. -+ -+set_cc_for_build=' -+trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -+trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -+: ${TMPDIR=/tmp} ; -+ { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || -+ { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || -+ { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || -+ { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -+dummy=$tmp/dummy ; -+tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -+case $CC_FOR_BUILD,$HOST_CC,$CC in -+ ,,) echo "int x;" > $dummy.c ; -+ for c in cc gcc c89 c99 ; do -+ if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then -+ CC_FOR_BUILD="$c"; break ; -+ fi ; -+ done ; -+ 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 ; set_cc_for_build= ;' -+ -+# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -+# (ghazi@noc.rutgers.edu 1994-08-24) -+if (test -f /.attbin/uname) >/dev/null 2>&1 ; then -+ PATH=$PATH:/.attbin ; export PATH -+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_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown -+ -+# 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 tuples: *-*-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. -+ # -+ # Note: NetBSD doesn't particularly care about the vendor -+ # portion of the name. We always set it to "unknown". -+ sysctl="sysctl -n hw.machine_arch" -+ UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ -+ /usr/sbin/$sysctl 2>/dev/null || echo unknown)` -+ case "${UNAME_MACHINE_ARCH}" in -+ armeb) machine=armeb-unknown ;; -+ arm*) machine=arm-unknown ;; -+ sh3el) machine=shl-unknown ;; -+ sh3eb) machine=sh-unknown ;; -+ sh5el) machine=sh5le-unknown ;; -+ *) machine=${UNAME_MACHINE_ARCH}-unknown ;; -+ esac -+ # The Operating System including object format, if it has switched -+ # to ELF recently, or will in the future. -+ case "${UNAME_MACHINE_ARCH}" in -+ arm*|i386|m68k|ns32k|sh3*|sparc|vax) -+ eval $set_cc_for_build -+ if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ -+ | grep -q __ELF__ -+ 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 -+ # Debian GNU/NetBSD machines have a different userland, and -+ # thus, need a distinct triplet. However, they do not need -+ # kernel version information, so it can be replaced with a -+ # suitable tag, in the style of linux-gnu. -+ case "${UNAME_VERSION}" in -+ Debian*) -+ release='-gnu' -+ ;; -+ *) -+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` -+ ;; -+ esac -+ # 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 ;; -+ *:OpenBSD:*:*) -+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` -+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} -+ exit ;; -+ *:ekkoBSD:*:*) -+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} -+ exit ;; -+ *:SolidBSD:*:*) -+ echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} -+ exit ;; -+ macppc:MirBSD:*:*) -+ echo powerpc-unknown-mirbsd${UNAME_RELEASE} -+ exit ;; -+ *:MirBSD:*:*) -+ echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} -+ exit ;; -+ alpha:OSF1:*:*) -+ case $UNAME_RELEASE in -+ *4.0) -+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` -+ ;; -+ *5.*) -+ UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` -+ ;; -+ esac -+ # According to Compaq, /usr/sbin/psrinfo has been available on -+ # OSF/1 and Tru64 systems produced since 1995. I hope that -+ # covers most systems running today. This code pipes the CPU -+ # types through head -n 1, so we only detect the type of CPU 0. -+ ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` -+ case "$ALPHA_CPU_TYPE" in -+ "EV4 (21064)") -+ UNAME_MACHINE="alpha" ;; -+ "EV4.5 (21064)") -+ UNAME_MACHINE="alpha" ;; -+ "LCA4 (21066/21068)") -+ UNAME_MACHINE="alpha" ;; -+ "EV5 (21164)") -+ UNAME_MACHINE="alphaev5" ;; -+ "EV5.6 (21164A)") -+ UNAME_MACHINE="alphaev56" ;; -+ "EV5.6 (21164PC)") -+ UNAME_MACHINE="alphapca56" ;; -+ "EV5.7 (21164PC)") -+ UNAME_MACHINE="alphapca57" ;; -+ "EV6 (21264)") -+ UNAME_MACHINE="alphaev6" ;; -+ "EV6.7 (21264A)") -+ UNAME_MACHINE="alphaev67" ;; -+ "EV6.8CB (21264C)") -+ UNAME_MACHINE="alphaev68" ;; -+ "EV6.8AL (21264B)") -+ UNAME_MACHINE="alphaev68" ;; -+ "EV6.8CX (21264D)") -+ UNAME_MACHINE="alphaev68" ;; -+ "EV6.9A (21264/EV69A)") -+ UNAME_MACHINE="alphaev69" ;; -+ "EV7 (21364)") -+ UNAME_MACHINE="alphaev7" ;; -+ "EV7.9 (21364A)") -+ UNAME_MACHINE="alphaev79" ;; -+ esac -+ # A Pn.n version is a patched version. -+ # A Vn.n version is a released version. -+ # 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. -+ echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` -+ # Reset EXIT trap before exiting to avoid spurious non-zero exit code. -+ exitcode=$? -+ trap '' 0 -+ exit $exitcode ;; -+ Alpha\ *:Windows_NT*:*) -+ # 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 ;; -+ 21064:Windows_NT:50:3) -+ echo alpha-dec-winnt3.5 -+ exit ;; -+ Amiga*:UNIX_System_V:4.0:*) -+ echo m68k-unknown-sysv4 -+ exit ;; -+ *:[Aa]miga[Oo][Ss]:*:*) -+ echo ${UNAME_MACHINE}-unknown-amigaos -+ exit ;; -+ *:[Mm]orph[Oo][Ss]:*:*) -+ echo ${UNAME_MACHINE}-unknown-morphos -+ exit ;; -+ *:OS/390:*:*) -+ echo i370-ibm-openedition -+ exit ;; -+ *:z/VM:*:*) -+ echo s390-ibm-zvmoe -+ exit ;; -+ *:OS400:*:*) -+ echo powerpc-ibm-os400 -+ exit ;; -+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) -+ echo arm-acorn-riscix${UNAME_RELEASE} -+ exit ;; -+ arm:riscos:*:*|arm:RISCOS:*:*) -+ echo arm-unknown-riscos -+ exit ;; -+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) -+ echo hppa1.1-hitachi-hiuxmpp -+ exit ;; -+ 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 -+ else -+ echo pyramid-pyramid-bsd -+ fi -+ exit ;; -+ NILE*:*:*:dcosx) -+ echo pyramid-pyramid-svr4 -+ exit ;; -+ DRS?6000:unix:4.0:6*) -+ echo sparc-icl-nx6 -+ exit ;; -+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) -+ case `/usr/bin/uname -p` in -+ sparc) echo sparc-icl-nx7; exit ;; -+ esac ;; -+ s390x:SunOS:*:*) -+ echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ sun4H:SunOS:5.*:*) -+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) -+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) -+ echo i386-pc-auroraux${UNAME_RELEASE} -+ exit ;; -+ i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) -+ eval $set_cc_for_build -+ SUN_ARCH="i386" -+ # If there is a compiler, see if it is configured for 64-bit objects. -+ # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. -+ # This test works for both compilers. -+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then -+ if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ -+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ -+ grep IS_64BIT_ARCH >/dev/null -+ then -+ SUN_ARCH="x86_64" -+ fi -+ fi -+ echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ sun4*:SunOS:6*:*) -+ # According to config.sub, this is the proper way to canonicalize -+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but -+ # it's likely to be more like Solaris than SunOS4. -+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ sun4*:SunOS:*:*) -+ case "`/usr/bin/arch -k`" in -+ Series*|S4*) -+ UNAME_RELEASE=`uname -v` -+ ;; -+ esac -+ # Japanese Language versions have a version number like `4.1.3-JL'. -+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` -+ exit ;; -+ sun3*:SunOS:*:*) -+ echo m68k-sun-sunos${UNAME_RELEASE} -+ exit ;; -+ sun*:*:4.2BSD:*) -+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` -+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 -+ case "`/bin/arch`" in -+ sun3) -+ echo m68k-sun-sunos${UNAME_RELEASE} -+ ;; -+ sun4) -+ echo sparc-sun-sunos${UNAME_RELEASE} -+ ;; -+ esac -+ exit ;; -+ aushp:SunOS:*:*) -+ echo sparc-auspex-sunos${UNAME_RELEASE} -+ exit ;; -+ # 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 ;; -+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) -+ echo m68k-atari-mint${UNAME_RELEASE} -+ exit ;; -+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) -+ echo m68k-atari-mint${UNAME_RELEASE} -+ exit ;; -+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) -+ echo m68k-milan-mint${UNAME_RELEASE} -+ exit ;; -+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) -+ echo m68k-hades-mint${UNAME_RELEASE} -+ exit ;; -+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) -+ echo m68k-unknown-mint${UNAME_RELEASE} -+ exit ;; -+ m68k:machten:*:*) -+ echo m68k-apple-machten${UNAME_RELEASE} -+ exit ;; -+ powerpc:machten:*:*) -+ echo powerpc-apple-machten${UNAME_RELEASE} -+ exit ;; -+ RISC*:Mach:*:*) -+ echo mips-dec-mach_bsd4.3 -+ exit ;; -+ RISC*:ULTRIX:*:*) -+ echo mips-dec-ultrix${UNAME_RELEASE} -+ exit ;; -+ VAX*:ULTRIX*:*:*) -+ echo vax-dec-ultrix${UNAME_RELEASE} -+ exit ;; -+ 2020:CLIX:*:* | 2430:CLIX:*:*) -+ echo clipper-intergraph-clix${UNAME_RELEASE} -+ exit ;; -+ mips:*:*:UMIPS | mips:*:*:RISCos) -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+#ifdef __cplusplus -+#include /* 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); -+ #endif -+ #if defined (SYSTYPE_SVR4) -+ printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); -+ #endif -+ #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) -+ printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); -+ #endif -+ #endif -+ exit (-1); -+ } -+EOF -+ $CC_FOR_BUILD -o $dummy $dummy.c && -+ dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && -+ SYSTEM_NAME=`$dummy $dummyarg` && -+ { echo "$SYSTEM_NAME"; exit; } -+ echo mips-mips-riscos${UNAME_RELEASE} -+ exit ;; -+ Motorola:PowerMAX_OS:*:*) -+ echo powerpc-motorola-powermax -+ exit ;; -+ Motorola:*:4.3:PL8-*) -+ echo powerpc-harris-powermax -+ exit ;; -+ Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) -+ echo powerpc-harris-powermax -+ exit ;; -+ Night_Hawk:Power_UNIX:*:*) -+ echo powerpc-harris-powerunix -+ exit ;; -+ m88k:CX/UX:7*:*) -+ echo m88k-harris-cxux7 -+ exit ;; -+ m88k:*:4*:R4*) -+ echo m88k-motorola-sysv4 -+ exit ;; -+ m88k:*:3*:R3*) -+ echo m88k-motorola-sysv3 -+ exit ;; -+ AViiON:dgux:*:*) -+ # DG/UX returns AViiON for all architectures -+ UNAME_PROCESSOR=`/usr/bin/uname -p` -+ 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 -+ echo m88k-dg-dguxbcs${UNAME_RELEASE} -+ fi -+ else -+ echo i586-dg-dgux${UNAME_RELEASE} -+ fi -+ exit ;; -+ M88*:DolphinOS:*:*) # DolphinOS (SVR3) -+ echo m88k-dolphin-sysv3 -+ exit ;; -+ M88*:*:R3*:*) -+ # Delta 88k system running SVR3 -+ echo m88k-motorola-sysv3 -+ exit ;; -+ XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) -+ echo m88k-tektronix-sysv3 -+ exit ;; -+ Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) -+ echo m68k-tektronix-bsd -+ exit ;; -+ *:IRIX*:*:*) -+ echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` -+ exit ;; -+ ????????: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 ;; # Note that: echo "'`uname -s`'" gives 'AIX ' -+ i*86:AIX:*:*) -+ echo i386-ibm-aix -+ exit ;; -+ 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 ;; -+ *:AIX:2:3) -+ if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #include -+ -+ main() -+ { -+ if (!__power_pc()) -+ exit(1); -+ puts("powerpc-ibm-aix3.2.5"); -+ exit(0); -+ } -+EOF -+ if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` -+ then -+ echo "$SYSTEM_NAME" -+ else -+ echo rs6000-ibm-aix3.2.5 -+ fi -+ elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then -+ echo rs6000-ibm-aix3.2.4 -+ else -+ echo rs6000-ibm-aix3.2 -+ fi -+ exit ;; -+ *:AIX:*:[4567]) -+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | 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 -+ fi -+ if [ -x /usr/bin/oslevel ] ; then -+ IBM_REV=`/usr/bin/oslevel` -+ else -+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} -+ fi -+ echo ${IBM_ARCH}-ibm-aix${IBM_REV} -+ exit ;; -+ *:AIX:*:*) -+ echo rs6000-ibm-aix -+ exit ;; -+ ibmrt:4.4BSD:*|romp-ibm:BSD:*) -+ echo romp-ibm-bsd4.4 -+ exit ;; -+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and -+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to -+ exit ;; # report: romp-ibm BSD 4.3 -+ *:BOSX:*:*) -+ echo rs6000-bull-bosx -+ exit ;; -+ DPX/2?00:B.O.S.:*:*) -+ echo m68k-bull-sysv3 -+ exit ;; -+ 9000/[34]??:4.3bsd:1.*:*) -+ echo m68k-hp-bsd -+ exit ;; -+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) -+ echo m68k-hp-bsd4.4 -+ exit ;; -+ 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]) -+ 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" ;; -+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 -+ esac ;; -+ esac -+ fi -+ if [ "${HP_ARCH}" = "" ]; then -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ -+ #define _HPUX_SOURCE -+ #include -+ #include -+ -+ int main () -+ { -+ #if defined(_SC_KERNEL_BITS) -+ long bits = sysconf(_SC_KERNEL_BITS); -+ #endif -+ long cpu = sysconf (_SC_CPU_VERSION); -+ -+ 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: -+ #if defined(_SC_KERNEL_BITS) -+ switch (bits) -+ { -+ case 64: puts ("hppa2.0w"); break; -+ case 32: puts ("hppa2.0n"); break; -+ default: puts ("hppa2.0"); break; -+ } break; -+ #else /* !defined(_SC_KERNEL_BITS) */ -+ puts ("hppa2.0"); break; -+ #endif -+ default: puts ("hppa1.0"); break; -+ } -+ exit (0); -+ } -+EOF -+ (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` -+ test -z "$HP_ARCH" && HP_ARCH=hppa -+ fi ;; -+ esac -+ if [ ${HP_ARCH} = "hppa2.0w" ] -+ then -+ eval $set_cc_for_build -+ -+ # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating -+ # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler -+ # generating 64-bit code. GNU and HP use different nomenclature: -+ # -+ # $ CC_FOR_BUILD=cc ./config.guess -+ # => hppa2.0w-hp-hpux11.23 -+ # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess -+ # => hppa64-hp-hpux11.23 -+ -+ if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | -+ grep -q __LP64__ -+ then -+ HP_ARCH="hppa2.0w" -+ else -+ HP_ARCH="hppa64" -+ fi -+ fi -+ echo ${HP_ARCH}-hp-hpux${HPUX_REV} -+ exit ;; -+ ia64:HP-UX:*:*) -+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` -+ echo ia64-hp-hpux${HPUX_REV} -+ exit ;; -+ 3050*:HI-UX:*:*) -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #include -+ int -+ main () -+ { -+ long cpu = sysconf (_SC_CPU_VERSION); -+ /* The order matters, because CPU_IS_HP_MC68K erroneously returns -+ true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct -+ results, however. */ -+ if (CPU_IS_PA_RISC (cpu)) -+ { -+ switch (cpu) -+ { -+ case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; -+ case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; -+ case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; -+ default: puts ("hppa-hitachi-hiuxwe2"); break; -+ } -+ } -+ else if (CPU_IS_HP_MC68K (cpu)) -+ puts ("m68k-hitachi-hiuxwe2"); -+ else puts ("unknown-hitachi-hiuxwe2"); -+ exit (0); -+ } -+EOF -+ $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && -+ { echo "$SYSTEM_NAME"; exit; } -+ echo unknown-hitachi-hiuxwe2 -+ exit ;; -+ 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) -+ echo hppa1.1-hp-bsd -+ exit ;; -+ 9000/8??:4.3bsd:*:*) -+ echo hppa1.0-hp-bsd -+ exit ;; -+ *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) -+ echo hppa1.0-hp-mpeix -+ exit ;; -+ hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) -+ echo hppa1.1-hp-osf -+ exit ;; -+ hp8??:OSF1:*:*) -+ echo hppa1.0-hp-osf -+ exit ;; -+ i*86:OSF1:*:*) -+ if [ -x /usr/sbin/sysversion ] ; then -+ echo ${UNAME_MACHINE}-unknown-osf1mk -+ else -+ echo ${UNAME_MACHINE}-unknown-osf1 -+ fi -+ exit ;; -+ parisc*:Lites*:*:*) -+ echo hppa1.1-hp-lites -+ exit ;; -+ C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) -+ echo c1-convex-bsd -+ exit ;; -+ C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) -+ if getsysinfo -f scalar_acc -+ then echo c32-convex-bsd -+ else echo c2-convex-bsd -+ fi -+ exit ;; -+ C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) -+ echo c34-convex-bsd -+ exit ;; -+ C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) -+ echo c38-convex-bsd -+ exit ;; -+ C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) -+ echo c4-convex-bsd -+ exit ;; -+ CRAY*Y-MP:*:*:*) -+ echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ CRAY*[A-Z]90:*:*:*) -+ echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ -+ | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ -+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ -+ -e 's/\.[^.]*$/.X/' -+ exit ;; -+ CRAY*TS:*:*:*) -+ echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ CRAY*T3E:*:*:*) -+ echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ CRAY*SV1:*:*:*) -+ echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ *:UNICOS/mp:*:*) -+ echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' -+ exit ;; -+ 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 "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ exit ;; -+ 5000:UNIX_System_V:4.*:*) -+ FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` -+ FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` -+ echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" -+ exit ;; -+ i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) -+ echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} -+ exit ;; -+ sparc*:BSD/OS:*:*) -+ echo sparc-unknown-bsdi${UNAME_RELEASE} -+ exit ;; -+ *:BSD/OS:*:*) -+ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} -+ exit ;; -+ *:FreeBSD:*:*) -+ UNAME_PROCESSOR=`/usr/bin/uname -p` -+ case ${UNAME_PROCESSOR} in -+ amd64) -+ echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ *) -+ echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; -+ esac -+ exit ;; -+ i*:CYGWIN*:*) -+ echo ${UNAME_MACHINE}-pc-cygwin -+ exit ;; -+ *:MINGW*:*) -+ echo ${UNAME_MACHINE}-pc-mingw32 -+ exit ;; -+ i*:MSYS*:*) -+ echo ${UNAME_MACHINE}-pc-msys -+ exit ;; -+ i*:windows32*:*) -+ # uname -m includes "-pc" on this system. -+ echo ${UNAME_MACHINE}-mingw32 -+ exit ;; -+ i*:PW*:*) -+ echo ${UNAME_MACHINE}-pc-pw32 -+ exit ;; -+ *:Interix*:*) -+ case ${UNAME_MACHINE} in -+ x86) -+ echo i586-pc-interix${UNAME_RELEASE} -+ exit ;; -+ authenticamd | genuineintel | EM64T) -+ echo x86_64-unknown-interix${UNAME_RELEASE} -+ exit ;; -+ IA64) -+ echo ia64-unknown-interix${UNAME_RELEASE} -+ exit ;; -+ esac ;; -+ [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) -+ echo i${UNAME_MACHINE}-pc-mks -+ exit ;; -+ 8664:Windows_NT:*) -+ echo x86_64-pc-mks -+ exit ;; -+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*) -+ # 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 -+ # UNAME_MACHINE based on the output of uname instead of i386? -+ echo i586-pc-interix -+ exit ;; -+ i*:UWIN*:*) -+ echo ${UNAME_MACHINE}-pc-uwin -+ exit ;; -+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) -+ echo x86_64-unknown-cygwin -+ exit ;; -+ p*:CYGWIN*:*) -+ echo powerpcle-unknown-cygwin -+ exit ;; -+ prep*:SunOS:5.*:*) -+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` -+ exit ;; -+ *:GNU:*:*) -+ # the GNU system -+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` -+ exit ;; -+ *:GNU/*:*:*) -+ # other systems with GNU libc and userland -+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu -+ exit ;; -+ i*86:Minix:*:*) -+ echo ${UNAME_MACHINE}-pc-minix -+ exit ;; -+ aarch64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ aarch64_be:Linux:*:*) -+ UNAME_MACHINE=aarch64_be -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ alpha:Linux:*:*) -+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in -+ EV5) UNAME_MACHINE=alphaev5 ;; -+ EV56) UNAME_MACHINE=alphaev56 ;; -+ PCA56) UNAME_MACHINE=alphapca56 ;; -+ PCA57) UNAME_MACHINE=alphapca56 ;; -+ EV6) UNAME_MACHINE=alphaev6 ;; -+ EV67) UNAME_MACHINE=alphaev67 ;; -+ EV68*) UNAME_MACHINE=alphaev68 ;; -+ esac -+ objdump --private-headers /bin/sh | grep -q ld.so.1 -+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi -+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} -+ exit ;; -+ arm*:Linux:*:*) -+ eval $set_cc_for_build -+ if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ -+ | grep -q __ARM_EABI__ -+ then -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ else -+ if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ -+ | grep -q __ARM_PCS_VFP -+ then -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabi -+ else -+ echo ${UNAME_MACHINE}-unknown-linux-gnueabihf -+ fi -+ fi -+ exit ;; -+ avr32*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ cris:Linux:*:*) -+ echo ${UNAME_MACHINE}-axis-linux-gnu -+ exit ;; -+ crisv32:Linux:*:*) -+ echo ${UNAME_MACHINE}-axis-linux-gnu -+ exit ;; -+ frv:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ hexagon:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ i*86:Linux:*:*) -+ LIBC=gnu -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #ifdef __dietlibc__ -+ LIBC=dietlibc -+ #endif -+EOF -+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` -+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}" -+ exit ;; -+ ia64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ m32r*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ m68*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ mips:Linux:*:* | mips64:Linux:*:*) -+ eval $set_cc_for_build -+ sed 's/^ //' << EOF >$dummy.c -+ #undef CPU -+ #undef ${UNAME_MACHINE} -+ #undef ${UNAME_MACHINE}el -+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) -+ CPU=${UNAME_MACHINE}el -+ #else -+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) -+ CPU=${UNAME_MACHINE} -+ #else -+ CPU= -+ #endif -+ #endif -+EOF -+ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` -+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } -+ ;; -+ or32:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ padre:Linux:*:*) -+ echo sparc-unknown-linux-gnu -+ exit ;; -+ parisc64:Linux:*:* | hppa64:Linux:*:*) -+ echo hppa64-unknown-linux-gnu -+ exit ;; -+ 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 ;; -+ ppc64:Linux:*:*) -+ echo powerpc64-unknown-linux-gnu -+ exit ;; -+ ppc:Linux:*:*) -+ echo powerpc-unknown-linux-gnu -+ exit ;; -+ s390:Linux:*:* | s390x:Linux:*:*) -+ echo ${UNAME_MACHINE}-ibm-linux -+ exit ;; -+ sh64*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ sh*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ sparc:Linux:*:* | sparc64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ tile*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ vax:Linux:*:*) -+ echo ${UNAME_MACHINE}-dec-linux-gnu -+ exit ;; -+ x86_64:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ xtensa*:Linux:*:*) -+ echo ${UNAME_MACHINE}-unknown-linux-gnu -+ exit ;; -+ i*86:DYNIX/ptx:4*:*) -+ # 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. -+ echo i386-sequent-sysv4 -+ exit ;; -+ 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, -+ # I just have to hope. -- rms. -+ # Use sysv4.2uw... so that sysv4* matches it. -+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} -+ exit ;; -+ 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 ;; -+ i*86:XTS-300:*:STOP) -+ echo ${UNAME_MACHINE}-unknown-stop -+ exit ;; -+ i*86:atheos:*:*) -+ echo ${UNAME_MACHINE}-unknown-atheos -+ exit ;; -+ i*86:syllable:*:*) -+ echo ${UNAME_MACHINE}-pc-syllable -+ exit ;; -+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) -+ echo i386-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ i*86:*DOS:*:*) -+ echo ${UNAME_MACHINE}-pc-msdosdjgpp -+ exit ;; -+ 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_REL} -+ else -+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} -+ fi -+ exit ;; -+ i*86:*:5:[678]*) -+ # UnixWare 7.x, OpenUNIX and OpenServer 6. -+ case `/bin/uname -X | grep "^Machine"` in -+ *486*) UNAME_MACHINE=i486 ;; -+ *Pentium) UNAME_MACHINE=i586 ;; -+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;; -+ esac -+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} -+ exit ;; -+ i*86:*:3.2:*) -+ if test -f /usr/options/cb.name; then -+ UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then -+ UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` -+ (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 -+ (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ -+ && UNAME_MACHINE=i586 -+ (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ -+ && UNAME_MACHINE=i686 -+ (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ -+ && UNAME_MACHINE=i686 -+ echo ${UNAME_MACHINE}-pc-sco$UNAME_REL -+ else -+ echo ${UNAME_MACHINE}-pc-sysv32 -+ fi -+ exit ;; -+ 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 i586. -+ # Note: whatever this is, it MUST be the same as what config.sub -+ # prints for the "djgpp" host, or else GDB configury will decide that -+ # this is a cross-build. -+ echo i586-pc-msdosdjgpp -+ exit ;; -+ Intel:Mach:3*:*) -+ echo i386-pc-mach3 -+ exit ;; -+ paragon:*:*:*) -+ echo i860-intel-osf1 -+ exit ;; -+ i860:*:4.*:*) # i860-SVR4 -+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then -+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 -+ else # Add other i860-SVR4 vendors below as they are discovered. -+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 -+ fi -+ exit ;; -+ mini*:CTIX:SYS*5:*) -+ # "miniframe" -+ echo m68010-convergent-sysv -+ exit ;; -+ mc68k:UNIX:SYSTEM5:3.51m) -+ echo m68k-convergent-sysv -+ exit ;; -+ M680?0:D-NIX:5.3:*) -+ echo m68k-diab-dnix -+ exit ;; -+ M68*:*:R3V[5678]*:*) -+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; -+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) -+ OS_REL='' -+ test -r /etc/.relid \ -+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` -+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } -+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ -+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; -+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) -+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -+ && { echo i486-ncr-sysv4; exit; } ;; -+ NCR*:*:4.2:* | MPRAS*:*:4.2:*) -+ OS_REL='.3' -+ test -r /etc/.relid \ -+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` -+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ -+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; } -+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ -+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } -+ /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ -+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; -+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) -+ echo m68k-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ mc68030:UNIX_System_V:4.*:*) -+ echo m68k-atari-sysv4 -+ exit ;; -+ TSUNAMI:LynxOS:2.*:*) -+ echo sparc-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ rs6000:LynxOS:2.*:*) -+ echo rs6000-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) -+ echo powerpc-unknown-lynxos${UNAME_RELEASE} -+ exit ;; -+ SM[BE]S:UNIX_SV:*:*) -+ echo mips-dde-sysv${UNAME_RELEASE} -+ exit ;; -+ RM*:ReliantUNIX-*:*:*) -+ echo mips-sni-sysv4 -+ exit ;; -+ RM*:SINIX-*:*:*) -+ echo mips-sni-sysv4 -+ exit ;; -+ *:SINIX-*:*:*) -+ if uname -p 2>/dev/null >/dev/null ; then -+ UNAME_MACHINE=`(uname -p) 2>/dev/null` -+ echo ${UNAME_MACHINE}-sni-sysv4 -+ else -+ echo ns32k-sni-sysv -+ fi -+ exit ;; -+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort -+ # says -+ echo i586-unisys-sysv4 -+ exit ;; -+ *:UNIX_System_V:4*:FTX*) -+ # From Gerald Hewes . -+ # How about differentiating between stratus architectures? -djm -+ echo hppa1.1-stratus-sysv4 -+ exit ;; -+ *:*:*:FTX*) -+ # From seanf@swdc.stratus.com. -+ echo i860-stratus-sysv4 -+ exit ;; -+ i*86:VOS:*:*) -+ # From Paul.Green@stratus.com. -+ echo ${UNAME_MACHINE}-stratus-vos -+ exit ;; -+ *:VOS:*:*) -+ # From Paul.Green@stratus.com. -+ echo hppa1.1-stratus-vos -+ exit ;; -+ mc68*:A/UX:*:*) -+ echo m68k-apple-aux${UNAME_RELEASE} -+ exit ;; -+ news*:NEWS-OS:6*:*) -+ echo mips-sony-newsos6 -+ exit ;; -+ R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) -+ if [ -d /usr/nec ]; then -+ echo mips-nec-sysv${UNAME_RELEASE} -+ else -+ echo mips-unknown-sysv${UNAME_RELEASE} -+ fi -+ exit ;; -+ BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. -+ echo powerpc-be-beos -+ exit ;; -+ BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. -+ echo powerpc-apple-beos -+ exit ;; -+ BePC:BeOS:*:*) # BeOS running on Intel PC compatible. -+ echo i586-pc-beos -+ exit ;; -+ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. -+ echo i586-pc-haiku -+ exit ;; -+ SX-4:SUPER-UX:*:*) -+ echo sx4-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-5:SUPER-UX:*:*) -+ echo sx5-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-6:SUPER-UX:*:*) -+ echo sx6-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-7:SUPER-UX:*:*) -+ echo sx7-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-8:SUPER-UX:*:*) -+ echo sx8-nec-superux${UNAME_RELEASE} -+ exit ;; -+ SX-8R:SUPER-UX:*:*) -+ echo sx8r-nec-superux${UNAME_RELEASE} -+ exit ;; -+ Power*:Rhapsody:*:*) -+ echo powerpc-apple-rhapsody${UNAME_RELEASE} -+ exit ;; -+ *:Rhapsody:*:*) -+ echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} -+ exit ;; -+ *:Darwin:*:*) -+ UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown -+ case $UNAME_PROCESSOR in -+ i386) -+ eval $set_cc_for_build -+ if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then -+ if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ -+ (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ -+ grep IS_64BIT_ARCH >/dev/null -+ then -+ UNAME_PROCESSOR="x86_64" -+ fi -+ fi ;; -+ unknown) UNAME_PROCESSOR=powerpc ;; -+ esac -+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} -+ exit ;; -+ *:procnto*:*:* | *:QNX:[0123456789]*:*) -+ UNAME_PROCESSOR=`uname -p` -+ if test "$UNAME_PROCESSOR" = "x86"; then -+ UNAME_PROCESSOR=i386 -+ UNAME_MACHINE=pc -+ fi -+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} -+ exit ;; -+ *:QNX:*:4*) -+ echo i386-pc-qnx -+ exit ;; -+ NEO-?:NONSTOP_KERNEL:*:*) -+ echo neo-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ NSE-?:NONSTOP_KERNEL:*:*) -+ echo nse-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ NSR-?:NONSTOP_KERNEL:*:*) -+ echo nsr-tandem-nsk${UNAME_RELEASE} -+ exit ;; -+ *:NonStop-UX:*:*) -+ echo mips-compaq-nonstopux -+ exit ;; -+ BS2000:POSIX*:*:*) -+ echo bs2000-siemens-sysv -+ exit ;; -+ DS/*:UNIX_System_V:*:*) -+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} -+ exit ;; -+ *: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 ;; -+ *:TOPS-10:*:*) -+ echo pdp10-unknown-tops10 -+ exit ;; -+ *:TENEX:*:*) -+ echo pdp10-unknown-tenex -+ exit ;; -+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) -+ echo pdp10-dec-tops20 -+ exit ;; -+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) -+ echo pdp10-xkl-tops20 -+ exit ;; -+ *:TOPS-20:*:*) -+ echo pdp10-unknown-tops20 -+ exit ;; -+ *:ITS:*:*) -+ echo pdp10-unknown-its -+ exit ;; -+ SEI:*:*:SEIUX) -+ echo mips-sei-seiux${UNAME_RELEASE} -+ exit ;; -+ *:DragonFly:*:*) -+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` -+ exit ;; -+ *:*VMS:*:*) -+ UNAME_MACHINE=`(uname -p) 2>/dev/null` -+ case "${UNAME_MACHINE}" in -+ A*) echo alpha-dec-vms ; exit ;; -+ I*) echo ia64-dec-vms ; exit ;; -+ V*) echo vax-dec-vms ; exit ;; -+ esac ;; -+ *:XENIX:*:SysV) -+ echo i386-pc-xenix -+ exit ;; -+ i*86:skyos:*:*) -+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' -+ exit ;; -+ i*86:rdos:*:*) -+ echo ${UNAME_MACHINE}-pc-rdos -+ exit ;; -+ i*86:AROS:*:*) -+ echo ${UNAME_MACHINE}-pc-aros -+ exit ;; -+ x86_64:VMkernel:*:*) -+ echo ${UNAME_MACHINE}-unknown-esx -+ exit ;; -+esac -+ -+#echo '(No uname command or uname output not recognized.)' 1>&2 -+#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 -+ -+eval $set_cc_for_build -+cat >$dummy.c < -+# include -+#endif -+main () -+{ -+#if defined (sony) -+#if defined (MIPSEB) -+ /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, -+ I don't know.... */ -+ printf ("mips-sony-bsd\n"); exit (0); -+#else -+#include -+ printf ("m68k-sony-newsos%s\n", -+#ifdef NEWSOS4 -+ "4" -+#else -+ "" -+#endif -+ ); exit (0); -+#endif -+#endif -+ -+#if defined (__arm) && defined (__acorn) && defined (__unix) -+ printf ("arm-acorn-riscix\n"); exit (0); -+#endif -+ -+#if defined (hp300) && !defined (hpux) -+ printf ("m68k-hp-bsd\n"); exit (0); -+#endif -+ -+#if defined (NeXT) -+#if !defined (__ARCHITECTURE__) -+#define __ARCHITECTURE__ "m68k" -+#endif -+ int version; -+ version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; -+ if (version < 4) -+ printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); -+ else -+ printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); -+ exit (0); -+#endif -+ -+#if defined (MULTIMAX) || defined (n16) -+#if defined (UMAXV) -+ printf ("ns32k-encore-sysv\n"); exit (0); -+#else -+#if defined (CMU) -+ printf ("ns32k-encore-mach\n"); exit (0); -+#else -+ printf ("ns32k-encore-bsd\n"); exit (0); -+#endif -+#endif -+#endif -+ -+#if defined (__386BSD__) -+ printf ("i386-pc-bsd\n"); exit (0); -+#endif -+ -+#if defined (sequent) -+#if defined (i386) -+ printf ("i386-sequent-dynix\n"); exit (0); -+#endif -+#if defined (ns32000) -+ printf ("ns32k-sequent-dynix\n"); exit (0); -+#endif -+#endif -+ -+#if defined (_SEQUENT_) -+ struct utsname un; -+ -+ uname(&un); -+ -+ if (strncmp(un.version, "V2", 2) == 0) { -+ printf ("i386-sequent-ptx2\n"); exit (0); -+ } -+ if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ -+ printf ("i386-sequent-ptx1\n"); exit (0); -+ } -+ printf ("i386-sequent-ptx\n"); exit (0); -+ -+#endif -+ -+#if defined (vax) -+# if !defined (ultrix) -+# include -+# 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) -+ printf ("i860-alliant-bsd\n"); exit (0); -+#endif -+ -+ exit (1); -+} -+EOF -+ -+$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && -+ { echo "$SYSTEM_NAME"; exit; } -+ -+# Apollos put the system type in the environment. -+ -+test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } -+ -+# Convex versions that predate uname can use getsysinfo(1) -+ -+if [ -x /usr/convex/getsysinfo ] -+then -+ case `getsysinfo -f cpu_type` in -+ c1*) -+ echo c1-convex-bsd -+ exit ;; -+ c2*) -+ if getsysinfo -f scalar_acc -+ then echo c32-convex-bsd -+ else echo c2-convex-bsd -+ fi -+ exit ;; -+ c34*) -+ echo c34-convex-bsd -+ exit ;; -+ c38*) -+ echo c38-convex-bsd -+ exit ;; -+ c4*) -+ echo c4-convex-bsd -+ exit ;; -+ esac -+fi -+ -+cat >&2 < 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/libclamav/libmspack-0.4alpha/config.h.in b/libclamav/libmspack-0.4alpha/config.h.in -new file mode 100644 -index 000000000000..3c763df74f7a ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/config.h.in -@@ -0,0 +1,113 @@ -+/* config.h.in. Generated from configure.ac by autoheader. */ -+ -+/* Turn debugging mode on? */ -+#undef DEBUG -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_CTYPE_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_DLFCN_H -+ -+/* Define to 1 if fseeko (and presumably ftello) exists and is declared. */ -+#undef HAVE_FSEEKO -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_INTTYPES_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_LIMITS_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_MEMORY_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_STDINT_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_STDLIB_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_STRINGS_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_STRING_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_SYS_STAT_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_SYS_TYPES_H -+ -+/* Define to 1 if you have the `tolower' function. */ -+#undef HAVE_TOLOWER -+ -+/* Define to 1 if you have the `towlower' function. */ -+#undef HAVE_TOWLOWER -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_UNISTD_H -+ -+/* Define to 1 if you have the header file. */ -+#undef HAVE_WCTYPE_H -+ -+/* Define to the sub-directory in which libtool stores uninstalled libraries. -+ */ -+#undef LT_OBJDIR -+ -+/* Name of package */ -+#undef PACKAGE -+ -+/* Define to the address where bug reports for this package should be sent. */ -+#undef PACKAGE_BUGREPORT -+ -+/* Define to the full name of this package. */ -+#undef PACKAGE_NAME -+ -+/* Define to the full name and version of this package. */ -+#undef PACKAGE_STRING -+ -+/* Define to the one symbol short name of this package. */ -+#undef PACKAGE_TARNAME -+ -+/* Define to the home page for this package. */ -+#undef PACKAGE_URL -+ -+/* Define to the version of this package. */ -+#undef PACKAGE_VERSION -+ -+/* The size of `off_t', as computed by sizeof. */ -+#undef SIZEOF_OFF_T -+ -+/* Define to 1 if you have the ANSI C header files. */ -+#undef STDC_HEADERS -+ -+/* Version number of package */ -+#undef VERSION -+ -+/* Number of bits in a file offset, on hosts where this is settable. */ -+#undef _FILE_OFFSET_BITS -+ -+/* Define to 1 to make fseeko visible on some hosts (e.g. glibc 2.2). */ -+#undef _LARGEFILE_SOURCE -+ -+/* Define for large files, on AIX-style hosts. */ -+#undef _LARGE_FILES -+ -+/* Define to empty if `const' does not conform to ANSI C. */ -+#undef const -+ -+/* Define to `__inline__' or `__inline' if that's what the C compiler -+ calls it, or to nothing if 'inline' is not supported under any name. */ -+#ifndef __cplusplus -+#undef inline -+#endif -+ -+/* Define to `int' if does not define. */ -+#undef mode_t -+ -+/* Define to `long int' if does not define. */ -+#undef off_t -+ -+/* Define to `unsigned int' if does not define. */ -+#undef size_t -diff --git a/libclamav/libmspack-0.4alpha/config.sub b/libclamav/libmspack-0.4alpha/config.sub -new file mode 100755 -index 000000000000..c894da45500c ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/config.sub -@@ -0,0 +1,1773 @@ -+#! /bin/sh -+# Configuration validation subroutine script. -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -+# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -+# 2011, 2012 Free Software Foundation, Inc. -+ -+timestamp='2012-02-10' -+ -+# 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. -+# -+# 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 -+# (at your option) any later version. -+# -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with this program; if not, see . -+# -+# 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. -+ -+ -+# Please send patches to . Submit a context -+# diff and a properly formatted GNU ChangeLog entry. -+# -+# 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. -+# Otherwise, we print the canonical config type on stdout and succeed. -+ -+# You can get the latest version of this script from: -+# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD -+ -+# This file is supposed to be the same for all GNU packages -+# and recognize all the CPU types, system types and aliases -+# that are meaningful with *any* GNU software. -+# Each package is responsible for reporting which valid configurations -+# it does not support. The user should be able to distinguish -+# a failure to support a valid configuration from a meaningless -+# configuration. -+ -+# The goal of this file is to map all the various variations of a given -+# machine specification into a single specification in the form: -+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -+# or in some cases, the newer four-part form: -+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -+# It is wrong to echo any other type of specification. -+ -+me=`echo "$0" | sed -e 's,.*/,,'` -+ -+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 ." -+ -+version="\ -+GNU config.sub ($timestamp) -+ -+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 -+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 ;; -+ --version | -v ) -+ echo "$version" ; exit ;; -+ --help | --h* | -h ) -+ echo "$usage"; exit ;; -+ -- ) # 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 ;; -+ -+ * ) -+ 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 -+ nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ -+ linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ -+ knetbsd*-gnu* | netbsd*-gnu* | \ -+ kopensolaris*-gnu* | \ -+ storm-chaos* | os2-emx* | rtmk-nova*) -+ os=-$maybe_os -+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` -+ ;; -+ android-linux) -+ os=-linux-android -+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown -+ ;; -+ *) -+ basic_machine=`echo $1 | sed 's/-[^-]*$//'` -+ if [ $basic_machine != $1 ] -+ then os=`echo $1 | sed 's/.*-/-/'` -+ else os=; fi -+ ;; -+esac -+ -+### Let's recognize common machines as not being operating systems so -+### that things like config.sub decstation-3100 work. We also -+### recognize some manufacturers as not being operating systems, so we -+### can provide default operating systems below. -+case $os in -+ -sun*os*) -+ # Prevent following clause from handling this invalid input. -+ ;; -+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ -+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ -+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ -+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ -+ -apple | -axis | -knuth | -cray | -microblaze) -+ os= -+ basic_machine=$1 -+ ;; -+ -bluegene*) -+ os=-cnk -+ ;; -+ -sim | -cisco | -oki | -wec | -winbond) -+ os= -+ basic_machine=$1 -+ ;; -+ -scout) -+ ;; -+ -wrs) -+ os=-vxworks -+ basic_machine=$1 -+ ;; -+ -chorusos*) -+ os=-chorusos -+ basic_machine=$1 -+ ;; -+ -chorusrdb) -+ os=-chorusrdb -+ basic_machine=$1 -+ ;; -+ -hiux*) -+ os=-hiuxwe2 -+ ;; -+ -sco6) -+ os=-sco5v6 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco5) -+ os=-sco3.2v5 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco4) -+ os=-sco3.2v4 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco3.2.[4-9]*) -+ os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco3.2v[4-9]*) -+ # Don't forget version if it is 3.2v4 or newer. -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco5v6*) -+ # Don't forget version if it is 3.2v4 or newer. -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -sco*) -+ os=-sco3.2v2 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -udk*) -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -isc) -+ os=-isc2.2 -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -clix*) -+ basic_machine=clipper-intergraph -+ ;; -+ -isc*) -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` -+ ;; -+ -lynx*) -+ os=-lynxos -+ ;; -+ -ptx*) -+ basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` -+ ;; -+ -windowsnt*) -+ os=`echo $os | sed -e 's/windowsnt/winnt/'` -+ ;; -+ -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. -+ 1750a | 580 \ -+ | a29k \ -+ | aarch64 | aarch64_be \ -+ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ -+ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ -+ | am33_2.0 \ -+ | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ -+ | be32 | be64 \ -+ | bfin \ -+ | c4x | clipper \ -+ | d10v | d30v | dlx | dsp16xx \ -+ | epiphany \ -+ | fido | fr30 | frv \ -+ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ -+ | hexagon \ -+ | i370 | i860 | i960 | ia64 \ -+ | ip2k | iq2000 \ -+ | le32 | le64 \ -+ | lm32 \ -+ | m32c | m32r | m32rle | m68000 | m68k | m88k \ -+ | maxq | mb | microblaze | mcore | mep | metag \ -+ | mips | mipsbe | mipseb | mipsel | mipsle \ -+ | mips16 \ -+ | mips64 | mips64el \ -+ | mips64octeon | mips64octeonel \ -+ | mips64orion | mips64orionel \ -+ | mips64r5900 | mips64r5900el \ -+ | mips64vr | mips64vrel \ -+ | mips64vr4100 | mips64vr4100el \ -+ | mips64vr4300 | mips64vr4300el \ -+ | mips64vr5000 | mips64vr5000el \ -+ | mips64vr5900 | mips64vr5900el \ -+ | mipsisa32 | mipsisa32el \ -+ | mipsisa32r2 | mipsisa32r2el \ -+ | mipsisa64 | mipsisa64el \ -+ | mipsisa64r2 | mipsisa64r2el \ -+ | mipsisa64sb1 | mipsisa64sb1el \ -+ | mipsisa64sr71k | mipsisa64sr71kel \ -+ | mipstx39 | mipstx39el \ -+ | mn10200 | mn10300 \ -+ | moxie \ -+ | mt \ -+ | msp430 \ -+ | nds32 | nds32le | nds32be \ -+ | nios | nios2 \ -+ | ns16k | ns32k \ -+ | open8 \ -+ | or32 \ -+ | pdp10 | pdp11 | pj | pjl \ -+ | powerpc | powerpc64 | powerpc64le | powerpcle \ -+ | pyramid \ -+ | rl78 | rx \ -+ | score \ -+ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ -+ | sh64 | sh64le \ -+ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ -+ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ -+ | spu \ -+ | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ -+ | ubicom32 \ -+ | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ -+ | we32k \ -+ | x86 | xc16x | xstormy16 | xtensa \ -+ | z8k | z80) -+ basic_machine=$basic_machine-unknown -+ ;; -+ c54x) -+ basic_machine=tic54x-unknown -+ ;; -+ c55x) -+ basic_machine=tic55x-unknown -+ ;; -+ c6x) -+ basic_machine=tic6x-unknown -+ ;; -+ m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) -+ basic_machine=$basic_machine-unknown -+ os=-none -+ ;; -+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) -+ ;; -+ ms1) -+ basic_machine=mt-unknown -+ ;; -+ -+ strongarm | thumb | xscale) -+ basic_machine=arm-unknown -+ ;; -+ xgate) -+ basic_machine=$basic_machine-unknown -+ os=-none -+ ;; -+ xscaleeb) -+ basic_machine=armeb-unknown -+ ;; -+ -+ xscaleel) -+ basic_machine=armel-unknown -+ ;; -+ -+ # 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*86 | x86_64) -+ basic_machine=$basic_machine-pc -+ ;; -+ # Object if more than one company name word. -+ *-*-*) -+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 -+ exit 1 -+ ;; -+ # Recognize the basic CPU types with company name. -+ 580-* \ -+ | a29k-* \ -+ | aarch64-* | aarch64_be-* \ -+ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ -+ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ -+ | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ -+ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ -+ | avr-* | avr32-* \ -+ | be32-* | be64-* \ -+ | bfin-* | bs2000-* \ -+ | c[123]* | c30-* | [cjt]90-* | c4x-* \ -+ | clipper-* | craynv-* | cydra-* \ -+ | d10v-* | d30v-* | dlx-* \ -+ | elxsi-* \ -+ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ -+ | h8300-* | h8500-* \ -+ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ -+ | hexagon-* \ -+ | i*86-* | i860-* | i960-* | ia64-* \ -+ | ip2k-* | iq2000-* \ -+ | le32-* | le64-* \ -+ | lm32-* \ -+ | m32c-* | m32r-* | m32rle-* \ -+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ -+ | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ -+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ -+ | mips16-* \ -+ | mips64-* | mips64el-* \ -+ | mips64octeon-* | mips64octeonel-* \ -+ | mips64orion-* | mips64orionel-* \ -+ | mips64r5900-* | mips64r5900el-* \ -+ | mips64vr-* | mips64vrel-* \ -+ | mips64vr4100-* | mips64vr4100el-* \ -+ | mips64vr4300-* | mips64vr4300el-* \ -+ | mips64vr5000-* | mips64vr5000el-* \ -+ | mips64vr5900-* | mips64vr5900el-* \ -+ | mipsisa32-* | mipsisa32el-* \ -+ | mipsisa32r2-* | mipsisa32r2el-* \ -+ | mipsisa64-* | mipsisa64el-* \ -+ | mipsisa64r2-* | mipsisa64r2el-* \ -+ | mipsisa64sb1-* | mipsisa64sb1el-* \ -+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ -+ | mipstx39-* | mipstx39el-* \ -+ | mmix-* \ -+ | mt-* \ -+ | msp430-* \ -+ | nds32-* | nds32le-* | nds32be-* \ -+ | nios-* | nios2-* \ -+ | none-* | np1-* | ns16k-* | ns32k-* \ -+ | open8-* \ -+ | orion-* \ -+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ -+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ -+ | pyramid-* \ -+ | rl78-* | romp-* | rs6000-* | rx-* \ -+ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ -+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ -+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ -+ | sparclite-* \ -+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ -+ | tahoe-* \ -+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ -+ | tile*-* \ -+ | tron-* \ -+ | ubicom32-* \ -+ | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ -+ | vax-* \ -+ | we32k-* \ -+ | x86-* | x86_64-* | xc16x-* | xps100-* \ -+ | xstormy16-* | xtensa*-* \ -+ | ymp-* \ -+ | z8k-* | z80-*) -+ ;; -+ # Recognize the basic CPU types without company name, with glob match. -+ xtensa*) -+ basic_machine=$basic_machine-unknown -+ ;; -+ # Recognize the various machine names and aliases which stand -+ # for a CPU type and a company and sometimes even an OS. -+ 386bsd) -+ basic_machine=i386-unknown -+ os=-bsd -+ ;; -+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) -+ basic_machine=m68000-att -+ ;; -+ 3b*) -+ basic_machine=we32k-att -+ ;; -+ a29khif) -+ basic_machine=a29k-amd -+ os=-udi -+ ;; -+ abacus) -+ basic_machine=abacus-unknown -+ ;; -+ adobe68k) -+ basic_machine=m68010-adobe -+ os=-scout -+ ;; -+ alliant | fx80) -+ basic_machine=fx80-alliant -+ ;; -+ altos | altos3068) -+ basic_machine=m68k-altos -+ ;; -+ am29k) -+ basic_machine=a29k-none -+ os=-bsd -+ ;; -+ amd64) -+ basic_machine=x86_64-pc -+ ;; -+ amd64-*) -+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ amdahl) -+ basic_machine=580-amdahl -+ os=-sysv -+ ;; -+ amiga | amiga-*) -+ basic_machine=m68k-unknown -+ ;; -+ amigaos | amigados) -+ basic_machine=m68k-unknown -+ os=-amigaos -+ ;; -+ amigaunix | amix) -+ basic_machine=m68k-unknown -+ os=-sysv4 -+ ;; -+ apollo68) -+ basic_machine=m68k-apollo -+ os=-sysv -+ ;; -+ apollo68bsd) -+ basic_machine=m68k-apollo -+ os=-bsd -+ ;; -+ aros) -+ basic_machine=i386-pc -+ os=-aros -+ ;; -+ aux) -+ basic_machine=m68k-apple -+ os=-aux -+ ;; -+ balance) -+ basic_machine=ns32k-sequent -+ os=-dynix -+ ;; -+ blackfin) -+ basic_machine=bfin-unknown -+ os=-linux -+ ;; -+ blackfin-*) -+ basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=-linux -+ ;; -+ bluegene*) -+ basic_machine=powerpc-ibm -+ os=-cnk -+ ;; -+ c54x-*) -+ basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ c55x-*) -+ basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ c6x-*) -+ basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ c90) -+ basic_machine=c90-cray -+ os=-unicos -+ ;; -+ cegcc) -+ basic_machine=arm-unknown -+ os=-cegcc -+ ;; -+ convex-c1) -+ basic_machine=c1-convex -+ os=-bsd -+ ;; -+ convex-c2) -+ basic_machine=c2-convex -+ os=-bsd -+ ;; -+ convex-c32) -+ basic_machine=c32-convex -+ os=-bsd -+ ;; -+ convex-c34) -+ basic_machine=c34-convex -+ os=-bsd -+ ;; -+ convex-c38) -+ basic_machine=c38-convex -+ os=-bsd -+ ;; -+ cray | j90) -+ basic_machine=j90-cray -+ os=-unicos -+ ;; -+ craynv) -+ basic_machine=craynv-cray -+ os=-unicosmp -+ ;; -+ cr16 | cr16-*) -+ basic_machine=cr16-unknown -+ os=-elf -+ ;; -+ crds | unos) -+ basic_machine=m68k-crds -+ ;; -+ crisv32 | crisv32-* | etraxfs*) -+ basic_machine=crisv32-axis -+ ;; -+ cris | cris-* | etrax*) -+ basic_machine=cris-axis -+ ;; -+ crx) -+ basic_machine=crx-unknown -+ os=-elf -+ ;; -+ da30 | da30-*) -+ basic_machine=m68k-da30 -+ ;; -+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) -+ basic_machine=mips-dec -+ ;; -+ decsystem10* | dec10*) -+ basic_machine=pdp10-dec -+ os=-tops10 -+ ;; -+ decsystem20* | dec20*) -+ basic_machine=pdp10-dec -+ os=-tops20 -+ ;; -+ delta | 3300 | motorola-3300 | motorola-delta \ -+ | 3300-motorola | delta-motorola) -+ basic_machine=m68k-motorola -+ ;; -+ delta88) -+ basic_machine=m88k-motorola -+ os=-sysv3 -+ ;; -+ dicos) -+ basic_machine=i686-pc -+ os=-dicos -+ ;; -+ djgpp) -+ basic_machine=i586-pc -+ os=-msdosdjgpp -+ ;; -+ dpx20 | dpx20-*) -+ basic_machine=rs6000-bull -+ os=-bosx -+ ;; -+ dpx2* | dpx2*-bull) -+ basic_machine=m68k-bull -+ os=-sysv3 -+ ;; -+ ebmon29k) -+ basic_machine=a29k-amd -+ os=-ebmon -+ ;; -+ elxsi) -+ basic_machine=elxsi-elxsi -+ os=-bsd -+ ;; -+ encore | umax | mmax) -+ basic_machine=ns32k-encore -+ ;; -+ es1800 | OSE68k | ose68k | ose | OSE) -+ basic_machine=m68k-ericsson -+ os=-ose -+ ;; -+ fx2800) -+ basic_machine=i860-alliant -+ ;; -+ genix) -+ basic_machine=ns32k-ns -+ ;; -+ gmicro) -+ basic_machine=tron-gmicro -+ os=-sysv -+ ;; -+ go32) -+ basic_machine=i386-pc -+ os=-go32 -+ ;; -+ h3050r* | hiux*) -+ basic_machine=hppa1.1-hitachi -+ os=-hiuxwe2 -+ ;; -+ h8300hms) -+ basic_machine=h8300-hitachi -+ os=-hms -+ ;; -+ h8300xray) -+ basic_machine=h8300-hitachi -+ os=-xray -+ ;; -+ h8500hms) -+ basic_machine=h8500-hitachi -+ os=-hms -+ ;; -+ harris) -+ basic_machine=m88k-harris -+ os=-sysv3 -+ ;; -+ hp300-*) -+ basic_machine=m68k-hp -+ ;; -+ hp300bsd) -+ basic_machine=m68k-hp -+ os=-bsd -+ ;; -+ hp300hpux) -+ basic_machine=m68k-hp -+ os=-hpux -+ ;; -+ hp3k9[0-9][0-9] | hp9[0-9][0-9]) -+ basic_machine=hppa1.0-hp -+ ;; -+ hp9k2[0-9][0-9] | hp9k31[0-9]) -+ basic_machine=m68000-hp -+ ;; -+ hp9k3[2-9][0-9]) -+ basic_machine=m68k-hp -+ ;; -+ 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]) -+ basic_machine=hppa1.1-hp -+ ;; -+ 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) -+ # FIXME: really hppa2.0-hp -+ basic_machine=hppa1.1-hp -+ ;; -+ hp9k8[0-9][13679] | hp8[0-9][13679]) -+ basic_machine=hppa1.1-hp -+ ;; -+ hp9k8[0-9][0-9] | hp8[0-9][0-9]) -+ basic_machine=hppa1.0-hp -+ ;; -+ hppa-next) -+ os=-nextstep3 -+ ;; -+ hppaosf) -+ basic_machine=hppa1.1-hp -+ os=-osf -+ ;; -+ hppro) -+ basic_machine=hppa1.1-hp -+ os=-proelf -+ ;; -+ i370-ibm* | ibm*) -+ basic_machine=i370-ibm -+ ;; -+ i*86v32) -+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -+ os=-sysv32 -+ ;; -+ i*86v4*) -+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -+ os=-sysv4 -+ ;; -+ i*86v) -+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -+ os=-sysv -+ ;; -+ i*86sol2) -+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` -+ os=-solaris2 -+ ;; -+ i386mach) -+ basic_machine=i386-mach -+ os=-mach -+ ;; -+ i386-vsta | vsta) -+ basic_machine=i386-unknown -+ os=-vsta -+ ;; -+ iris | iris4d) -+ basic_machine=mips-sgi -+ case $os in -+ -irix*) -+ ;; -+ *) -+ os=-irix4 -+ ;; -+ esac -+ ;; -+ isi68 | isi) -+ basic_machine=m68k-isi -+ os=-sysv -+ ;; -+ m68knommu) -+ basic_machine=m68k-unknown -+ os=-linux -+ ;; -+ m68knommu-*) -+ basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=-linux -+ ;; -+ m88k-omron*) -+ basic_machine=m88k-omron -+ ;; -+ magnum | m3230) -+ basic_machine=mips-mips -+ os=-sysv -+ ;; -+ merlin) -+ basic_machine=ns32k-utek -+ os=-sysv -+ ;; -+ microblaze) -+ basic_machine=microblaze-xilinx -+ ;; -+ mingw32) -+ basic_machine=i386-pc -+ os=-mingw32 -+ ;; -+ mingw32ce) -+ basic_machine=arm-unknown -+ os=-mingw32ce -+ ;; -+ miniframe) -+ basic_machine=m68000-convergent -+ ;; -+ *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) -+ basic_machine=m68k-atari -+ os=-mint -+ ;; -+ mips3*-*) -+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` -+ ;; -+ mips3*) -+ basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown -+ ;; -+ monitor) -+ basic_machine=m68k-rom68k -+ os=-coff -+ ;; -+ morphos) -+ basic_machine=powerpc-unknown -+ os=-morphos -+ ;; -+ msdos) -+ basic_machine=i386-pc -+ os=-msdos -+ ;; -+ ms1-*) -+ basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` -+ ;; -+ msys) -+ basic_machine=i386-pc -+ os=-msys -+ ;; -+ mvs) -+ basic_machine=i370-ibm -+ os=-mvs -+ ;; -+ nacl) -+ basic_machine=le32-unknown -+ os=-nacl -+ ;; -+ ncr3000) -+ basic_machine=i486-ncr -+ os=-sysv4 -+ ;; -+ netbsd386) -+ basic_machine=i386-unknown -+ os=-netbsd -+ ;; -+ netwinder) -+ basic_machine=armv4l-rebel -+ os=-linux -+ ;; -+ news | news700 | news800 | news900) -+ basic_machine=m68k-sony -+ os=-newsos -+ ;; -+ news1000) -+ basic_machine=m68030-sony -+ os=-newsos -+ ;; -+ news-3600 | risc-news) -+ basic_machine=mips-sony -+ os=-newsos -+ ;; -+ necv70) -+ basic_machine=v70-nec -+ os=-sysv -+ ;; -+ next | m*-next ) -+ basic_machine=m68k-next -+ case $os in -+ -nextstep* ) -+ ;; -+ -ns2*) -+ os=-nextstep2 -+ ;; -+ *) -+ os=-nextstep3 -+ ;; -+ esac -+ ;; -+ nh3000) -+ basic_machine=m68k-harris -+ os=-cxux -+ ;; -+ nh[45]000) -+ basic_machine=m88k-harris -+ os=-cxux -+ ;; -+ nindy960) -+ basic_machine=i960-intel -+ os=-nindy -+ ;; -+ mon960) -+ basic_machine=i960-intel -+ os=-mon960 -+ ;; -+ nonstopux) -+ basic_machine=mips-compaq -+ os=-nonstopux -+ ;; -+ np1) -+ basic_machine=np1-gould -+ ;; -+ neo-tandem) -+ basic_machine=neo-tandem -+ ;; -+ nse-tandem) -+ basic_machine=nse-tandem -+ ;; -+ nsr-tandem) -+ basic_machine=nsr-tandem -+ ;; -+ op50n-* | op60c-*) -+ basic_machine=hppa1.1-oki -+ os=-proelf -+ ;; -+ openrisc | openrisc-*) -+ basic_machine=or32-unknown -+ ;; -+ os400) -+ basic_machine=powerpc-ibm -+ os=-os400 -+ ;; -+ OSE68000 | ose68000) -+ basic_machine=m68000-ericsson -+ os=-ose -+ ;; -+ os68k) -+ basic_machine=m68k-none -+ os=-os68k -+ ;; -+ pa-hitachi) -+ basic_machine=hppa1.1-hitachi -+ os=-hiuxwe2 -+ ;; -+ paragon) -+ basic_machine=i860-intel -+ os=-osf -+ ;; -+ parisc) -+ basic_machine=hppa-unknown -+ os=-linux -+ ;; -+ parisc-*) -+ basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` -+ os=-linux -+ ;; -+ pbd) -+ basic_machine=sparc-tti -+ ;; -+ pbb) -+ basic_machine=m68k-tti -+ ;; -+ pc532 | pc532-*) -+ basic_machine=ns32k-pc532 -+ ;; -+ pc98) -+ basic_machine=i386-pc -+ ;; -+ pc98-*) -+ basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pentium | p5 | k5 | k6 | nexgen | viac3) -+ basic_machine=i586-pc -+ ;; -+ pentiumpro | p6 | 6x86 | athlon | athlon_*) -+ basic_machine=i686-pc -+ ;; -+ pentiumii | pentium2 | pentiumiii | pentium3) -+ basic_machine=i686-pc -+ ;; -+ pentium4) -+ basic_machine=i786-pc -+ ;; -+ pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) -+ basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pentiumpro-* | p6-* | 6x86-* | athlon-*) -+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) -+ basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pentium4-*) -+ basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ pn) -+ basic_machine=pn-gould -+ ;; -+ power) basic_machine=power-ibm -+ ;; -+ ppc | ppcbe) basic_machine=powerpc-unknown -+ ;; -+ ppc-* | ppcbe-*) -+ basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ppcle | powerpclittle | ppc-le | powerpc-little) -+ basic_machine=powerpcle-unknown -+ ;; -+ ppcle-* | powerpclittle-*) -+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ppc64) basic_machine=powerpc64-unknown -+ ;; -+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ppc64le | powerpc64little | ppc64-le | powerpc64-little) -+ basic_machine=powerpc64le-unknown -+ ;; -+ ppc64le-* | powerpc64little-*) -+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ ps2) -+ basic_machine=i386-ibm -+ ;; -+ pw32) -+ basic_machine=i586-unknown -+ os=-pw32 -+ ;; -+ rdos) -+ basic_machine=i386-pc -+ os=-rdos -+ ;; -+ rom68k) -+ basic_machine=m68k-rom68k -+ os=-coff -+ ;; -+ rm[46]00) -+ basic_machine=mips-siemens -+ ;; -+ rtpc | rtpc-*) -+ basic_machine=romp-ibm -+ ;; -+ s390 | s390-*) -+ basic_machine=s390-ibm -+ ;; -+ s390x | s390x-*) -+ basic_machine=s390x-ibm -+ ;; -+ sa29200) -+ basic_machine=a29k-amd -+ os=-udi -+ ;; -+ sb1) -+ basic_machine=mipsisa64sb1-unknown -+ ;; -+ sb1el) -+ basic_machine=mipsisa64sb1el-unknown -+ ;; -+ sde) -+ basic_machine=mipsisa32-sde -+ os=-elf -+ ;; -+ sei) -+ basic_machine=mips-sei -+ os=-seiux -+ ;; -+ sequent) -+ basic_machine=i386-sequent -+ ;; -+ sh) -+ basic_machine=sh-hitachi -+ os=-hms -+ ;; -+ sh5el) -+ basic_machine=sh5le-unknown -+ ;; -+ sh64) -+ basic_machine=sh64-unknown -+ ;; -+ sparclite-wrs | simso-wrs) -+ basic_machine=sparclite-wrs -+ os=-vxworks -+ ;; -+ sps7) -+ basic_machine=m68k-bull -+ os=-sysv2 -+ ;; -+ spur) -+ basic_machine=spur-unknown -+ ;; -+ st2000) -+ basic_machine=m68k-tandem -+ ;; -+ stratus) -+ basic_machine=i860-stratus -+ os=-sysv4 -+ ;; -+ strongarm-* | thumb-*) -+ basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` -+ ;; -+ sun2) -+ basic_machine=m68000-sun -+ ;; -+ sun2os3) -+ basic_machine=m68000-sun -+ os=-sunos3 -+ ;; -+ sun2os4) -+ basic_machine=m68000-sun -+ os=-sunos4 -+ ;; -+ sun3os3) -+ basic_machine=m68k-sun -+ os=-sunos3 -+ ;; -+ sun3os4) -+ basic_machine=m68k-sun -+ os=-sunos4 -+ ;; -+ sun4os3) -+ basic_machine=sparc-sun -+ os=-sunos3 -+ ;; -+ sun4os4) -+ basic_machine=sparc-sun -+ os=-sunos4 -+ ;; -+ sun4sol2) -+ basic_machine=sparc-sun -+ os=-solaris2 -+ ;; -+ sun3 | sun3-*) -+ basic_machine=m68k-sun -+ ;; -+ sun4) -+ basic_machine=sparc-sun -+ ;; -+ sun386 | sun386i | roadrunner) -+ basic_machine=i386-sun -+ ;; -+ sv1) -+ basic_machine=sv1-cray -+ os=-unicos -+ ;; -+ symmetry) -+ basic_machine=i386-sequent -+ os=-dynix -+ ;; -+ t3e) -+ basic_machine=alphaev5-cray -+ os=-unicos -+ ;; -+ t90) -+ basic_machine=t90-cray -+ os=-unicos -+ ;; -+ tile*) -+ basic_machine=$basic_machine-unknown -+ os=-linux-gnu -+ ;; -+ tx39) -+ basic_machine=mipstx39-unknown -+ ;; -+ tx39el) -+ basic_machine=mipstx39el-unknown -+ ;; -+ toad1) -+ basic_machine=pdp10-xkl -+ os=-tops20 -+ ;; -+ tower | tower-32) -+ basic_machine=m68k-ncr -+ ;; -+ tpf) -+ basic_machine=s390x-ibm -+ os=-tpf -+ ;; -+ udi29k) -+ basic_machine=a29k-amd -+ os=-udi -+ ;; -+ ultra3) -+ basic_machine=a29k-nyu -+ os=-sym1 -+ ;; -+ v810 | necv810) -+ basic_machine=v810-nec -+ os=-none -+ ;; -+ vaxv) -+ basic_machine=vax-dec -+ os=-sysv -+ ;; -+ vms) -+ basic_machine=vax-dec -+ os=-vms -+ ;; -+ vpp*|vx|vx-*) -+ basic_machine=f301-fujitsu -+ ;; -+ vxworks960) -+ basic_machine=i960-wrs -+ os=-vxworks -+ ;; -+ vxworks68) -+ basic_machine=m68k-wrs -+ os=-vxworks -+ ;; -+ vxworks29k) -+ basic_machine=a29k-wrs -+ os=-vxworks -+ ;; -+ w65*) -+ basic_machine=w65-wdc -+ os=-none -+ ;; -+ w89k-*) -+ basic_machine=hppa1.1-winbond -+ os=-proelf -+ ;; -+ xbox) -+ basic_machine=i686-pc -+ os=-mingw32 -+ ;; -+ xps | xps100) -+ basic_machine=xps100-honeywell -+ ;; -+ xscale-* | xscalee[bl]-*) -+ basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` -+ ;; -+ ymp) -+ basic_machine=ymp-cray -+ os=-unicos -+ ;; -+ z8k-*-coff) -+ basic_machine=z8k-unknown -+ os=-sim -+ ;; -+ z80-*-coff) -+ basic_machine=z80-unknown -+ os=-sim -+ ;; -+ none) -+ basic_machine=none-none -+ os=-none -+ ;; -+ -+# 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) -+ basic_machine=hppa1.1-winbond -+ ;; -+ op50n) -+ basic_machine=hppa1.1-oki -+ ;; -+ op60c) -+ basic_machine=hppa1.1-oki -+ ;; -+ romp) -+ basic_machine=romp-ibm -+ ;; -+ mmix) -+ basic_machine=mmix-knuth -+ ;; -+ rs6000) -+ basic_machine=rs6000-ibm -+ ;; -+ 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 -+ ;; -+ sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) -+ basic_machine=sh-unknown -+ ;; -+ sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) -+ basic_machine=sparc-sun -+ ;; -+ cydra) -+ basic_machine=cydra-cydrome -+ ;; -+ orion) -+ basic_machine=orion-highlevel -+ ;; -+ orion105) -+ basic_machine=clipper-highlevel -+ ;; -+ mac | mpw | mac-mpw) -+ basic_machine=m68k-apple -+ ;; -+ pmac | pmac-mpw) -+ basic_machine=powerpc-apple -+ ;; -+ *-unknown) -+ # Make sure to match an already-canonicalized machine name. -+ ;; -+ *) -+ echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 -+ exit 1 -+ ;; -+esac -+ -+# Here we canonicalize certain aliases for manufacturers. -+case $basic_machine in -+ *-digital*) -+ basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` -+ ;; -+ *-commodore*) -+ basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` -+ ;; -+ *) -+ ;; -+esac -+ -+# Decode manufacturer-specific aliases for certain operating systems. -+ -+if [ x"$os" != x"" ] -+then -+case $os in -+ # First match some system type aliases -+ # that might get confused with valid system types. -+ # -solaris* is a basic system type, with this one exception. -+ -auroraux) -+ os=-auroraux -+ ;; -+ -solaris1 | -solaris1.*) -+ os=`echo $os | sed -e 's|solaris1|sunos4|'` -+ ;; -+ -solaris) -+ os=-solaris2 -+ ;; -+ -svr4*) -+ os=-sysv4 -+ ;; -+ -unixware*) -+ os=-sysv4.2uw -+ ;; -+ -gnu/linux*) -+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` -+ ;; -+ # First accept the basic system types. -+ # The portable systems comes first. -+ # Each alternative MUST END IN A *, to match a version number. -+ # -sysv* is not here because it comes later, after sysvr4. -+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ -+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ -+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ -+ | -sym* | -kopensolaris* \ -+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ -+ | -aos* | -aros* \ -+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ -+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ -+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ -+ | -openbsd* | -solidbsd* \ -+ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ -+ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ -+ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ -+ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ -+ | -chorusos* | -chorusrdb* | -cegcc* \ -+ | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ -+ | -mingw32* | -linux-gnu* | -linux-android* \ -+ | -linux-newlib* | -linux-uclibc* \ -+ | -uxpv* | -beos* | -mpeix* | -udk* \ -+ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ -+ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ -+ | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ -+ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ -+ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ -+ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ -+ | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) -+ # Remember, each alternative MUST END IN *, to match a version number. -+ ;; -+ -qnx*) -+ case $basic_machine in -+ x86-* | i*86-*) -+ ;; -+ *) -+ os=-nto$os -+ ;; -+ esac -+ ;; -+ -nto-qnx*) -+ ;; -+ -nto*) -+ os=`echo $os | sed -e 's|nto|nto-qnx|'` -+ ;; -+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ -+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ -+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) -+ ;; -+ -mac*) -+ os=`echo $os | sed -e 's|mac|macos|'` -+ ;; -+ -linux-dietlibc) -+ os=-linux-dietlibc -+ ;; -+ -linux*) -+ os=`echo $os | sed -e 's|linux|linux-gnu|'` -+ ;; -+ -sunos5*) -+ os=`echo $os | sed -e 's|sunos5|solaris2|'` -+ ;; -+ -sunos6*) -+ os=`echo $os | sed -e 's|sunos6|solaris3|'` -+ ;; -+ -opened*) -+ os=-openedition -+ ;; -+ -os400*) -+ os=-os400 -+ ;; -+ -wince*) -+ os=-wince -+ ;; -+ -osfrose*) -+ os=-osfrose -+ ;; -+ -osf*) -+ os=-osf -+ ;; -+ -utek*) -+ os=-bsd -+ ;; -+ -dynix*) -+ os=-bsd -+ ;; -+ -acis*) -+ os=-aos -+ ;; -+ -atheos*) -+ os=-atheos -+ ;; -+ -syllable*) -+ os=-syllable -+ ;; -+ -386bsd) -+ os=-bsd -+ ;; -+ -ctix* | -uts*) -+ os=-sysv -+ ;; -+ -nova*) -+ os=-rtmk-nova -+ ;; -+ -ns2 ) -+ os=-nextstep2 -+ ;; -+ -nsk*) -+ os=-nsk -+ ;; -+ # Preserve the version number of sinix5. -+ -sinix5.*) -+ os=`echo $os | sed -e 's|sinix|sysv|'` -+ ;; -+ -sinix*) -+ os=-sysv4 -+ ;; -+ -tpf*) -+ os=-tpf -+ ;; -+ -triton*) -+ os=-sysv3 -+ ;; -+ -oss*) -+ os=-sysv3 -+ ;; -+ -svr4) -+ os=-sysv4 -+ ;; -+ -svr3) -+ os=-sysv3 -+ ;; -+ -sysvr4) -+ os=-sysv4 -+ ;; -+ # This must come after -sysvr4. -+ -sysv*) -+ ;; -+ -ose*) -+ os=-ose -+ ;; -+ -es1800*) -+ os=-ose -+ ;; -+ -xenix) -+ os=-xenix -+ ;; -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ os=-mint -+ ;; -+ -aros*) -+ os=-aros -+ ;; -+ -kaos*) -+ os=-kaos -+ ;; -+ -zvmoe) -+ os=-zvmoe -+ ;; -+ -dicos*) -+ os=-dicos -+ ;; -+ -nacl*) -+ ;; -+ -none) -+ ;; -+ *) -+ # Get rid of the `-' at the beginning of $os. -+ os=`echo $os | sed 's/[^-]*-//'` -+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 -+ exit 1 -+ ;; -+esac -+else -+ -+# Here we handle the default operating systems that come with various machines. -+# The value should be what the vendor currently ships out the door with their -+# machine or put another way, the most popular os provided with the machine. -+ -+# Note that if you're going to try to match "-MANUFACTURER" here (say, -+# "-sun"), then you have to tell the case statement up towards the top -+# that MANUFACTURER isn't an operating system. Otherwise, code above -+# will signal an error saying that MANUFACTURER isn't an operating -+# system, and we'll never get to this point. -+ -+case $basic_machine in -+ score-*) -+ os=-elf -+ ;; -+ spu-*) -+ os=-elf -+ ;; -+ *-acorn) -+ os=-riscix1.2 -+ ;; -+ arm*-rebel) -+ os=-linux -+ ;; -+ arm*-semi) -+ os=-aout -+ ;; -+ c4x-* | tic4x-*) -+ os=-coff -+ ;; -+ tic54x-*) -+ os=-coff -+ ;; -+ tic55x-*) -+ os=-coff -+ ;; -+ tic6x-*) -+ os=-coff -+ ;; -+ # This must come before the *-dec entry. -+ pdp10-*) -+ os=-tops20 -+ ;; -+ pdp11-*) -+ os=-none -+ ;; -+ *-dec | vax-*) -+ os=-ultrix4.2 -+ ;; -+ m68*-apollo) -+ os=-domain -+ ;; -+ i386-sun) -+ os=-sunos4.0.2 -+ ;; -+ m68000-sun) -+ os=-sunos3 -+ ;; -+ m68*-cisco) -+ os=-aout -+ ;; -+ mep-*) -+ os=-elf -+ ;; -+ mips*-cisco) -+ os=-elf -+ ;; -+ mips*-*) -+ os=-elf -+ ;; -+ or32-*) -+ os=-coff -+ ;; -+ *-tti) # must be before sparc entry or we get the wrong os. -+ os=-sysv3 -+ ;; -+ sparc-* | *-sun) -+ os=-sunos4.1.1 -+ ;; -+ *-be) -+ os=-beos -+ ;; -+ *-haiku) -+ os=-haiku -+ ;; -+ *-ibm) -+ os=-aix -+ ;; -+ *-knuth) -+ os=-mmixware -+ ;; -+ *-wec) -+ os=-proelf -+ ;; -+ *-winbond) -+ os=-proelf -+ ;; -+ *-oki) -+ os=-proelf -+ ;; -+ *-hp) -+ os=-hpux -+ ;; -+ *-hitachi) -+ os=-hiux -+ ;; -+ i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) -+ os=-sysv -+ ;; -+ *-cbm) -+ os=-amigaos -+ ;; -+ *-dg) -+ os=-dgux -+ ;; -+ *-dolphin) -+ os=-sysv3 -+ ;; -+ m68k-ccur) -+ os=-rtu -+ ;; -+ m88k-omron*) -+ os=-luna -+ ;; -+ *-next ) -+ os=-nextstep -+ ;; -+ *-sequent) -+ os=-ptx -+ ;; -+ *-crds) -+ os=-unos -+ ;; -+ *-ns) -+ os=-genix -+ ;; -+ i370-*) -+ os=-mvs -+ ;; -+ *-next) -+ os=-nextstep3 -+ ;; -+ *-gould) -+ os=-sysv -+ ;; -+ *-highlevel) -+ os=-bsd -+ ;; -+ *-encore) -+ os=-bsd -+ ;; -+ *-sgi) -+ os=-irix -+ ;; -+ *-siemens) -+ os=-sysv4 -+ ;; -+ *-masscomp) -+ os=-rtu -+ ;; -+ f30[01]-fujitsu | f700-fujitsu) -+ os=-uxpv -+ ;; -+ *-rom68k) -+ os=-coff -+ ;; -+ *-*bug) -+ os=-coff -+ ;; -+ *-apple) -+ os=-macos -+ ;; -+ *-atari*) -+ os=-mint -+ ;; -+ *) -+ os=-none -+ ;; -+esac -+fi -+ -+# Here we handle the case where we know the os, and the CPU type, but not the -+# manufacturer. We pick the logical manufacturer. -+vendor=unknown -+case $basic_machine in -+ *-unknown) -+ case $os in -+ -riscix*) -+ vendor=acorn -+ ;; -+ -sunos*) -+ vendor=sun -+ ;; -+ -cnk*|-aix*) -+ vendor=ibm -+ ;; -+ -beos*) -+ vendor=be -+ ;; -+ -hpux*) -+ vendor=hp -+ ;; -+ -mpeix*) -+ vendor=hp -+ ;; -+ -hiux*) -+ vendor=hitachi -+ ;; -+ -unos*) -+ vendor=crds -+ ;; -+ -dgux*) -+ vendor=dg -+ ;; -+ -luna*) -+ vendor=omron -+ ;; -+ -genix*) -+ vendor=ns -+ ;; -+ -mvs* | -opened*) -+ vendor=ibm -+ ;; -+ -os400*) -+ vendor=ibm -+ ;; -+ -ptx*) -+ vendor=sequent -+ ;; -+ -tpf*) -+ vendor=ibm -+ ;; -+ -vxsim* | -vxworks* | -windiss*) -+ vendor=wrs -+ ;; -+ -aux*) -+ vendor=apple -+ ;; -+ -hms*) -+ vendor=hitachi -+ ;; -+ -mpw* | -macos*) -+ vendor=apple -+ ;; -+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) -+ vendor=atari -+ ;; -+ -vos*) -+ vendor=stratus -+ ;; -+ esac -+ basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` -+ ;; -+esac -+ -+echo $basic_machine$os -+exit -+ -+# 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/libclamav/libmspack-0.4alpha/configure b/libclamav/libmspack-0.4alpha/configure -new file mode 100755 -index 000000000000..5f03b36c49ac ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/configure -@@ -0,0 +1,14567 @@ -+#! /bin/sh -+# Guess values for system-dependent variables and create Makefiles. -+# Generated by GNU Autoconf 2.68 for libmspack 0.4alpha. -+# -+# Report bugs to . -+# -+# -+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -+# Foundation, Inc. -+# -+# -+# This configure script is free software; the Free Software Foundation -+# gives unlimited permission to copy, distribute and modify it. -+## -------------------- ## -+## M4sh Initialization. ## -+## -------------------- ## -+ -+# Be more Bourne compatible -+DUALCASE=1; export DUALCASE # for MKS sh -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : -+ emulate sh -+ NULLCMD=: -+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in #( -+ *posix*) : -+ set -o posix ;; #( -+ *) : -+ ;; -+esac -+fi -+ -+ -+as_nl=' -+' -+export as_nl -+# Printing a long string crashes Solaris 7 /usr/bin/printf. -+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -+# Prefer a ksh shell builtin over an external printf program on Solaris, -+# but without wasting forks for bash or zsh. -+if test -z "$BASH_VERSION$ZSH_VERSION" \ -+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then -+ as_echo='print -r --' -+ as_echo_n='print -rn --' -+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then -+ as_echo='printf %s\n' -+ as_echo_n='printf %s' -+else -+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then -+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' -+ as_echo_n='/usr/ucb/echo -n' -+ else -+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' -+ as_echo_n_body='eval -+ arg=$1; -+ case $arg in #( -+ *"$as_nl"*) -+ expr "X$arg" : "X\\(.*\\)$as_nl"; -+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; -+ esac; -+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" -+ ' -+ export as_echo_n_body -+ as_echo_n='sh -c $as_echo_n_body as_echo' -+ fi -+ export as_echo_body -+ as_echo='sh -c $as_echo_body as_echo' -+fi -+ -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ PATH_SEPARATOR=: -+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { -+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || -+ PATH_SEPARATOR=';' -+ } -+fi -+ -+ -+# IFS -+# We need space, tab and new line, in precisely that order. Quoting is -+# there to prevent editors from complaining about space-tab. -+# (If _AS_PATH_WALK were called with IFS unset, it would disable word -+# splitting by setting IFS to empty value.) -+IFS=" "" $as_nl" -+ -+# Find who we are. Look in the path if we contain no directory separator. -+as_myself= -+case $0 in #(( -+ *[\\/]* ) as_myself=$0 ;; -+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -+ done -+IFS=$as_save_IFS -+ -+ ;; -+esac -+# We did not find ourselves, most probably we were run as `sh COMMAND' -+# in which case we are not to be found in the path. -+if test "x$as_myself" = x; then -+ as_myself=$0 -+fi -+if test ! -f "$as_myself"; then -+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 -+ exit 1 -+fi -+ -+# Unset variables that we do not need and which cause bugs (e.g. in -+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -+# suppresses any "Segmentation fault" message there. '((' could -+# trigger a bug in pdksh 5.2.14. -+for as_var in BASH_ENV ENV MAIL MAILPATH -+do eval test x\${$as_var+set} = xset \ -+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -+done -+PS1='$ ' -+PS2='> ' -+PS4='+ ' -+ -+# NLS nuisances. -+LC_ALL=C -+export LC_ALL -+LANGUAGE=C -+export LANGUAGE -+ -+# CDPATH. -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+ -+if test "x$CONFIG_SHELL" = x; then -+ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : -+ emulate sh -+ NULLCMD=: -+ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '\${1+\"\$@\"}'='\"\$@\"' -+ setopt NO_GLOB_SUBST -+else -+ case \`(set -o) 2>/dev/null\` in #( -+ *posix*) : -+ set -o posix ;; #( -+ *) : -+ ;; -+esac -+fi -+" -+ as_required="as_fn_return () { (exit \$1); } -+as_fn_success () { as_fn_return 0; } -+as_fn_failure () { as_fn_return 1; } -+as_fn_ret_success () { return 0; } -+as_fn_ret_failure () { return 1; } -+ -+exitcode=0 -+as_fn_success || { exitcode=1; echo as_fn_success failed.; } -+as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -+as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -+as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -+if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : -+ -+else -+ exitcode=1; echo positional parameters were not saved. -+fi -+test x\$exitcode = x0 || exit 1" -+ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO -+ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO -+ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && -+ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -+ -+ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( -+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO -+ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO -+ PATH=/empty FPATH=/empty; export PATH FPATH -+ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ -+ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1 -+test \$(( 1 + 1 )) = 2 || exit 1" -+ if (eval "$as_required") 2>/dev/null; then : -+ as_have_required=yes -+else -+ as_have_required=no -+fi -+ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : -+ -+else -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+as_found=false -+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ as_found=: -+ case $as_dir in #( -+ /*) -+ for as_base in sh bash ksh sh5; do -+ # Try only shells that exist, to save several forks. -+ as_shell=$as_dir/$as_base -+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && -+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : -+ CONFIG_SHELL=$as_shell as_have_required=yes -+ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : -+ break 2 -+fi -+fi -+ done;; -+ esac -+ as_found=false -+done -+$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && -+ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : -+ CONFIG_SHELL=$SHELL as_have_required=yes -+fi; } -+IFS=$as_save_IFS -+ -+ -+ if test "x$CONFIG_SHELL" != x; then : -+ # We cannot yet assume a decent shell, so we have to provide a -+ # neutralization value for shells without unset; and this also -+ # works around shells that cannot unset nonexistent variables. -+ # Preserve -v and -x to the replacement shell. -+ BASH_ENV=/dev/null -+ ENV=/dev/null -+ (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -+ export CONFIG_SHELL -+ case $- in # (((( -+ *v*x* | *x*v* ) as_opts=-vx ;; -+ *v* ) as_opts=-v ;; -+ *x* ) as_opts=-x ;; -+ * ) as_opts= ;; -+ esac -+ exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -+fi -+ -+ if test x$as_have_required = xno; then : -+ $as_echo "$0: This script requires a shell more modern than all" -+ $as_echo "$0: the shells that I found on your system." -+ if test x${ZSH_VERSION+set} = xset ; then -+ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" -+ $as_echo "$0: be upgraded to zsh 4.3.4 or later." -+ else -+ $as_echo "$0: Please tell bug-autoconf@gnu.org and kyzer@4u.net about -+$0: your system, including any error possibly output before -+$0: this message. Then install a modern shell, or manually -+$0: run the script under such a shell if you do have one." -+ fi -+ exit 1 -+fi -+fi -+fi -+SHELL=${CONFIG_SHELL-/bin/sh} -+export SHELL -+# Unset more variables known to interfere with behavior of common tools. -+CLICOLOR_FORCE= GREP_OPTIONS= -+unset CLICOLOR_FORCE GREP_OPTIONS -+ -+## --------------------- ## -+## M4sh Shell Functions. ## -+## --------------------- ## -+# as_fn_unset VAR -+# --------------- -+# Portably unset VAR. -+as_fn_unset () -+{ -+ { eval $1=; unset $1;} -+} -+as_unset=as_fn_unset -+ -+# as_fn_set_status STATUS -+# ----------------------- -+# Set $? to STATUS, without forking. -+as_fn_set_status () -+{ -+ return $1 -+} # as_fn_set_status -+ -+# as_fn_exit STATUS -+# ----------------- -+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -+as_fn_exit () -+{ -+ set +e -+ as_fn_set_status $1 -+ exit $1 -+} # as_fn_exit -+ -+# as_fn_mkdir_p -+# ------------- -+# Create "$as_dir" as a directory, including parents if necessary. -+as_fn_mkdir_p () -+{ -+ -+ case $as_dir in #( -+ -*) as_dir=./$as_dir;; -+ esac -+ test -d "$as_dir" || eval $as_mkdir_p || { -+ as_dirs= -+ while :; do -+ case $as_dir in #( -+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( -+ *) as_qdir=$as_dir;; -+ esac -+ as_dirs="'$as_qdir' $as_dirs" -+ as_dir=`$as_dirname -- "$as_dir" || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ test -d "$as_dir" && break -+ done -+ test -z "$as_dirs" || eval "mkdir $as_dirs" -+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" -+ -+ -+} # as_fn_mkdir_p -+# as_fn_append VAR VALUE -+# ---------------------- -+# Append the text in VALUE to the end of the definition contained in VAR. Take -+# advantage of any shell optimizations that allow amortized linear growth over -+# repeated appends, instead of the typical quadratic growth present in naive -+# implementations. -+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : -+ eval 'as_fn_append () -+ { -+ eval $1+=\$2 -+ }' -+else -+ as_fn_append () -+ { -+ eval $1=\$$1\$2 -+ } -+fi # as_fn_append -+ -+# as_fn_arith ARG... -+# ------------------ -+# Perform arithmetic evaluation on the ARGs, and store the result in the -+# global $as_val. Take advantage of shells that can avoid forks. The arguments -+# must be portable across $(()) and expr. -+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : -+ eval 'as_fn_arith () -+ { -+ as_val=$(( $* )) -+ }' -+else -+ as_fn_arith () -+ { -+ as_val=`expr "$@" || test $? -eq 1` -+ } -+fi # as_fn_arith -+ -+ -+# as_fn_error STATUS ERROR [LINENO LOG_FD] -+# ---------------------------------------- -+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -+# script with STATUS, using 1 if that was 0. -+as_fn_error () -+{ -+ as_status=$1; test $as_status -eq 0 && as_status=1 -+ if test "$4"; then -+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 -+ fi -+ $as_echo "$as_me: error: $2" >&2 -+ as_fn_exit $as_status -+} # as_fn_error -+ -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then -+ as_basename=basename -+else -+ as_basename=false -+fi -+ -+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -+ as_dirname=dirname -+else -+ as_dirname=false -+fi -+ -+as_me=`$as_basename -- "$0" || -+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X/"$0" | -+ sed '/^.*\/\([^/][^/]*\)\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ -+# Avoid depending upon Character Ranges. -+as_cr_letters='abcdefghijklmnopqrstuvwxyz' -+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -+as_cr_Letters=$as_cr_letters$as_cr_LETTERS -+as_cr_digits='0123456789' -+as_cr_alnum=$as_cr_Letters$as_cr_digits -+ -+ -+ as_lineno_1=$LINENO as_lineno_1a=$LINENO -+ as_lineno_2=$LINENO as_lineno_2a=$LINENO -+ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && -+ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { -+ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) -+ sed -n ' -+ p -+ /[$]LINENO/= -+ ' <$as_myself | -+ sed ' -+ s/[$]LINENO.*/&-/ -+ t lineno -+ b -+ :lineno -+ N -+ :loop -+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ -+ t loop -+ s/-\n.*// -+ ' >$as_me.lineno && -+ chmod +x "$as_me.lineno" || -+ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } -+ -+ # Don't try to exec as it changes $[0], causing all sort of problems -+ # (the dirname of $[0] is not the place where we might find the -+ # original and so on. Autoconf is especially sensitive to this). -+ . "./$as_me.lineno" -+ # Exit status is that of the last command. -+ exit -+} -+ -+ECHO_C= ECHO_N= ECHO_T= -+case `echo -n x` in #((((( -+-n*) -+ case `echo 'xy\c'` in -+ *c*) ECHO_T=' ';; # ECHO_T is single tab character. -+ xy) ECHO_C='\c';; -+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null -+ ECHO_T=' ';; -+ esac;; -+*) -+ ECHO_N='-n';; -+esac -+ -+rm -f conf$$ conf$$.exe conf$$.file -+if test -d conf$$.dir; then -+ rm -f conf$$.dir/conf$$.file -+else -+ rm -f conf$$.dir -+ mkdir conf$$.dir 2>/dev/null -+fi -+if (echo >conf$$.file) 2>/dev/null; then -+ if ln -s conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s='ln -s' -+ # ... but there are two gotchas: -+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. -+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. -+ # In both cases, we have to default to `cp -p'. -+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || -+ as_ln_s='cp -p' -+ elif ln conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s=ln -+ else -+ as_ln_s='cp -p' -+ fi -+else -+ as_ln_s='cp -p' -+fi -+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -+rmdir conf$$.dir 2>/dev/null -+ -+if mkdir -p . 2>/dev/null; then -+ as_mkdir_p='mkdir -p "$as_dir"' -+else -+ test -d ./-p && rmdir ./-p -+ as_mkdir_p=false -+fi -+ -+if test -x / >/dev/null 2>&1; then -+ as_test_x='test -x' -+else -+ if ls -dL / >/dev/null 2>&1; then -+ as_ls_L_option=L -+ else -+ as_ls_L_option= -+ fi -+ as_test_x=' -+ eval sh -c '\'' -+ if test -d "$1"; then -+ test -d "$1/."; -+ else -+ case $1 in #( -+ -*)set "./$1";; -+ esac; -+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( -+ ???[sx]*):;;*)false;;esac;fi -+ '\'' sh -+ ' -+fi -+as_executable_p=$as_test_x -+ -+# Sed expression to map a string onto a valid CPP name. -+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -+ -+# Sed expression to map a string onto a valid variable name. -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -+ -+SHELL=${CONFIG_SHELL-/bin/sh} -+ -+ -+test -n "$DJDIR" || exec 7<&0 &1 -+ -+# Name of the host. -+# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -+# so uname gets run too. -+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` -+ -+# -+# Initializations. -+# -+ac_default_prefix=/usr/local -+ac_clean_files= -+ac_config_libobj_dir=. -+LIBOBJS= -+cross_compiling=no -+subdirs= -+MFLAGS= -+MAKEFLAGS= -+ -+# Identity of this package. -+PACKAGE_NAME='libmspack' -+PACKAGE_TARNAME='libmspack' -+PACKAGE_VERSION='0.4alpha' -+PACKAGE_STRING='libmspack 0.4alpha' -+PACKAGE_BUGREPORT='kyzer@4u.net' -+PACKAGE_URL='' -+ -+ac_unique_file="mspack/mspack.h" -+# Factoring default headers for most tests. -+ac_includes_default="\ -+#include -+#ifdef HAVE_SYS_TYPES_H -+# include -+#endif -+#ifdef HAVE_SYS_STAT_H -+# include -+#endif -+#ifdef STDC_HEADERS -+# include -+# include -+#else -+# ifdef HAVE_STDLIB_H -+# include -+# endif -+#endif -+#ifdef HAVE_STRING_H -+# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -+# include -+# endif -+# include -+#endif -+#ifdef HAVE_STRINGS_H -+# include -+#endif -+#ifdef HAVE_INTTYPES_H -+# include -+#endif -+#ifdef HAVE_STDINT_H -+# include -+#endif -+#ifdef HAVE_UNISTD_H -+# include -+#endif" -+ -+ac_subst_vars='am__EXEEXT_FALSE -+am__EXEEXT_TRUE -+LTLIBOBJS -+LIBOBJS -+CPP -+OTOOL64 -+OTOOL -+LIPO -+NMEDIT -+DSYMUTIL -+MANIFEST_TOOL -+RANLIB -+ac_ct_AR -+AR -+DLLTOOL -+OBJDUMP -+LN_S -+NM -+ac_ct_DUMPBIN -+DUMPBIN -+LD -+FGREP -+EGREP -+GREP -+SED -+host_os -+host_vendor -+host_cpu -+host -+build_os -+build_vendor -+build_cpu -+build -+LIBTOOL -+GCC_FALSE -+GCC_TRUE -+am__fastdepCC_FALSE -+am__fastdepCC_TRUE -+CCDEPMODE -+am__nodep -+AMDEPBACKSLASH -+AMDEP_FALSE -+AMDEP_TRUE -+am__quote -+am__include -+DEPDIR -+OBJEXT -+EXEEXT -+ac_ct_CC -+CPPFLAGS -+LDFLAGS -+CFLAGS -+CC -+DEBUG_FALSE -+DEBUG_TRUE -+AM_BACKSLASH -+AM_DEFAULT_VERBOSITY -+AM_DEFAULT_V -+AM_V -+am__untar -+am__tar -+AMTAR -+am__leading_dot -+SET_MAKE -+AWK -+mkdir_p -+MKDIR_P -+INSTALL_STRIP_PROGRAM -+STRIP -+install_sh -+MAKEINFO -+AUTOHEADER -+AUTOMAKE -+AUTOCONF -+ACLOCAL -+VERSION -+PACKAGE -+CYGPATH_W -+am__isrc -+INSTALL_DATA -+INSTALL_SCRIPT -+INSTALL_PROGRAM -+target_alias -+host_alias -+build_alias -+LIBS -+ECHO_T -+ECHO_N -+ECHO_C -+DEFS -+mandir -+localedir -+libdir -+psdir -+pdfdir -+dvidir -+htmldir -+infodir -+docdir -+oldincludedir -+includedir -+localstatedir -+sharedstatedir -+sysconfdir -+datadir -+datarootdir -+libexecdir -+sbindir -+bindir -+program_transform_name -+prefix -+exec_prefix -+PACKAGE_URL -+PACKAGE_BUGREPORT -+PACKAGE_STRING -+PACKAGE_VERSION -+PACKAGE_TARNAME -+PACKAGE_NAME -+PATH_SEPARATOR -+SHELL' -+ac_subst_files='' -+ac_user_opts=' -+enable_option_checking -+enable_silent_rules -+enable_debug -+enable_dependency_tracking -+enable_shared -+enable_static -+with_pic -+enable_fast_install -+with_gnu_ld -+with_sysroot -+enable_libtool_lock -+enable_largefile -+' -+ ac_precious_vars='build_alias -+host_alias -+target_alias -+CC -+CFLAGS -+LDFLAGS -+LIBS -+CPPFLAGS -+CPP' -+ -+ -+# Initialize some variables set by options. -+ac_init_help= -+ac_init_version=false -+ac_unrecognized_opts= -+ac_unrecognized_sep= -+# The variables have the same names as the options, with -+# dashes changed to underlines. -+cache_file=/dev/null -+exec_prefix=NONE -+no_create= -+no_recursion= -+prefix=NONE -+program_prefix=NONE -+program_suffix=NONE -+program_transform_name=s,x,x, -+silent= -+site= -+srcdir= -+verbose= -+x_includes=NONE -+x_libraries=NONE -+ -+# Installation directory options. -+# These are left unexpanded so users can "make install exec_prefix=/foo" -+# and all the variables that are supposed to be based on exec_prefix -+# by default will actually change. -+# Use braces instead of parens because sh, perl, etc. also accept them. -+# (The list follows the same order as the GNU Coding Standards.) -+bindir='${exec_prefix}/bin' -+sbindir='${exec_prefix}/sbin' -+libexecdir='${exec_prefix}/libexec' -+datarootdir='${prefix}/share' -+datadir='${datarootdir}' -+sysconfdir='${prefix}/etc' -+sharedstatedir='${prefix}/com' -+localstatedir='${prefix}/var' -+includedir='${prefix}/include' -+oldincludedir='/usr/include' -+docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -+infodir='${datarootdir}/info' -+htmldir='${docdir}' -+dvidir='${docdir}' -+pdfdir='${docdir}' -+psdir='${docdir}' -+libdir='${exec_prefix}/lib' -+localedir='${datarootdir}/locale' -+mandir='${datarootdir}/man' -+ -+ac_prev= -+ac_dashdash= -+for ac_option -+do -+ # If the previous option needs an argument, assign it. -+ if test -n "$ac_prev"; then -+ eval $ac_prev=\$ac_option -+ ac_prev= -+ continue -+ fi -+ -+ case $ac_option in -+ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; -+ *=) ac_optarg= ;; -+ *) ac_optarg=yes ;; -+ esac -+ -+ # Accept the important Cygnus configure options, so we can diagnose typos. -+ -+ case $ac_dashdash$ac_option in -+ --) -+ ac_dashdash=yes ;; -+ -+ -bindir | --bindir | --bindi | --bind | --bin | --bi) -+ ac_prev=bindir ;; -+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) -+ bindir=$ac_optarg ;; -+ -+ -build | --build | --buil | --bui | --bu) -+ ac_prev=build_alias ;; -+ -build=* | --build=* | --buil=* | --bui=* | --bu=*) -+ build_alias=$ac_optarg ;; -+ -+ -cache-file | --cache-file | --cache-fil | --cache-fi \ -+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) -+ ac_prev=cache_file ;; -+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ -+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) -+ cache_file=$ac_optarg ;; -+ -+ --config-cache | -C) -+ cache_file=config.cache ;; -+ -+ -datadir | --datadir | --datadi | --datad) -+ ac_prev=datadir ;; -+ -datadir=* | --datadir=* | --datadi=* | --datad=*) -+ datadir=$ac_optarg ;; -+ -+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ -+ | --dataroo | --dataro | --datar) -+ ac_prev=datarootdir ;; -+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ -+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) -+ datarootdir=$ac_optarg ;; -+ -+ -disable-* | --disable-*) -+ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -+ as_fn_error $? "invalid feature name: $ac_useropt" -+ ac_useropt_orig=$ac_useropt -+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` -+ case $ac_user_opts in -+ *" -+"enable_$ac_useropt" -+"*) ;; -+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" -+ ac_unrecognized_sep=', ';; -+ esac -+ eval enable_$ac_useropt=no ;; -+ -+ -docdir | --docdir | --docdi | --doc | --do) -+ ac_prev=docdir ;; -+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) -+ docdir=$ac_optarg ;; -+ -+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) -+ ac_prev=dvidir ;; -+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) -+ dvidir=$ac_optarg ;; -+ -+ -enable-* | --enable-*) -+ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -+ as_fn_error $? "invalid feature name: $ac_useropt" -+ ac_useropt_orig=$ac_useropt -+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` -+ case $ac_user_opts in -+ *" -+"enable_$ac_useropt" -+"*) ;; -+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" -+ ac_unrecognized_sep=', ';; -+ esac -+ eval enable_$ac_useropt=\$ac_optarg ;; -+ -+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ -+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ -+ | --exec | --exe | --ex) -+ ac_prev=exec_prefix ;; -+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ -+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ -+ | --exec=* | --exe=* | --ex=*) -+ exec_prefix=$ac_optarg ;; -+ -+ -gas | --gas | --ga | --g) -+ # Obsolete; use --with-gas. -+ with_gas=yes ;; -+ -+ -help | --help | --hel | --he | -h) -+ ac_init_help=long ;; -+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) -+ ac_init_help=recursive ;; -+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) -+ ac_init_help=short ;; -+ -+ -host | --host | --hos | --ho) -+ ac_prev=host_alias ;; -+ -host=* | --host=* | --hos=* | --ho=*) -+ host_alias=$ac_optarg ;; -+ -+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) -+ ac_prev=htmldir ;; -+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ -+ | --ht=*) -+ htmldir=$ac_optarg ;; -+ -+ -includedir | --includedir | --includedi | --included | --include \ -+ | --includ | --inclu | --incl | --inc) -+ ac_prev=includedir ;; -+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ -+ | --includ=* | --inclu=* | --incl=* | --inc=*) -+ includedir=$ac_optarg ;; -+ -+ -infodir | --infodir | --infodi | --infod | --info | --inf) -+ ac_prev=infodir ;; -+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) -+ infodir=$ac_optarg ;; -+ -+ -libdir | --libdir | --libdi | --libd) -+ ac_prev=libdir ;; -+ -libdir=* | --libdir=* | --libdi=* | --libd=*) -+ libdir=$ac_optarg ;; -+ -+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ -+ | --libexe | --libex | --libe) -+ ac_prev=libexecdir ;; -+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ -+ | --libexe=* | --libex=* | --libe=*) -+ libexecdir=$ac_optarg ;; -+ -+ -localedir | --localedir | --localedi | --localed | --locale) -+ ac_prev=localedir ;; -+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) -+ localedir=$ac_optarg ;; -+ -+ -localstatedir | --localstatedir | --localstatedi | --localstated \ -+ | --localstate | --localstat | --localsta | --localst | --locals) -+ ac_prev=localstatedir ;; -+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ -+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) -+ localstatedir=$ac_optarg ;; -+ -+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) -+ ac_prev=mandir ;; -+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) -+ mandir=$ac_optarg ;; -+ -+ -nfp | --nfp | --nf) -+ # Obsolete; use --without-fp. -+ with_fp=no ;; -+ -+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ -+ | --no-cr | --no-c | -n) -+ no_create=yes ;; -+ -+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ -+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) -+ no_recursion=yes ;; -+ -+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ -+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ -+ | --oldin | --oldi | --old | --ol | --o) -+ ac_prev=oldincludedir ;; -+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ -+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ -+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) -+ oldincludedir=$ac_optarg ;; -+ -+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) -+ ac_prev=prefix ;; -+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) -+ prefix=$ac_optarg ;; -+ -+ -program-prefix | --program-prefix | --program-prefi | --program-pref \ -+ | --program-pre | --program-pr | --program-p) -+ ac_prev=program_prefix ;; -+ -program-prefix=* | --program-prefix=* | --program-prefi=* \ -+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) -+ program_prefix=$ac_optarg ;; -+ -+ -program-suffix | --program-suffix | --program-suffi | --program-suff \ -+ | --program-suf | --program-su | --program-s) -+ ac_prev=program_suffix ;; -+ -program-suffix=* | --program-suffix=* | --program-suffi=* \ -+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) -+ program_suffix=$ac_optarg ;; -+ -+ -program-transform-name | --program-transform-name \ -+ | --program-transform-nam | --program-transform-na \ -+ | --program-transform-n | --program-transform- \ -+ | --program-transform | --program-transfor \ -+ | --program-transfo | --program-transf \ -+ | --program-trans | --program-tran \ -+ | --progr-tra | --program-tr | --program-t) -+ ac_prev=program_transform_name ;; -+ -program-transform-name=* | --program-transform-name=* \ -+ | --program-transform-nam=* | --program-transform-na=* \ -+ | --program-transform-n=* | --program-transform-=* \ -+ | --program-transform=* | --program-transfor=* \ -+ | --program-transfo=* | --program-transf=* \ -+ | --program-trans=* | --program-tran=* \ -+ | --progr-tra=* | --program-tr=* | --program-t=*) -+ program_transform_name=$ac_optarg ;; -+ -+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) -+ ac_prev=pdfdir ;; -+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) -+ pdfdir=$ac_optarg ;; -+ -+ -psdir | --psdir | --psdi | --psd | --ps) -+ ac_prev=psdir ;; -+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) -+ psdir=$ac_optarg ;; -+ -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil) -+ silent=yes ;; -+ -+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) -+ ac_prev=sbindir ;; -+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ -+ | --sbi=* | --sb=*) -+ sbindir=$ac_optarg ;; -+ -+ -sharedstatedir | --sharedstatedir | --sharedstatedi \ -+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ -+ | --sharedst | --shareds | --shared | --share | --shar \ -+ | --sha | --sh) -+ ac_prev=sharedstatedir ;; -+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ -+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ -+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ -+ | --sha=* | --sh=*) -+ sharedstatedir=$ac_optarg ;; -+ -+ -site | --site | --sit) -+ ac_prev=site ;; -+ -site=* | --site=* | --sit=*) -+ site=$ac_optarg ;; -+ -+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) -+ ac_prev=srcdir ;; -+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) -+ srcdir=$ac_optarg ;; -+ -+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ -+ | --syscon | --sysco | --sysc | --sys | --sy) -+ ac_prev=sysconfdir ;; -+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ -+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) -+ sysconfdir=$ac_optarg ;; -+ -+ -target | --target | --targe | --targ | --tar | --ta | --t) -+ ac_prev=target_alias ;; -+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) -+ target_alias=$ac_optarg ;; -+ -+ -v | -verbose | --verbose | --verbos | --verbo | --verb) -+ verbose=yes ;; -+ -+ -version | --version | --versio | --versi | --vers | -V) -+ ac_init_version=: ;; -+ -+ -with-* | --with-*) -+ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -+ as_fn_error $? "invalid package name: $ac_useropt" -+ ac_useropt_orig=$ac_useropt -+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` -+ case $ac_user_opts in -+ *" -+"with_$ac_useropt" -+"*) ;; -+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" -+ ac_unrecognized_sep=', ';; -+ esac -+ eval with_$ac_useropt=\$ac_optarg ;; -+ -+ -without-* | --without-*) -+ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` -+ # Reject names that are not valid shell variable names. -+ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && -+ as_fn_error $? "invalid package name: $ac_useropt" -+ ac_useropt_orig=$ac_useropt -+ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` -+ case $ac_user_opts in -+ *" -+"with_$ac_useropt" -+"*) ;; -+ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" -+ ac_unrecognized_sep=', ';; -+ esac -+ eval with_$ac_useropt=no ;; -+ -+ --x) -+ # Obsolete; use --with-x. -+ with_x=yes ;; -+ -+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ -+ | --x-incl | --x-inc | --x-in | --x-i) -+ ac_prev=x_includes ;; -+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ -+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) -+ x_includes=$ac_optarg ;; -+ -+ -x-libraries | --x-libraries | --x-librarie | --x-librari \ -+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) -+ ac_prev=x_libraries ;; -+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ -+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) -+ x_libraries=$ac_optarg ;; -+ -+ -*) as_fn_error $? "unrecognized option: \`$ac_option' -+Try \`$0 --help' for more information" -+ ;; -+ -+ *=*) -+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` -+ # Reject names that are not valid shell variable names. -+ case $ac_envvar in #( -+ '' | [0-9]* | *[!_$as_cr_alnum]* ) -+ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; -+ esac -+ eval $ac_envvar=\$ac_optarg -+ export $ac_envvar ;; -+ -+ *) -+ # FIXME: should be removed in autoconf 3.0. -+ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 -+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && -+ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 -+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" -+ ;; -+ -+ esac -+done -+ -+if test -n "$ac_prev"; then -+ ac_option=--`echo $ac_prev | sed 's/_/-/g'` -+ as_fn_error $? "missing argument to $ac_option" -+fi -+ -+if test -n "$ac_unrecognized_opts"; then -+ case $enable_option_checking in -+ no) ;; -+ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; -+ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; -+ esac -+fi -+ -+# Check all directory arguments for consistency. -+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ -+ datadir sysconfdir sharedstatedir localstatedir includedir \ -+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ -+ libdir localedir mandir -+do -+ eval ac_val=\$$ac_var -+ # Remove trailing slashes. -+ case $ac_val in -+ */ ) -+ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` -+ eval $ac_var=\$ac_val;; -+ esac -+ # Be sure to have absolute directory names. -+ case $ac_val in -+ [\\/$]* | ?:[\\/]* ) continue;; -+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; -+ esac -+ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -+done -+ -+# There might be people who depend on the old broken behavior: `$host' -+# used to hold the argument of --host etc. -+# FIXME: To remove some day. -+build=$build_alias -+host=$host_alias -+target=$target_alias -+ -+# FIXME: To remove some day. -+if test "x$host_alias" != x; then -+ if test "x$build_alias" = x; then -+ cross_compiling=maybe -+ $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. -+ If a cross compiler is detected then cross compile mode will be used" >&2 -+ elif test "x$build_alias" != "x$host_alias"; then -+ cross_compiling=yes -+ fi -+fi -+ -+ac_tool_prefix= -+test -n "$host_alias" && ac_tool_prefix=$host_alias- -+ -+test "$silent" = yes && exec 6>/dev/null -+ -+ -+ac_pwd=`pwd` && test -n "$ac_pwd" && -+ac_ls_di=`ls -di .` && -+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || -+ as_fn_error $? "working directory cannot be determined" -+test "X$ac_ls_di" = "X$ac_pwd_ls_di" || -+ as_fn_error $? "pwd does not report name of working directory" -+ -+ -+# Find the source files, if location was not specified. -+if test -z "$srcdir"; then -+ ac_srcdir_defaulted=yes -+ # Try the directory containing this script, then the parent directory. -+ ac_confdir=`$as_dirname -- "$as_myself" || -+$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_myself" : 'X\(//\)[^/]' \| \ -+ X"$as_myself" : 'X\(//\)$' \| \ -+ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$as_myself" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ srcdir=$ac_confdir -+ if test ! -r "$srcdir/$ac_unique_file"; then -+ srcdir=.. -+ fi -+else -+ ac_srcdir_defaulted=no -+fi -+if test ! -r "$srcdir/$ac_unique_file"; then -+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." -+ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -+fi -+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -+ac_abs_confdir=`( -+ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" -+ pwd)` -+# When building in place, set srcdir=. -+if test "$ac_abs_confdir" = "$ac_pwd"; then -+ srcdir=. -+fi -+# Remove unnecessary trailing slashes from srcdir. -+# Double slashes in file names in object file debugging info -+# mess up M-x gdb in Emacs. -+case $srcdir in -+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -+esac -+for ac_var in $ac_precious_vars; do -+ eval ac_env_${ac_var}_set=\${${ac_var}+set} -+ eval ac_env_${ac_var}_value=\$${ac_var} -+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} -+ eval ac_cv_env_${ac_var}_value=\$${ac_var} -+done -+ -+# -+# Report the --help message. -+# -+if test "$ac_init_help" = "long"; then -+ # Omit some internal or obsolete options to make the list less imposing. -+ # This message is too long to be a string in the A/UX 3.1 sh. -+ cat <<_ACEOF -+\`configure' configures libmspack 0.4alpha to adapt to many kinds of systems. -+ -+Usage: $0 [OPTION]... [VAR=VALUE]... -+ -+To assign environment variables (e.g., CC, CFLAGS...), specify them as -+VAR=VALUE. See below for descriptions of some of the useful variables. -+ -+Defaults for the options are specified in brackets. -+ -+Configuration: -+ -h, --help display this help and exit -+ --help=short display options specific to this package -+ --help=recursive display the short help of all the included packages -+ -V, --version display version information and exit -+ -q, --quiet, --silent do not print \`checking ...' messages -+ --cache-file=FILE cache test results in FILE [disabled] -+ -C, --config-cache alias for \`--cache-file=config.cache' -+ -n, --no-create do not create output files -+ --srcdir=DIR find the sources in DIR [configure dir or \`..'] -+ -+Installation directories: -+ --prefix=PREFIX install architecture-independent files in PREFIX -+ [$ac_default_prefix] -+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX -+ [PREFIX] -+ -+By default, \`make install' will install all the files in -+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -+an installation prefix other than \`$ac_default_prefix' using \`--prefix', -+for instance \`--prefix=\$HOME'. -+ -+For better control, use the options below. -+ -+Fine tuning of the installation directories: -+ --bindir=DIR user executables [EPREFIX/bin] -+ --sbindir=DIR system admin executables [EPREFIX/sbin] -+ --libexecdir=DIR program executables [EPREFIX/libexec] -+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] -+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] -+ --localstatedir=DIR modifiable single-machine data [PREFIX/var] -+ --libdir=DIR object code libraries [EPREFIX/lib] -+ --includedir=DIR C header files [PREFIX/include] -+ --oldincludedir=DIR C header files for non-gcc [/usr/include] -+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] -+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] -+ --infodir=DIR info documentation [DATAROOTDIR/info] -+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] -+ --mandir=DIR man documentation [DATAROOTDIR/man] -+ --docdir=DIR documentation root [DATAROOTDIR/doc/libmspack] -+ --htmldir=DIR html documentation [DOCDIR] -+ --dvidir=DIR dvi documentation [DOCDIR] -+ --pdfdir=DIR pdf documentation [DOCDIR] -+ --psdir=DIR ps documentation [DOCDIR] -+_ACEOF -+ -+ cat <<\_ACEOF -+ -+Program names: -+ --program-prefix=PREFIX prepend PREFIX to installed program names -+ --program-suffix=SUFFIX append SUFFIX to installed program names -+ --program-transform-name=PROGRAM run sed PROGRAM on installed program names -+ -+System types: -+ --build=BUILD configure for building on BUILD [guessed] -+ --host=HOST cross-compile to build programs to run on HOST [BUILD] -+_ACEOF -+fi -+ -+if test -n "$ac_init_help"; then -+ case $ac_init_help in -+ short | recursive ) echo "Configuration of libmspack 0.4alpha:";; -+ esac -+ cat <<\_ACEOF -+ -+Optional Features: -+ --disable-option-checking ignore unrecognized --enable/--with options -+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) -+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] -+ --enable-silent-rules less verbose build output (undo: `make V=1') -+ --disable-silent-rules verbose build output (undo: `make V=0') -+ --enable-debug enable debugging -+ --disable-dependency-tracking speeds up one-time build -+ --enable-dependency-tracking do not reject slow dependency extractors -+ --enable-shared[=PKGS] build shared libraries [default=yes] -+ --enable-static[=PKGS] build static libraries [default=yes] -+ --enable-fast-install[=PKGS] -+ optimize for fast installation [default=yes] -+ --disable-libtool-lock avoid locking (might break parallel builds) -+ --disable-largefile omit support for large files -+ -+Optional Packages: -+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] -+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) -+ --with-pic[=PKGS] try to use only PIC/non-PIC objects [default=use -+ both] -+ --with-gnu-ld assume the C compiler uses GNU ld [default=no] -+ --with-sysroot=DIR Search for dependent libraries within DIR -+ (or the compiler's sysroot if not specified). -+ -+Some influential environment variables: -+ CC C compiler command -+ CFLAGS C compiler flags -+ LDFLAGS linker flags, e.g. -L if you have libraries in a -+ nonstandard directory -+ LIBS libraries to pass to the linker, e.g. -l -+ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if -+ you have headers in a nonstandard directory -+ CPP C preprocessor -+ -+Use these variables to override the choices made by `configure' or to help -+it to find libraries and programs with nonstandard names/locations. -+ -+Report bugs to . -+_ACEOF -+ac_status=$? -+fi -+ -+if test "$ac_init_help" = "recursive"; then -+ # If there are subdirs, report their specific --help. -+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue -+ test -d "$ac_dir" || -+ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || -+ continue -+ ac_builddir=. -+ -+case "$ac_dir" in -+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -+*) -+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` -+ # A ".." for each directory in $ac_dir_suffix. -+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` -+ case $ac_top_builddir_sub in -+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; -+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; -+ esac ;; -+esac -+ac_abs_top_builddir=$ac_pwd -+ac_abs_builddir=$ac_pwd$ac_dir_suffix -+# for backward compatibility: -+ac_top_builddir=$ac_top_build_prefix -+ -+case $srcdir in -+ .) # We are building in place. -+ ac_srcdir=. -+ ac_top_srcdir=$ac_top_builddir_sub -+ ac_abs_top_srcdir=$ac_pwd ;; -+ [\\/]* | ?:[\\/]* ) # Absolute name. -+ ac_srcdir=$srcdir$ac_dir_suffix; -+ ac_top_srcdir=$srcdir -+ ac_abs_top_srcdir=$srcdir ;; -+ *) # Relative name. -+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix -+ ac_top_srcdir=$ac_top_build_prefix$srcdir -+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -+esac -+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -+ -+ cd "$ac_dir" || { ac_status=$?; continue; } -+ # Check for guested configure. -+ if test -f "$ac_srcdir/configure.gnu"; then -+ echo && -+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive -+ elif test -f "$ac_srcdir/configure"; then -+ echo && -+ $SHELL "$ac_srcdir/configure" --help=recursive -+ else -+ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 -+ fi || ac_status=$? -+ cd "$ac_pwd" || { ac_status=$?; break; } -+ done -+fi -+ -+test -n "$ac_init_help" && exit $ac_status -+if $ac_init_version; then -+ cat <<\_ACEOF -+libmspack configure 0.4alpha -+generated by GNU Autoconf 2.68 -+ -+Copyright (C) 2010 Free Software Foundation, Inc. -+This configure script is free software; the Free Software Foundation -+gives unlimited permission to copy, distribute and modify it. -+_ACEOF -+ exit -+fi -+ -+## ------------------------ ## -+## Autoconf initialization. ## -+## ------------------------ ## -+ -+# ac_fn_c_try_compile LINENO -+# -------------------------- -+# Try to compile conftest.$ac_ext, and return whether this succeeded. -+ac_fn_c_try_compile () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ rm -f conftest.$ac_objext -+ if { { ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_compile") 2>conftest.err -+ ac_status=$? -+ if test -s conftest.err; then -+ grep -v '^ *+' conftest.err >conftest.er1 -+ cat conftest.er1 >&5 -+ mv -f conftest.er1 conftest.err -+ fi -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest.$ac_objext; then : -+ ac_retval=0 -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_retval=1 -+fi -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ as_fn_set_status $ac_retval -+ -+} # ac_fn_c_try_compile -+ -+# ac_fn_c_try_link LINENO -+# ----------------------- -+# Try to link conftest.$ac_ext, and return whether this succeeded. -+ac_fn_c_try_link () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ rm -f conftest.$ac_objext conftest$ac_exeext -+ if { { ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_link") 2>conftest.err -+ ac_status=$? -+ if test -s conftest.err; then -+ grep -v '^ *+' conftest.err >conftest.er1 -+ cat conftest.er1 >&5 -+ mv -f conftest.er1 conftest.err -+ fi -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && { -+ test -z "$ac_c_werror_flag" || -+ test ! -s conftest.err -+ } && test -s conftest$ac_exeext && { -+ test "$cross_compiling" = yes || -+ $as_test_x conftest$ac_exeext -+ }; then : -+ ac_retval=0 -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_retval=1 -+fi -+ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information -+ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would -+ # interfere with the next link command; also delete a directory that is -+ # left behind by Apple's compiler. We do this before executing the actions. -+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ as_fn_set_status $ac_retval -+ -+} # ac_fn_c_try_link -+ -+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -+# ------------------------------------------------------- -+# Tests whether HEADER exists and can be compiled using the include files in -+# INCLUDES, setting the cache variable VAR accordingly. -+ac_fn_c_check_header_compile () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -+$as_echo_n "checking for $2... " >&6; } -+if eval \${$3+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+#include <$2> -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ eval "$3=yes" -+else -+ eval "$3=no" -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+eval ac_res=\$$3 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ -+} # ac_fn_c_check_header_compile -+ -+# ac_fn_c_try_cpp LINENO -+# ---------------------- -+# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -+ac_fn_c_try_cpp () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ if { { ac_try="$ac_cpp conftest.$ac_ext" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err -+ ac_status=$? -+ if test -s conftest.err; then -+ grep -v '^ *+' conftest.err >conftest.er1 -+ cat conftest.er1 >&5 -+ mv -f conftest.er1 conftest.err -+ fi -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } > conftest.i && { -+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || -+ test ! -s conftest.err -+ }; then : -+ ac_retval=0 -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_retval=1 -+fi -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ as_fn_set_status $ac_retval -+ -+} # ac_fn_c_try_cpp -+ -+# ac_fn_c_try_run LINENO -+# ---------------------- -+# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -+# that executables *can* be run. -+ac_fn_c_try_run () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ if { { ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' -+ { { case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; }; then : -+ ac_retval=0 -+else -+ $as_echo "$as_me: program exited with status $ac_status" >&5 -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+ ac_retval=$ac_status -+fi -+ rm -rf conftest.dSYM conftest_ipa8_conftest.oo -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ as_fn_set_status $ac_retval -+ -+} # ac_fn_c_try_run -+ -+# ac_fn_c_check_func LINENO FUNC VAR -+# ---------------------------------- -+# Tests whether FUNC exists, setting the cache variable VAR accordingly -+ac_fn_c_check_func () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -+$as_echo_n "checking for $2... " >&6; } -+if eval \${$3+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+/* Define $2 to an innocuous variant, in case declares $2. -+ For example, HP-UX 11i declares gettimeofday. */ -+#define $2 innocuous_$2 -+ -+/* System header to define __stub macros and hopefully few prototypes, -+ which can conflict with char $2 (); below. -+ Prefer to if __STDC__ is defined, since -+ exists even on freestanding compilers. */ -+ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ -+#undef $2 -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char $2 (); -+/* 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_$2 || defined __stub___$2 -+choke me -+#endif -+ -+int -+main () -+{ -+return $2 (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ eval "$3=yes" -+else -+ eval "$3=no" -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+fi -+eval ac_res=\$$3 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ -+} # ac_fn_c_check_func -+ -+# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -+# ------------------------------------------------------- -+# Tests whether HEADER exists, giving a warning if it cannot be compiled using -+# the include files in INCLUDES and setting the cache variable VAR -+# accordingly. -+ac_fn_c_check_header_mongrel () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ if eval \${$3+:} false; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -+$as_echo_n "checking for $2... " >&6; } -+if eval \${$3+:} false; then : -+ $as_echo_n "(cached) " >&6 -+fi -+eval ac_res=\$$3 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+else -+ # Is the header compilable? -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -+$as_echo_n "checking $2 usability... " >&6; } -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+#include <$2> -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_header_compiler=yes -+else -+ ac_header_compiler=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -+$as_echo "$ac_header_compiler" >&6; } -+ -+# Is the header present? -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -+$as_echo_n "checking $2 presence... " >&6; } -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include <$2> -+_ACEOF -+if ac_fn_c_try_cpp "$LINENO"; then : -+ ac_header_preproc=yes -+else -+ ac_header_preproc=no -+fi -+rm -f conftest.err conftest.i conftest.$ac_ext -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -+$as_echo "$ac_header_preproc" >&6; } -+ -+# So? What about this header? -+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( -+ yes:no: ) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -+$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -+ ;; -+ no:yes:* ) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -+$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -+$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -+$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -+$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -+$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -+( $as_echo "## --------------------------- ## -+## Report this to kyzer@4u.net ## -+## --------------------------- ##" -+ ) | sed "s/^/$as_me: WARNING: /" >&2 -+ ;; -+esac -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -+$as_echo_n "checking for $2... " >&6; } -+if eval \${$3+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ eval "$3=\$ac_header_compiler" -+fi -+eval ac_res=\$$3 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+fi -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ -+} # ac_fn_c_check_header_mongrel -+ -+# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -+# ------------------------------------------- -+# Tests whether TYPE exists after having included INCLUDES, setting cache -+# variable VAR accordingly. -+ac_fn_c_check_type () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -+$as_echo_n "checking for $2... " >&6; } -+if eval \${$3+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ eval "$3=no" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+if (sizeof ($2)) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+if (sizeof (($2))) -+ return 0; -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ -+else -+ eval "$3=yes" -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+eval ac_res=\$$3 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ -+} # ac_fn_c_check_type -+ -+# ac_fn_c_compute_int LINENO EXPR VAR INCLUDES -+# -------------------------------------------- -+# Tries to find the compile-time value of EXPR in a program that includes -+# INCLUDES, setting VAR accordingly. Returns whether the value could be -+# computed -+ac_fn_c_compute_int () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ if test "$cross_compiling" = yes; then -+ # Depending upon the size, compute the lo and hi bounds. -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) >= 0)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_lo=0 ac_mid=0 -+ while :; do -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_hi=$ac_mid; break -+else -+ as_fn_arith $ac_mid + 1 && ac_lo=$as_val -+ if test $ac_lo -le $ac_mid; then -+ ac_lo= ac_hi= -+ break -+ fi -+ as_fn_arith 2 '*' $ac_mid + 1 && ac_mid=$as_val -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) < 0)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_hi=-1 ac_mid=-1 -+ while :; do -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) >= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_lo=$ac_mid; break -+else -+ as_fn_arith '(' $ac_mid ')' - 1 && ac_hi=$as_val -+ if test $ac_mid -le $ac_hi; then -+ ac_lo= ac_hi= -+ break -+ fi -+ as_fn_arith 2 '*' $ac_mid && ac_mid=$as_val -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ done -+else -+ ac_lo= ac_hi= -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+# Binary search between lo and hi bounds. -+while test "x$ac_lo" != "x$ac_hi"; do -+ as_fn_arith '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo && ac_mid=$as_val -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+int -+main () -+{ -+static int test_array [1 - 2 * !(($2) <= $ac_mid)]; -+test_array [0] = 0 -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_hi=$ac_mid -+else -+ as_fn_arith '(' $ac_mid ')' + 1 && ac_lo=$as_val -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+done -+case $ac_lo in #(( -+?*) eval "$3=\$ac_lo"; ac_retval=0 ;; -+'') ac_retval=1 ;; -+esac -+ else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+static long int longval () { return $2; } -+static unsigned long int ulongval () { return $2; } -+#include -+#include -+int -+main () -+{ -+ -+ FILE *f = fopen ("conftest.val", "w"); -+ if (! f) -+ return 1; -+ if (($2) < 0) -+ { -+ long int i = longval (); -+ if (i != ($2)) -+ return 1; -+ fprintf (f, "%ld", i); -+ } -+ else -+ { -+ unsigned long int i = ulongval (); -+ if (i != ($2)) -+ return 1; -+ fprintf (f, "%lu", i); -+ } -+ /* Do not output a trailing newline, as this causes \r\n confusion -+ on some platforms. */ -+ return ferror (f) || fclose (f) != 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ echo >>conftest.val; read $3 config.log <<_ACEOF -+This file contains any messages produced by compilers while -+running configure, to aid debugging if configure makes a mistake. -+ -+It was created by libmspack $as_me 0.4alpha, which was -+generated by GNU Autoconf 2.68. Invocation command line was -+ -+ $ $0 $@ -+ -+_ACEOF -+exec 5>>config.log -+{ -+cat <<_ASUNAME -+## --------- ## -+## Platform. ## -+## --------- ## -+ -+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -+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 || echo unknown` -+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` -+ -+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` -+ -+_ASUNAME -+ -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ $as_echo "PATH: $as_dir" -+ done -+IFS=$as_save_IFS -+ -+} >&5 -+ -+cat >&5 <<_ACEOF -+ -+ -+## ----------- ## -+## Core tests. ## -+## ----------- ## -+ -+_ACEOF -+ -+ -+# Keep a trace of the command line. -+# Strip out --no-create and --no-recursion so they do not pile up. -+# Strip out --silent because we don't want to record it for future runs. -+# Also quote any args containing shell meta-characters. -+# Make two passes to allow for proper duplicate-argument suppression. -+ac_configure_args= -+ac_configure_args0= -+ac_configure_args1= -+ac_must_keep_next=false -+for ac_pass in 1 2 -+do -+ for ac_arg -+ do -+ case $ac_arg in -+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil) -+ continue ;; -+ *\'*) -+ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; -+ esac -+ case $ac_pass in -+ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; -+ 2) -+ as_fn_append ac_configure_args1 " '$ac_arg'" -+ if test $ac_must_keep_next = true; then -+ ac_must_keep_next=false # Got value, back to normal. -+ else -+ case $ac_arg in -+ *=* | --config-cache | -C | -disable-* | --disable-* \ -+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ -+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ -+ | -with-* | --with-* | -without-* | --without-* | --x) -+ case "$ac_configure_args0 " in -+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; -+ esac -+ ;; -+ -* ) ac_must_keep_next=true ;; -+ esac -+ fi -+ as_fn_append ac_configure_args " '$ac_arg'" -+ ;; -+ esac -+ done -+done -+{ ac_configure_args0=; unset ac_configure_args0;} -+{ ac_configure_args1=; unset ac_configure_args1;} -+ -+# When interrupted or exit'd, cleanup temporary files, and complete -+# config.log. We remove comments because anyway the quotes in there -+# would cause problems or look ugly. -+# WARNING: Use '\'' to represent an apostrophe within the trap. -+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -+trap 'exit_status=$? -+ # Save into config.log some information that might help in debugging. -+ { -+ echo -+ -+ $as_echo "## ---------------- ## -+## Cache variables. ## -+## ---------------- ##" -+ echo -+ # The following way of writing the cache mishandles newlines in values, -+( -+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do -+ eval ac_val=\$$ac_var -+ case $ac_val in #( -+ *${as_nl}*) -+ case $ac_var in #( -+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; -+ esac -+ case $ac_var in #( -+ _ | IFS | as_nl) ;; #( -+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( -+ *) { eval $ac_var=; unset $ac_var;} ;; -+ esac ;; -+ esac -+ done -+ (set) 2>&1 | -+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( -+ *${as_nl}ac_space=\ *) -+ sed -n \ -+ "s/'\''/'\''\\\\'\'''\''/g; -+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" -+ ;; #( -+ *) -+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" -+ ;; -+ esac | -+ sort -+) -+ echo -+ -+ $as_echo "## ----------------- ## -+## Output variables. ## -+## ----------------- ##" -+ echo -+ for ac_var in $ac_subst_vars -+ do -+ eval ac_val=\$$ac_var -+ case $ac_val in -+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; -+ esac -+ $as_echo "$ac_var='\''$ac_val'\''" -+ done | sort -+ echo -+ -+ if test -n "$ac_subst_files"; then -+ $as_echo "## ------------------- ## -+## File substitutions. ## -+## ------------------- ##" -+ echo -+ for ac_var in $ac_subst_files -+ do -+ eval ac_val=\$$ac_var -+ case $ac_val in -+ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; -+ esac -+ $as_echo "$ac_var='\''$ac_val'\''" -+ done | sort -+ echo -+ fi -+ -+ if test -s confdefs.h; then -+ $as_echo "## ----------- ## -+## confdefs.h. ## -+## ----------- ##" -+ echo -+ cat confdefs.h -+ echo -+ fi -+ test "$ac_signal" != 0 && -+ $as_echo "$as_me: caught signal $ac_signal" -+ $as_echo "$as_me: exit $exit_status" -+ } >&5 -+ rm -f core *.core core.conftest.* && -+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && -+ exit $exit_status -+' 0 -+for ac_signal in 1 2 13 15; do -+ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -+done -+ac_signal=0 -+ -+# confdefs.h avoids OS command line length limits that DEFS can exceed. -+rm -f -r conftest* confdefs.h -+ -+$as_echo "/* confdefs.h */" > confdefs.h -+ -+# Predefined preprocessor variables. -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_NAME "$PACKAGE_NAME" -+_ACEOF -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -+_ACEOF -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_VERSION "$PACKAGE_VERSION" -+_ACEOF -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_STRING "$PACKAGE_STRING" -+_ACEOF -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -+_ACEOF -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE_URL "$PACKAGE_URL" -+_ACEOF -+ -+ -+# Let the site file select an alternate cache file if it wants to. -+# Prefer an explicitly selected file to automatically selected ones. -+ac_site_file1=NONE -+ac_site_file2=NONE -+if test -n "$CONFIG_SITE"; then -+ # We do not want a PATH search for config.site. -+ case $CONFIG_SITE in #(( -+ -*) ac_site_file1=./$CONFIG_SITE;; -+ */*) ac_site_file1=$CONFIG_SITE;; -+ *) ac_site_file1=./$CONFIG_SITE;; -+ esac -+elif test "x$prefix" != xNONE; then -+ ac_site_file1=$prefix/share/config.site -+ ac_site_file2=$prefix/etc/config.site -+else -+ ac_site_file1=$ac_default_prefix/share/config.site -+ ac_site_file2=$ac_default_prefix/etc/config.site -+fi -+for ac_site_file in "$ac_site_file1" "$ac_site_file2" -+do -+ test "x$ac_site_file" = xNONE && continue -+ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -+$as_echo "$as_me: loading site script $ac_site_file" >&6;} -+ sed 's/^/| /' "$ac_site_file" >&5 -+ . "$ac_site_file" \ -+ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "failed to load site script $ac_site_file -+See \`config.log' for more details" "$LINENO" 5; } -+ fi -+done -+ -+if test -r "$cache_file"; then -+ # Some versions of bash will fail to source /dev/null (special files -+ # actually), so we avoid doing that. DJGPP emulates it as a regular file. -+ if test /dev/null != "$cache_file" && test -f "$cache_file"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -+$as_echo "$as_me: loading cache $cache_file" >&6;} -+ case $cache_file in -+ [\\/]* | ?:[\\/]* ) . "$cache_file";; -+ *) . "./$cache_file";; -+ esac -+ fi -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -+$as_echo "$as_me: creating cache $cache_file" >&6;} -+ >$cache_file -+fi -+ -+# Check that the precious variables saved in the cache have kept the same -+# value. -+ac_cache_corrupted=false -+for ac_var in $ac_precious_vars; do -+ eval ac_old_set=\$ac_cv_env_${ac_var}_set -+ eval ac_new_set=\$ac_env_${ac_var}_set -+ eval ac_old_val=\$ac_cv_env_${ac_var}_value -+ eval ac_new_val=\$ac_env_${ac_var}_value -+ case $ac_old_set,$ac_new_set in -+ set,) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -+$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} -+ ac_cache_corrupted=: ;; -+ ,set) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -+$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} -+ ac_cache_corrupted=: ;; -+ ,);; -+ *) -+ if test "x$ac_old_val" != "x$ac_new_val"; then -+ # differences in whitespace do not lead to failure. -+ ac_old_val_w=`echo x $ac_old_val` -+ ac_new_val_w=`echo x $ac_new_val` -+ if test "$ac_old_val_w" != "$ac_new_val_w"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -+$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} -+ ac_cache_corrupted=: -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -+$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} -+ eval $ac_var=\$ac_old_val -+ fi -+ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -+$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -+$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} -+ fi;; -+ esac -+ # Pass precious variables to config.status. -+ if test "$ac_new_set" = set; then -+ case $ac_new_val in -+ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; -+ *) ac_arg=$ac_var=$ac_new_val ;; -+ esac -+ case " $ac_configure_args " in -+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. -+ *) as_fn_append ac_configure_args " '$ac_arg'" ;; -+ esac -+ fi -+done -+if $ac_cache_corrupted; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -+$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} -+ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -+fi -+## -------------------- ## -+## Main body of script. ## -+## -------------------- ## -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+ -+am__api_version='1.11' -+ -+ac_aux_dir= -+for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do -+ if test -f "$ac_dir/install-sh"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install-sh -c" -+ break -+ elif test -f "$ac_dir/install.sh"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/install.sh -c" -+ break -+ elif test -f "$ac_dir/shtool"; then -+ ac_aux_dir=$ac_dir -+ ac_install_sh="$ac_aux_dir/shtool install -c" -+ break -+ fi -+done -+if test -z "$ac_aux_dir"; then -+ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -+fi -+ -+# These three variables are undocumented and unsupported, -+# and are intended to be withdrawn in a future Autoconf release. -+# They can cause serious problems if a builder's source tree is in a directory -+# whose full name contains unusual characters. -+ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -+ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -+ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. -+ -+ -+# 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 -+# AmigaOS /C/install, which installs bootblocks on floppy discs -+# 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" -+# OS/2's system install, which has a completely different semantic -+# ./install, which can be erroneously created by make from ./install.sh. -+# Reject install programs that cannot install multiple files. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -+$as_echo_n "checking for a BSD-compatible install... " >&6; } -+if test -z "$INSTALL"; then -+if ${ac_cv_path_install+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ # Account for people who put trailing slashes in PATH elements. -+case $as_dir/ in #(( -+ ./ | .// | /[cC]/* | \ -+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ -+ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ -+ /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 -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then -+ if test $ac_prog = install && -+ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # AIX install. It has an incompatible calling convention. -+ : -+ elif test $ac_prog = install && -+ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then -+ # program-specific install script used by HP pwplus--don't use. -+ : -+ else -+ rm -rf conftest.one conftest.two conftest.dir -+ echo one > conftest.one -+ echo two > conftest.two -+ mkdir conftest.dir -+ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && -+ test -s conftest.one && test -s conftest.two && -+ test -s conftest.dir/conftest.one && -+ test -s conftest.dir/conftest.two -+ then -+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" -+ break 3 -+ fi -+ fi -+ fi -+ done -+ done -+ ;; -+esac -+ -+ done -+IFS=$as_save_IFS -+ -+rm -rf conftest.one conftest.two conftest.dir -+ -+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. Don't cache a -+ # value for INSTALL within a source directory, because that will -+ # break other packages using the cache if that directory is -+ # removed, or if the value is a relative name. -+ INSTALL=$ac_install_sh -+ fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -+$as_echo "$INSTALL" >&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}' -+ -+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -+$as_echo_n "checking whether build environment is sane... " >&6; } -+# Just in case -+sleep 1 -+echo timestamp > conftest.file -+# Reject unsafe characters in $srcdir or the absolute working directory -+# name. Accept space and tab only in the latter. -+am_lf=' -+' -+case `pwd` in -+ *[\\\"\#\$\&\'\`$am_lf]*) -+ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -+esac -+case $srcdir in -+ *[\\\"\#\$\&\'\`$am_lf\ \ ]*) -+ as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -+esac -+ -+# 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" conftest.file 2> /dev/null` -+ if test "$*" = "X"; then -+ # -L didn't work. -+ set X `ls -t "$srcdir/configure" conftest.file` -+ fi -+ rm -f conftest.file -+ if test "$*" != "X $srcdir/configure conftest.file" \ -+ && test "$*" != "X conftest.file $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". -+ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -+alias in your environment" "$LINENO" 5 -+ fi -+ -+ test "$2" = conftest.file -+ ) -+then -+ # Ok. -+ : -+else -+ as_fn_error $? "newly created file is older than distributed files! -+Check your system clock" "$LINENO" 5 -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+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" -+# Double any \ or $. -+# By default was `s,x,x', remove it if useless. -+ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -+program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` -+ -+# expand $ac_aux_dir to an absolute path -+am_aux_dir=`cd $ac_aux_dir && pwd` -+ -+if test x"${MISSING+set}" != xset; then -+ case $am_aux_dir in -+ *\ * | *\ *) -+ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; -+ *) -+ MISSING="\${SHELL} $am_aux_dir/missing" ;; -+ esac -+fi -+# Use eval to expand $SHELL -+if eval "$MISSING --run true"; then -+ am_missing_run="$MISSING --run " -+else -+ am_missing_run= -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -+$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -+fi -+ -+if test x"${install_sh}" != xset; then -+ case $am_aux_dir in -+ *\ * | *\ *) -+ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; -+ *) -+ install_sh="\${SHELL} $am_aux_dir/install-sh" -+ esac -+fi -+ -+# Installed binaries are usually stripped using `strip' when the user -+# run `make install-strip'. However `strip' might not be the right -+# tool to use in cross-compilation environments, therefore Automake -+# will honor the `STRIP' environment variable to overrule this program. -+if test "$cross_compiling" != no; then -+ if test -n "$ac_tool_prefix"; then -+ # 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 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_STRIP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$STRIP"; then -+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_STRIP="${ac_tool_prefix}strip" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+STRIP=$ac_cv_prog_STRIP -+if test -n "$STRIP"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -+$as_echo "$STRIP" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_STRIP"; then -+ ac_ct_STRIP=$STRIP -+ # Extract the first word of "strip", so it can be a program name with args. -+set dummy strip; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_STRIP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_STRIP"; then -+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_STRIP="strip" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -+if test -n "$ac_ct_STRIP"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -+$as_echo "$ac_ct_STRIP" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_STRIP" = x; then -+ STRIP=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ STRIP=$ac_ct_STRIP -+ fi -+else -+ STRIP="$ac_cv_prog_STRIP" -+fi -+ -+fi -+INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -+$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -+if test -z "$MKDIR_P"; then -+ if ${ac_cv_path_mkdir+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_prog in mkdir gmkdir; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue -+ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( -+ 'mkdir (GNU coreutils) '* | \ -+ 'mkdir (coreutils) '* | \ -+ 'mkdir (fileutils) '4.1*) -+ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext -+ break 3;; -+ esac -+ done -+ done -+ done -+IFS=$as_save_IFS -+ -+fi -+ -+ test -d ./--version && rmdir ./--version -+ if test "${ac_cv_path_mkdir+set}" = set; then -+ MKDIR_P="$ac_cv_path_mkdir -p" -+ else -+ # As a last resort, use the slow shell script. Don't cache a -+ # value for MKDIR_P within a source directory, because that will -+ # break other packages using the cache if that directory is -+ # removed, or if the value is a relative name. -+ MKDIR_P="$ac_install_sh -d" -+ fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -+$as_echo "$MKDIR_P" >&6; } -+ -+mkdir_p="$MKDIR_P" -+case $mkdir_p in -+ [\\/$]* | ?:[\\/]*) ;; -+ */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -+esac -+ -+for ac_prog in gawk mawk nawk awk -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_AWK+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$AWK"; then -+ ac_cv_prog_AWK="$AWK" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_AWK="$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+AWK=$ac_cv_prog_AWK -+if test -n "$AWK"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -+$as_echo "$AWK" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$AWK" && break -+done -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -+$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -+set x ${MAKE-make} -+ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -+if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat >conftest.make <<\_ACEOF -+SHELL = /bin/sh -+all: -+ @echo '@@@%%%=$(MAKE)=@@@%%%' -+_ACEOF -+# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -+case `${MAKE-make} -f conftest.make 2>/dev/null` in -+ *@@@%%%=?*=@@@%%%*) -+ eval ac_cv_prog_make_${ac_make}_set=yes;; -+ *) -+ eval ac_cv_prog_make_${ac_make}_set=no;; -+esac -+rm -f conftest.make -+fi -+if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+ SET_MAKE= -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ SET_MAKE="MAKE=${MAKE-make}" -+fi -+ -+rm -rf .tst 2>/dev/null -+mkdir .tst 2>/dev/null -+if test -d .tst; then -+ am__leading_dot=. -+else -+ am__leading_dot=_ -+fi -+rmdir .tst 2>/dev/null -+ -+if test "`cd $srcdir && pwd`" != "`pwd`"; then -+ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output -+ # is not polluted with repeated "-I." -+ am__isrc=' -I$(srcdir)' -+ # test to see if srcdir already configured -+ if test -f $srcdir/config.status; then -+ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 -+ fi -+fi -+ -+# test whether we have cygpath -+if test -z "$CYGPATH_W"; then -+ if (cygpath --version) >/dev/null 2>/dev/null; then -+ CYGPATH_W='cygpath -w' -+ else -+ CYGPATH_W=echo -+ fi -+fi -+ -+ -+# Define the identity of the package. -+ PACKAGE='libmspack' -+ VERSION='0.4alpha' -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define PACKAGE "$PACKAGE" -+_ACEOF -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define VERSION "$VERSION" -+_ACEOF -+ -+# Some tools Automake needs. -+ -+ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} -+ -+ -+AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} -+ -+ -+AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} -+ -+ -+AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} -+ -+ -+MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} -+ -+# We need awk for the "check" target. The system "awk" is bad on -+# some platforms. -+# Always define AMTAR for backward compatibility. Yes, it's still used -+# in the wild :-( We should find a proper way to deprecate it ... -+AMTAR='$${TAR-tar}' -+ -+am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' -+ -+ -+ -+ -+ -+ -+ac_config_headers="$ac_config_headers config.h" -+ -+ -+# Check whether --enable-silent-rules was given. -+if test "${enable_silent_rules+set}" = set; then : -+ enableval=$enable_silent_rules; -+fi -+ -+case $enable_silent_rules in -+yes) AM_DEFAULT_VERBOSITY=0;; -+no) AM_DEFAULT_VERBOSITY=1;; -+*) AM_DEFAULT_VERBOSITY=0;; -+esac -+am_make=${MAKE-make} -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 -+$as_echo_n "checking whether $am_make supports nested variables... " >&6; } -+if ${am_cv_make_support_nested_variables+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if $as_echo 'TRUE=$(BAR$(V)) -+BAR0=false -+BAR1=true -+V=1 -+am__doit: -+ @$(TRUE) -+.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then -+ am_cv_make_support_nested_variables=yes -+else -+ am_cv_make_support_nested_variables=no -+fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 -+$as_echo "$am_cv_make_support_nested_variables" >&6; } -+if test $am_cv_make_support_nested_variables = yes; then -+ AM_V='$(V)' -+ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' -+else -+ AM_V=$AM_DEFAULT_VERBOSITY -+ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY -+fi -+AM_BACKSLASH='\' -+ -+ -+# --enable-debug option -+# Check whether --enable-debug was given. -+if test "${enable_debug+set}" = set; then : -+ enableval=$enable_debug; enable_debug=$enableval -+else -+ enable_debug=no -+fi -+ -+if test x$enable_debug = xyes; then -+ -+$as_echo "#define DEBUG 1" >>confdefs.h -+ -+fi -+ if test x$enable_debug = 'xyes'; then -+ DEBUG_TRUE= -+ DEBUG_FALSE='#' -+else -+ DEBUG_TRUE='#' -+ DEBUG_FALSE= -+fi -+ -+ -+# Checks for programs. -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -+set dummy ${ac_tool_prefix}gcc; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_CC+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CC="${ac_tool_prefix}gcc" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+$as_echo "$CC" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_CC"; then -+ ac_ct_CC=$CC -+ # Extract the first word of "gcc", so it can be a program name with args. -+set dummy gcc; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_CC+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_CC"; then -+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_CC="gcc" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_CC=$ac_cv_prog_ac_ct_CC -+if test -n "$ac_ct_CC"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -+$as_echo "$ac_ct_CC" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_CC" = x; then -+ CC="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ CC=$ac_ct_CC -+ fi -+else -+ CC="$ac_cv_prog_CC" -+fi -+ -+if test -z "$CC"; then -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -+set dummy ${ac_tool_prefix}cc; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_CC+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CC="${ac_tool_prefix}cc" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+$as_echo "$CC" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ fi -+fi -+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 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_CC+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+ ac_prog_rejected=no -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then -+ ac_prog_rejected=yes -+ continue -+ fi -+ ac_cv_prog_CC="cc" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+if test $ac_prog_rejected = yes; then -+ # We found a bogon in the path, so make sure we never use it. -+ set dummy $ac_cv_prog_CC -+ shift -+ if test $# != 0; then -+ # We chose a different compiler from the bogus one. -+ # However, it has the same basename, so the bogon will be chosen -+ # first if we set CC to just the basename; use the full file name. -+ shift -+ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" -+ fi -+fi -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+$as_echo "$CC" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$CC"; then -+ if test -n "$ac_tool_prefix"; then -+ for ac_prog in cl.exe -+ do -+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -+set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_CC+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$CC"; then -+ ac_cv_prog_CC="$CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+CC=$ac_cv_prog_CC -+if test -n "$CC"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -+$as_echo "$CC" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$CC" && break -+ done -+fi -+if test -z "$CC"; then -+ ac_ct_CC=$CC -+ for ac_prog in cl.exe -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_CC+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_CC"; then -+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_CC="$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_CC=$ac_cv_prog_ac_ct_CC -+if test -n "$ac_ct_CC"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -+$as_echo "$ac_ct_CC" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$ac_ct_CC" && break -+done -+ -+ if test "x$ac_ct_CC" = x; then -+ CC="" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ CC=$ac_ct_CC -+ fi -+fi -+ -+fi -+ -+ -+test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "no acceptable C compiler found in \$PATH -+See \`config.log' for more details" "$LINENO" 5; } -+ -+# Provide some information about the compiler. -+$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -+set X $ac_compile -+ac_compiler=$2 -+for ac_option in --version -v -V -qversion; do -+ { { ac_try="$ac_compiler $ac_option >&5" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_compiler $ac_option >&5") 2>conftest.err -+ ac_status=$? -+ if test -s conftest.err; then -+ sed '10a\ -+... rest of stderr output deleted ... -+ 10q' conftest.err >conftest.er1 -+ cat conftest.er1 >&5 -+ fi -+ rm -f conftest.er1 conftest.err -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+done -+ -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+ac_clean_files_save=$ac_clean_files -+ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -+# Try to create an executable without -o first, disregard a.out. -+# It will help us diagnose broken compilers, and finding out an intuition -+# of exeext. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -+$as_echo_n "checking whether the C compiler works... " >&6; } -+ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` -+ -+# The possible output files: -+ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" -+ -+ac_rmfiles= -+for ac_file in $ac_files -+do -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; -+ * ) ac_rmfiles="$ac_rmfiles $ac_file";; -+ esac -+done -+rm -f $ac_rmfiles -+ -+if { { ac_try="$ac_link_default" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_link_default") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then : -+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -+# in a Makefile. We should not override ac_cv_exeext if it was cached, -+# so that the user can short-circuit this test for compilers unknown to -+# Autoconf. -+for ac_file in $ac_files '' -+do -+ test -f "$ac_file" || continue -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) -+ ;; -+ [ab].out ) -+ # We found the default executable, but exeext='' is most -+ # certainly right. -+ break;; -+ *.* ) -+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; -+ then :; else -+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` -+ fi -+ # We set ac_cv_exeext here because the later test for it is not -+ # safe: cross compilers may not add the suffix if given an `-o' -+ # argument, so we may need to know it at that point already. -+ # Even if this section looks crufty: it has the advantage of -+ # actually working. -+ break;; -+ * ) -+ break;; -+ esac -+done -+test "$ac_cv_exeext" = no && ac_cv_exeext= -+ -+else -+ ac_file='' -+fi -+if test -z "$ac_file"; then : -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+$as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error 77 "C compiler cannot create executables -+See \`config.log' for more details" "$LINENO" 5; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -+$as_echo_n "checking for C compiler default output file name... " >&6; } -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -+$as_echo "$ac_file" >&6; } -+ac_exeext=$ac_cv_exeext -+ -+rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -+ac_clean_files=$ac_clean_files_save -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -+$as_echo_n "checking for suffix of executables... " >&6; } -+if { { ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then : -+ # If both `conftest.exe' and `conftest' are `present' (well, observable) -+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -+# work properly (i.e., refer to `conftest.exe'), while it won't with -+# `rm'. -+for ac_file in conftest.exe conftest conftest.*; do -+ test -f "$ac_file" || continue -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; -+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` -+ break;; -+ * ) break;; -+ esac -+done -+else -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "cannot compute suffix of executables: cannot compile and link -+See \`config.log' for more details" "$LINENO" 5; } -+fi -+rm -f conftest conftest$ac_cv_exeext -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -+$as_echo "$ac_cv_exeext" >&6; } -+ -+rm -f conftest.$ac_ext -+EXEEXT=$ac_cv_exeext -+ac_exeext=$EXEEXT -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+int -+main () -+{ -+FILE *f = fopen ("conftest.out", "w"); -+ return ferror (f) || fclose (f) != 0; -+ -+ ; -+ return 0; -+} -+_ACEOF -+ac_clean_files="$ac_clean_files conftest.out" -+# Check that the compiler produces executables we can run. If not, either -+# the compiler is broken, or we cross compile. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -+$as_echo_n "checking whether we are cross compiling... " >&6; } -+if test "$cross_compiling" != yes; then -+ { { ac_try="$ac_link" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_link") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ if { ac_try='./conftest$ac_cv_exeext' -+ { { case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_try") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; }; then -+ cross_compiling=no -+ else -+ if test "$cross_compiling" = maybe; then -+ cross_compiling=yes -+ else -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "cannot run C compiled programs. -+If you meant to cross compile, use \`--host'. -+See \`config.log' for more details" "$LINENO" 5; } -+ fi -+ fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -+$as_echo "$cross_compiling" >&6; } -+ -+rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -+ac_clean_files=$ac_clean_files_save -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -+$as_echo_n "checking for suffix of object files... " >&6; } -+if ${ac_cv_objext+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+rm -f conftest.o conftest.obj -+if { { ac_try="$ac_compile" -+case "(($ac_try" in -+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; -+ *) ac_try_echo=$ac_try;; -+esac -+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -+$as_echo "$ac_try_echo"; } >&5 -+ (eval "$ac_compile") 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then : -+ for ac_file in conftest.o conftest.obj conftest.*; do -+ test -f "$ac_file" || continue; -+ case $ac_file in -+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; -+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` -+ break;; -+ esac -+done -+else -+ $as_echo "$as_me: failed program was:" >&5 -+sed 's/^/| /' conftest.$ac_ext >&5 -+ -+{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "cannot compute suffix of object files: cannot compile -+See \`config.log' for more details" "$LINENO" 5; } -+fi -+rm -f conftest.$ac_cv_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -+$as_echo "$ac_cv_objext" >&6; } -+OBJEXT=$ac_cv_objext -+ac_objext=$OBJEXT -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -+$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -+if ${ac_cv_c_compiler_gnu+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+#ifndef __GNUC__ -+ choke me -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_compiler_gnu=yes -+else -+ ac_compiler_gnu=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ac_cv_c_compiler_gnu=$ac_compiler_gnu -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -+$as_echo "$ac_cv_c_compiler_gnu" >&6; } -+if test $ac_compiler_gnu = yes; then -+ GCC=yes -+else -+ GCC= -+fi -+ac_test_CFLAGS=${CFLAGS+set} -+ac_save_CFLAGS=$CFLAGS -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -+$as_echo_n "checking whether $CC accepts -g... " >&6; } -+if ${ac_cv_prog_cc_g+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_save_c_werror_flag=$ac_c_werror_flag -+ ac_c_werror_flag=yes -+ ac_cv_prog_cc_g=no -+ CFLAGS="-g" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_prog_cc_g=yes -+else -+ CFLAGS="" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ -+else -+ ac_c_werror_flag=$ac_save_c_werror_flag -+ CFLAGS="-g" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_prog_cc_g=yes -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ ac_c_werror_flag=$ac_save_c_werror_flag -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -+$as_echo "$ac_cv_prog_cc_g" >&6; } -+if test "$ac_test_CFLAGS" = set; then -+ CFLAGS=$ac_save_CFLAGS -+elif test $ac_cv_prog_cc_g = yes; then -+ if test "$GCC" = yes; then -+ CFLAGS="-g -O2" -+ else -+ CFLAGS="-g" -+ fi -+else -+ if test "$GCC" = yes; then -+ CFLAGS="-O2" -+ else -+ CFLAGS= -+ fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -+$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -+if ${ac_cv_prog_cc_c89+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_prog_cc_c89=no -+ac_save_CC=$CC -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+#include -+#include -+#include -+/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -+struct buf { int x; }; -+FILE * (*rcsopen) (struct buf *, struct stat *, int); -+static char *e (p, i) -+ char **p; -+ int i; -+{ -+ return p[i]; -+} -+static char *f (char * (*g) (char **, int), char **p, ...) -+{ -+ char *s; -+ va_list v; -+ va_start (v,p); -+ s = g (p, va_arg (v,int)); -+ va_end (v); -+ return s; -+} -+ -+/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has -+ function prototypes and stuff, but not '\xHH' hex character constants. -+ These don't provoke an error unfortunately, instead are silently treated -+ as 'x'. The following induces an error, until -std is added to get -+ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an -+ array size at least. It's necessary to write '\x00'==0 to get something -+ that's true only with -std. */ -+int osf4_cc_array ['\x00' == 0 ? 1 : -1]; -+ -+/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters -+ inside strings and character constants. */ -+#define FOO(x) 'x' -+int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; -+ -+int test (int i, double x); -+struct s1 {int (*f) (int a);}; -+struct s2 {int (*f) (double a);}; -+int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -+int argc; -+char **argv; -+int -+main () -+{ -+return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; -+ ; -+ return 0; -+} -+_ACEOF -+for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ -+ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -+do -+ CC="$ac_save_CC $ac_arg" -+ if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_prog_cc_c89=$ac_arg -+fi -+rm -f core conftest.err conftest.$ac_objext -+ test "x$ac_cv_prog_cc_c89" != "xno" && break -+done -+rm -f conftest.$ac_ext -+CC=$ac_save_CC -+ -+fi -+# AC_CACHE_VAL -+case "x$ac_cv_prog_cc_c89" in -+ x) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -+$as_echo "none needed" >&6; } ;; -+ xno) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -+$as_echo "unsupported" >&6; } ;; -+ *) -+ CC="$CC $ac_cv_prog_cc_c89" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -+$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -+esac -+if test "x$ac_cv_prog_cc_c89" != xno; then : -+ -+fi -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+DEPDIR="${am__leading_dot}deps" -+ -+ac_config_commands="$ac_config_commands depfiles" -+ -+ -+am_make=${MAKE-make} -+cat > confinc << 'END' -+am__doit: -+ @echo this is the am__doit target -+.PHONY: am__doit -+END -+# If we don't find an include directive, just comment out the code. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -+$as_echo_n "checking for style of include used by $am_make... " >&6; } -+am__include="#" -+am__quote= -+_am_result=none -+# First try GNU make style include. -+echo "include confinc" > confmf -+# Ignore all kinds of additional output from `make'. -+case `$am_make -s -f confmf 2> /dev/null` in #( -+*the\ am__doit\ target*) -+ am__include=include -+ am__quote= -+ _am_result=GNU -+ ;; -+esac -+# Now try BSD make style include. -+if test "$am__include" = "#"; then -+ echo '.include "confinc"' > confmf -+ case `$am_make -s -f confmf 2> /dev/null` in #( -+ *the\ am__doit\ target*) -+ am__include=.include -+ am__quote="\"" -+ _am_result=BSD -+ ;; -+ esac -+fi -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -+$as_echo "$_am_result" >&6; } -+rm -f confinc confmf -+ -+# Check whether --enable-dependency-tracking was given. -+if test "${enable_dependency_tracking+set}" = set; then : -+ enableval=$enable_dependency_tracking; -+fi -+ -+if test "x$enable_dependency_tracking" != xno; then -+ am_depcomp="$ac_aux_dir/depcomp" -+ AMDEPBACKSLASH='\' -+ am__nodep='_no' -+fi -+ if test "x$enable_dependency_tracking" != xno; then -+ AMDEP_TRUE= -+ AMDEP_FALSE='#' -+else -+ AMDEP_TRUE='#' -+ AMDEP_FALSE= -+fi -+ -+ -+ -+depcc="$CC" am_compiler_list= -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -+$as_echo_n "checking dependency style of $depcc... " >&6; } -+if ${am_cv_CC_dependencies_compiler_type+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then -+ # We make a subdir and do the tests there. Otherwise we can end up -+ # making bogus files that we don't know about and never remove. For -+ # instance it was reported that on HP-UX the gcc test will end up -+ # making a dummy file named `D' -- because `-MD' means `put the output -+ # in D'. -+ rm -rf conftest.dir -+ mkdir conftest.dir -+ # Copy depcomp to subdir because otherwise we won't find it if we're -+ # using a relative directory. -+ cp "$am_depcomp" conftest.dir -+ cd conftest.dir -+ # We will build objects and dependencies in a subdirectory because -+ # it helps to detect inapplicable dependency modes. For instance -+ # both Tru64's cc and ICC support -MD to output dependencies as a -+ # side effect of compilation, but ICC will put the dependencies in -+ # the current directory while Tru64 will put them in the object -+ # directory. -+ mkdir sub -+ -+ am_cv_CC_dependencies_compiler_type=none -+ if test "$am_compiler_list" = ""; then -+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` -+ fi -+ am__universal=false -+ case " $depcc " in #( -+ *\ -arch\ *\ -arch\ *) am__universal=true ;; -+ esac -+ -+ for depmode in $am_compiler_list; do -+ # Setup a source with many dependencies, because some compilers -+ # like to wrap large dependency lists on column 80 (with \), and -+ # we should not choose a depcomp mode which is confused by this. -+ # -+ # We need to recreate these files for each test, as the compiler may -+ # overwrite some of them when testing with obscure command lines. -+ # This happens at least with the AIX C compiler. -+ : > sub/conftest.c -+ for i in 1 2 3 4 5 6; do -+ echo '#include "conftst'$i'.h"' >> sub/conftest.c -+ # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with -+ # Solaris 8's {/usr,}/bin/sh. -+ touch sub/conftst$i.h -+ done -+ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf -+ -+ # We check with `-c' and `-o' for the sake of the "dashmstdout" -+ # mode. It turns out that the SunPro C++ compiler does not properly -+ # handle `-M -o', and we need to detect this. Also, some Intel -+ # versions had trouble with output in subdirs -+ am__obj=sub/conftest.${OBJEXT-o} -+ am__minus_obj="-o $am__obj" -+ case $depmode in -+ gcc) -+ # This depmode causes a compiler race in universal mode. -+ test "$am__universal" = false || continue -+ ;; -+ nosideeffect) -+ # after this tag, mechanisms are not by side-effect, so they'll -+ # only be used when explicitly requested -+ if test "x$enable_dependency_tracking" = xyes; then -+ continue -+ else -+ break -+ fi -+ ;; -+ msvc7 | msvc7msys | msvisualcpp | msvcmsys) -+ # This compiler won't grok `-c -o', but also, the minuso test has -+ # not run yet. These depmodes are late enough in the game, and -+ # so weak that their functioning should not be impacted. -+ am__obj=conftest.${OBJEXT-o} -+ am__minus_obj= -+ ;; -+ none) break ;; -+ esac -+ if depmode=$depmode \ -+ source=sub/conftest.c object=$am__obj \ -+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ -+ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ -+ >/dev/null 2>conftest.err && -+ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && -+ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && -+ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && -+ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then -+ # icc doesn't choke on unknown options, it will just issue warnings -+ # or remarks (even with -Werror). So we grep stderr for any message -+ # that says an option was ignored or not supported. -+ # When given -MP, icc 7.0 and 7.1 complain thusly: -+ # icc: Command line warning: ignoring option '-M'; no argument required -+ # The diagnosis changed in icc 8.0: -+ # icc: Command line remark: option '-MP' not supported -+ if (grep 'ignoring option' conftest.err || -+ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else -+ am_cv_CC_dependencies_compiler_type=$depmode -+ break -+ fi -+ fi -+ done -+ -+ cd .. -+ rm -rf conftest.dir -+else -+ am_cv_CC_dependencies_compiler_type=none -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -+$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -+CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type -+ -+ if -+ test "x$enable_dependency_tracking" != xno \ -+ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then -+ am__fastdepCC_TRUE= -+ am__fastdepCC_FALSE='#' -+else -+ am__fastdepCC_TRUE='#' -+ am__fastdepCC_FALSE= -+fi -+ -+ -+ if test x$GCC = 'xyes'; then -+ GCC_TRUE= -+ GCC_FALSE='#' -+else -+ GCC_TRUE='#' -+ GCC_FALSE= -+fi -+ -+ -+case `pwd` in -+ *\ * | *\ *) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -+$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -+esac -+ -+ -+ -+macro_version='2.4.2' -+macro_revision='1.3337' -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ltmain="$ac_aux_dir/ltmain.sh" -+ -+# Make sure we can run config.sub. -+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || -+ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -+$as_echo_n "checking build system type... " >&6; } -+if ${ac_cv_build+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_build_alias=$build_alias -+test "x$ac_build_alias" = x && -+ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -+test "x$ac_build_alias" = x && -+ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || -+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -+$as_echo "$ac_cv_build" >&6; } -+case $ac_cv_build in -+*-*-*) ;; -+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -+esac -+build=$ac_cv_build -+ac_save_IFS=$IFS; IFS='-' -+set x $ac_cv_build -+shift -+build_cpu=$1 -+build_vendor=$2 -+shift; shift -+# Remember, the first character of IFS is used to create $*, -+# except with old shells: -+build_os=$* -+IFS=$ac_save_IFS -+case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -+$as_echo_n "checking host system type... " >&6; } -+if ${ac_cv_host+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test "x$host_alias" = x; then -+ ac_cv_host=$ac_cv_build -+else -+ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || -+ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -+$as_echo "$ac_cv_host" >&6; } -+case $ac_cv_host in -+*-*-*) ;; -+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -+esac -+host=$ac_cv_host -+ac_save_IFS=$IFS; IFS='-' -+set x $ac_cv_host -+shift -+host_cpu=$1 -+host_vendor=$2 -+shift; shift -+# Remember, the first character of IFS is used to create $*, -+# except with old shells: -+host_os=$* -+IFS=$ac_save_IFS -+case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac -+ -+ -+# Backslashify metacharacters that are still active within -+# double-quoted strings. -+sed_quote_subst='s/\(["`$\\]\)/\\\1/g' -+ -+# Same as above, but do not quote variable references. -+double_quote_subst='s/\(["`\\]\)/\\\1/g' -+ -+# Sed substitution to delay expansion of an escaped shell variable in a -+# double_quote_subst'ed string. -+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -+ -+# Sed substitution to delay expansion of an escaped single quote. -+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' -+ -+# Sed substitution to avoid accidental globbing in evaled expressions -+no_glob_subst='s/\*/\\\*/g' -+ -+ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -+$as_echo_n "checking how to print strings... " >&6; } -+# Test print first, because it will be a builtin if present. -+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ -+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then -+ ECHO='print -r --' -+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then -+ ECHO='printf %s\n' -+else -+ # Use this function as a fallback that always works. -+ func_fallback_echo () -+ { -+ eval 'cat <<_LTECHO_EOF -+$1 -+_LTECHO_EOF' -+ } -+ ECHO='func_fallback_echo' -+fi -+ -+# func_echo_all arg... -+# Invoke $ECHO with all args, space-separated. -+func_echo_all () -+{ -+ $ECHO "" -+} -+ -+case "$ECHO" in -+ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -+$as_echo "printf" >&6; } ;; -+ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -+$as_echo "print -r" >&6; } ;; -+ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -+$as_echo "cat" >&6; } ;; -+esac -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -+$as_echo_n "checking for a sed that does not truncate output... " >&6; } -+if ${ac_cv_path_SED+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ -+ for ac_i in 1 2 3 4 5 6 7; do -+ ac_script="$ac_script$as_nl$ac_script" -+ done -+ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed -+ { ac_script=; unset ac_script;} -+ if test -z "$SED"; then -+ ac_path_SED_found=false -+ # Loop through the user's path and test for each of PROGNAME-LIST -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_prog in sed gsed; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" -+ { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -+# Check for GNU ac_path_SED and select it if it is found. -+ # Check for GNU $ac_path_SED -+case `"$ac_path_SED" --version 2>&1` in -+*GNU*) -+ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -+*) -+ ac_count=0 -+ $as_echo_n 0123456789 >"conftest.in" -+ while : -+ do -+ cat "conftest.in" "conftest.in" >"conftest.tmp" -+ mv "conftest.tmp" "conftest.in" -+ cp "conftest.in" "conftest.nl" -+ $as_echo '' >> "conftest.nl" -+ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break -+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -+ as_fn_arith $ac_count + 1 && ac_count=$as_val -+ if test $ac_count -gt ${ac_path_SED_max-0}; then -+ # Best one so far, save it but keep looking for a better one -+ ac_cv_path_SED="$ac_path_SED" -+ ac_path_SED_max=$ac_count -+ fi -+ # 10*(2^10) chars as input seems more than enough -+ test $ac_count -gt 10 && break -+ done -+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -+esac -+ -+ $ac_path_SED_found && break 3 -+ done -+ done -+ done -+IFS=$as_save_IFS -+ if test -z "$ac_cv_path_SED"; then -+ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 -+ fi -+else -+ ac_cv_path_SED=$SED -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -+$as_echo "$ac_cv_path_SED" >&6; } -+ SED="$ac_cv_path_SED" -+ rm -f conftest.sed -+ -+test -z "$SED" && SED=sed -+Xsed="$SED -e 1s/^X//" -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -+$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -+if ${ac_cv_path_GREP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -z "$GREP"; then -+ ac_path_GREP_found=false -+ # Loop through the user's path and test for each of PROGNAME-LIST -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_prog in grep ggrep; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" -+ { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -+# Check for GNU ac_path_GREP and select it if it is found. -+ # Check for GNU $ac_path_GREP -+case `"$ac_path_GREP" --version 2>&1` in -+*GNU*) -+ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -+*) -+ ac_count=0 -+ $as_echo_n 0123456789 >"conftest.in" -+ while : -+ do -+ cat "conftest.in" "conftest.in" >"conftest.tmp" -+ mv "conftest.tmp" "conftest.in" -+ cp "conftest.in" "conftest.nl" -+ $as_echo 'GREP' >> "conftest.nl" -+ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break -+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -+ as_fn_arith $ac_count + 1 && ac_count=$as_val -+ if test $ac_count -gt ${ac_path_GREP_max-0}; then -+ # Best one so far, save it but keep looking for a better one -+ ac_cv_path_GREP="$ac_path_GREP" -+ ac_path_GREP_max=$ac_count -+ fi -+ # 10*(2^10) chars as input seems more than enough -+ test $ac_count -gt 10 && break -+ done -+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -+esac -+ -+ $ac_path_GREP_found && break 3 -+ done -+ done -+ done -+IFS=$as_save_IFS -+ if test -z "$ac_cv_path_GREP"; then -+ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ fi -+else -+ ac_cv_path_GREP=$GREP -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -+$as_echo "$ac_cv_path_GREP" >&6; } -+ GREP="$ac_cv_path_GREP" -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -+$as_echo_n "checking for egrep... " >&6; } -+if ${ac_cv_path_EGREP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 -+ then ac_cv_path_EGREP="$GREP -E" -+ else -+ if test -z "$EGREP"; then -+ ac_path_EGREP_found=false -+ # Loop through the user's path and test for each of PROGNAME-LIST -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_prog in egrep; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" -+ { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -+# Check for GNU ac_path_EGREP and select it if it is found. -+ # Check for GNU $ac_path_EGREP -+case `"$ac_path_EGREP" --version 2>&1` in -+*GNU*) -+ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -+*) -+ ac_count=0 -+ $as_echo_n 0123456789 >"conftest.in" -+ while : -+ do -+ cat "conftest.in" "conftest.in" >"conftest.tmp" -+ mv "conftest.tmp" "conftest.in" -+ cp "conftest.in" "conftest.nl" -+ $as_echo 'EGREP' >> "conftest.nl" -+ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break -+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -+ as_fn_arith $ac_count + 1 && ac_count=$as_val -+ if test $ac_count -gt ${ac_path_EGREP_max-0}; then -+ # Best one so far, save it but keep looking for a better one -+ ac_cv_path_EGREP="$ac_path_EGREP" -+ ac_path_EGREP_max=$ac_count -+ fi -+ # 10*(2^10) chars as input seems more than enough -+ test $ac_count -gt 10 && break -+ done -+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -+esac -+ -+ $ac_path_EGREP_found && break 3 -+ done -+ done -+ done -+IFS=$as_save_IFS -+ if test -z "$ac_cv_path_EGREP"; then -+ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ fi -+else -+ ac_cv_path_EGREP=$EGREP -+fi -+ -+ fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -+$as_echo "$ac_cv_path_EGREP" >&6; } -+ EGREP="$ac_cv_path_EGREP" -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -+$as_echo_n "checking for fgrep... " >&6; } -+if ${ac_cv_path_FGREP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 -+ then ac_cv_path_FGREP="$GREP -F" -+ else -+ if test -z "$FGREP"; then -+ ac_path_FGREP_found=false -+ # Loop through the user's path and test for each of PROGNAME-LIST -+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_prog in fgrep; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" -+ { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -+# Check for GNU ac_path_FGREP and select it if it is found. -+ # Check for GNU $ac_path_FGREP -+case `"$ac_path_FGREP" --version 2>&1` in -+*GNU*) -+ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -+*) -+ ac_count=0 -+ $as_echo_n 0123456789 >"conftest.in" -+ while : -+ do -+ cat "conftest.in" "conftest.in" >"conftest.tmp" -+ mv "conftest.tmp" "conftest.in" -+ cp "conftest.in" "conftest.nl" -+ $as_echo 'FGREP' >> "conftest.nl" -+ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break -+ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break -+ as_fn_arith $ac_count + 1 && ac_count=$as_val -+ if test $ac_count -gt ${ac_path_FGREP_max-0}; then -+ # Best one so far, save it but keep looking for a better one -+ ac_cv_path_FGREP="$ac_path_FGREP" -+ ac_path_FGREP_max=$ac_count -+ fi -+ # 10*(2^10) chars as input seems more than enough -+ test $ac_count -gt 10 && break -+ done -+ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -+esac -+ -+ $ac_path_FGREP_found && break 3 -+ done -+ done -+ done -+IFS=$as_save_IFS -+ if test -z "$ac_cv_path_FGREP"; then -+ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 -+ fi -+else -+ ac_cv_path_FGREP=$FGREP -+fi -+ -+ fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -+$as_echo "$ac_cv_path_FGREP" >&6; } -+ FGREP="$ac_cv_path_FGREP" -+ -+ -+test -z "$GREP" && GREP=grep -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+# Check whether --with-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. -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -+$as_echo_n "checking for ld used by $CC... " >&6; } -+ case $host in -+ *-*-mingw*) -+ # gcc leaves a trailing carriage return which upsets mingw -+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; -+ *) -+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; -+ esac -+ case $ac_prog in -+ # Accept absolute paths. -+ [\\/]* | ?:[\\/]*) -+ re_direlt='/[^/][^/]*/\.\./' -+ # Canonicalize the pathname of ld -+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` -+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do -+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` -+ done -+ test -z "$LD" && LD="$ac_prog" -+ ;; -+ "") -+ # If it fails, then pretend we aren't using GCC. -+ ac_prog=ld -+ ;; -+ *) -+ # If it is relative, then search for the first ld in PATH. -+ with_gnu_ld=unknown -+ ;; -+ esac -+elif test "$with_gnu_ld" = yes; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -+$as_echo_n "checking for GNU ld... " >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -+$as_echo_n "checking for non-GNU ld... " >&6; } -+fi -+if ${lt_cv_path_LD+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -z "$LD"; then -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -+ lt_cv_path_LD="$ac_dir/$ac_prog" -+ # Check to see if the program is GNU ld. I'd rather use --version, -+ # but apparently some variants of GNU ld only accept -v. -+ # Break only if it was the GNU/non-GNU ld that we prefer. -+ case `"$lt_cv_path_LD" -v 2>&1 &5 -+$as_echo "$LD" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -+$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -+if ${lt_cv_prog_gnu_ld+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ # I'd rather use --version here, but apparently some GNU lds only accept -v. -+case `$LD -v 2>&1 &5 -+$as_echo "$lt_cv_prog_gnu_ld" >&6; } -+with_gnu_ld=$lt_cv_prog_gnu_ld -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -+$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -+if ${lt_cv_path_NM+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$NM"; then -+ # Let the user override the test. -+ lt_cv_path_NM="$NM" -+else -+ lt_nm_to_check="${ac_tool_prefix}nm" -+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then -+ lt_nm_to_check="$lt_nm_to_check nm" -+ fi -+ for lt_tmp_nm in $lt_nm_to_check; do -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ tmp_nm="$ac_dir/$lt_tmp_nm" -+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then -+ # Check to see if the nm accepts a BSD-compat flag. -+ # Adding the `sed 1q' prevents false positives on HP-UX, which says: -+ # nm: unknown option "B" ignored -+ # Tru64's nm complains that /dev/null is an invalid object file -+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in -+ */dev/null* | *'Invalid file or object type'*) -+ lt_cv_path_NM="$tmp_nm -B" -+ break -+ ;; -+ *) -+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in -+ */dev/null*) -+ lt_cv_path_NM="$tmp_nm -p" -+ break -+ ;; -+ *) -+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but -+ continue # so that we can try to find one that supports BSD flags -+ ;; -+ esac -+ ;; -+ esac -+ fi -+ done -+ IFS="$lt_save_ifs" -+ done -+ : ${lt_cv_path_NM=no} -+fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -+$as_echo "$lt_cv_path_NM" >&6; } -+if test "$lt_cv_path_NM" != "no"; then -+ NM="$lt_cv_path_NM" -+else -+ # Didn't find any BSD compatible name lister, look for dumpbin. -+ if test -n "$DUMPBIN"; then : -+ # Let the user override the test. -+ else -+ if test -n "$ac_tool_prefix"; then -+ for ac_prog in dumpbin "link -dump" -+ do -+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -+set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_DUMPBIN+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$DUMPBIN"; then -+ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+DUMPBIN=$ac_cv_prog_DUMPBIN -+if test -n "$DUMPBIN"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -+$as_echo "$DUMPBIN" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$DUMPBIN" && break -+ done -+fi -+if test -z "$DUMPBIN"; then -+ ac_ct_DUMPBIN=$DUMPBIN -+ for ac_prog in dumpbin "link -dump" -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_DUMPBIN"; then -+ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -+if test -n "$ac_ct_DUMPBIN"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -+$as_echo "$ac_ct_DUMPBIN" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$ac_ct_DUMPBIN" && break -+done -+ -+ if test "x$ac_ct_DUMPBIN" = x; then -+ DUMPBIN=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ DUMPBIN=$ac_ct_DUMPBIN -+ fi -+fi -+ -+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in -+ *COFF*) -+ DUMPBIN="$DUMPBIN -symbols" -+ ;; -+ *) -+ DUMPBIN=: -+ ;; -+ esac -+ fi -+ -+ if test "$DUMPBIN" != ":"; then -+ NM="$DUMPBIN" -+ fi -+fi -+test -z "$NM" && NM=nm -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -+$as_echo_n "checking the name lister ($NM) interface... " >&6; } -+if ${lt_cv_nm_interface+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_nm_interface="BSD nm" -+ echo "int some_variable = 0;" > conftest.$ac_ext -+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) -+ (eval "$ac_compile" 2>conftest.err) -+ cat conftest.err >&5 -+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) -+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) -+ cat conftest.err >&5 -+ (eval echo "\"\$as_me:$LINENO: output\"" >&5) -+ cat conftest.out >&5 -+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then -+ lt_cv_nm_interface="MS dumpbin" -+ fi -+ rm -f conftest* -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -+$as_echo "$lt_cv_nm_interface" >&6; } -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -+$as_echo_n "checking whether ln -s works... " >&6; } -+LN_S=$as_ln_s -+if test "$LN_S" = "ln -s"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -+$as_echo "no, using $LN_S" >&6; } -+fi -+ -+# find the maximum length of command line arguments -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -+$as_echo_n "checking the maximum length of command line arguments... " >&6; } -+if ${lt_cv_sys_max_cmd_len+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ i=0 -+ teststring="ABCD" -+ -+ case $build_os in -+ msdosdjgpp*) -+ # On DJGPP, this test can blow up pretty badly due to problems in libc -+ # (any single argument exceeding 2000 bytes causes a buffer overrun -+ # during glob expansion). Even if it were fixed, the result of this -+ # check would be larger than it should be. -+ lt_cv_sys_max_cmd_len=12288; # 12K is about right -+ ;; -+ -+ gnu*) -+ # Under GNU Hurd, this test is not required because there is -+ # no limit to the length of command line arguments. -+ # Libtool will interpret -1 as no limit whatsoever -+ lt_cv_sys_max_cmd_len=-1; -+ ;; -+ -+ cygwin* | mingw* | cegcc*) -+ # On Win9x/ME, this test blows up -- it succeeds, but takes -+ # about 5 minutes as the teststring grows exponentially. -+ # Worse, since 9x/ME are not pre-emptively multitasking, -+ # you end up with a "frozen" computer, even though with patience -+ # the test eventually succeeds (with a max line length of 256k). -+ # Instead, let's just punt: use the minimum linelength reported by -+ # all of the supported platforms: 8192 (on NT/2K/XP). -+ lt_cv_sys_max_cmd_len=8192; -+ ;; -+ -+ mint*) -+ # On MiNT this can take a long time and run out of memory. -+ lt_cv_sys_max_cmd_len=8192; -+ ;; -+ -+ amigaos*) -+ # On AmigaOS with pdksh, this test takes hours, literally. -+ # So we just punt and use a minimum line length of 8192. -+ lt_cv_sys_max_cmd_len=8192; -+ ;; -+ -+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) -+ # This has been around since 386BSD, at least. Likely further. -+ if test -x /sbin/sysctl; then -+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` -+ elif test -x /usr/sbin/sysctl; then -+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` -+ else -+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs -+ fi -+ # And add a safety zone -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` -+ ;; -+ -+ interix*) -+ # We know the value 262144 and hardcode it with a safety zone (like BSD) -+ lt_cv_sys_max_cmd_len=196608 -+ ;; -+ -+ os2*) -+ # The test takes a long time on OS/2. -+ lt_cv_sys_max_cmd_len=8192 -+ ;; -+ -+ osf*) -+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure -+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not -+ # nice to cause kernel panics so lets avoid the loop below. -+ # First set a reasonable default. -+ lt_cv_sys_max_cmd_len=16384 -+ # -+ if test -x /sbin/sysconfig; then -+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in -+ *1*) lt_cv_sys_max_cmd_len=-1 ;; -+ esac -+ fi -+ ;; -+ sco3.2v5*) -+ lt_cv_sys_max_cmd_len=102400 -+ ;; -+ sysv5* | sco5v6* | sysv4.2uw2*) -+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` -+ if test -n "$kargmax"; then -+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` -+ else -+ lt_cv_sys_max_cmd_len=32768 -+ fi -+ ;; -+ *) -+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` -+ if test -n "$lt_cv_sys_max_cmd_len"; then -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` -+ else -+ # Make teststring a little bigger before we do anything with it. -+ # a 1K string should be a reasonable start. -+ for i in 1 2 3 4 5 6 7 8 ; do -+ teststring=$teststring$teststring -+ done -+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} -+ # If test is not a shell built-in, we'll probably end up computing a -+ # maximum length that is only half of the actual maximum length, but -+ # we can't tell. -+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ -+ = "X$teststring$teststring"; } >/dev/null 2>&1 && -+ test $i != 17 # 1/2 MB should be enough -+ do -+ i=`expr $i + 1` -+ teststring=$teststring$teststring -+ done -+ # Only check the string length outside the loop. -+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` -+ teststring= -+ # Add a significant safety factor because C++ compilers can tack on -+ # massive amounts of additional arguments before passing them to the -+ # linker. It appears as though 1/2 is a usable value. -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` -+ fi -+ ;; -+ esac -+ -+fi -+ -+if test -n $lt_cv_sys_max_cmd_len ; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -+$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -+$as_echo "none" >&6; } -+fi -+max_cmd_len=$lt_cv_sys_max_cmd_len -+ -+ -+ -+ -+ -+ -+: ${CP="cp -f"} -+: ${MV="mv -f"} -+: ${RM="rm -f"} -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -+$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -+# Try some XSI features -+xsi_shell=no -+( _lt_dummy="a/b/c" -+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ -+ = c,a/b,b/c, \ -+ && eval 'test $(( 1 + 1 )) -eq 2 \ -+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ -+ && xsi_shell=yes -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -+$as_echo "$xsi_shell" >&6; } -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -+$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -+lt_shell_append=no -+( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ -+ >/dev/null 2>&1 \ -+ && lt_shell_append=yes -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -+$as_echo "$lt_shell_append" >&6; } -+ -+ -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ lt_unset=unset -+else -+ lt_unset=false -+fi -+ -+ -+ -+ -+ -+# test EBCDIC or ASCII -+case `echo X|tr X '\101'` in -+ A) # ASCII based system -+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr -+ lt_SP2NL='tr \040 \012' -+ lt_NL2SP='tr \015\012 \040\040' -+ ;; -+ *) # EBCDIC based system -+ lt_SP2NL='tr \100 \n' -+ lt_NL2SP='tr \r\n \100\100' -+ ;; -+esac -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -+$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -+if ${lt_cv_to_host_file_cmd+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ case $host in -+ *-*-mingw* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 -+ ;; -+ *-*-cygwin* ) -+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 -+ ;; -+ * ) # otherwise, assume *nix -+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 -+ ;; -+ esac -+ ;; -+ *-*-cygwin* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin -+ ;; -+ *-*-cygwin* ) -+ lt_cv_to_host_file_cmd=func_convert_file_noop -+ ;; -+ * ) # otherwise, assume *nix -+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin -+ ;; -+ esac -+ ;; -+ * ) # unhandled hosts (and "normal" native builds) -+ lt_cv_to_host_file_cmd=func_convert_file_noop -+ ;; -+esac -+ -+fi -+ -+to_host_file_cmd=$lt_cv_to_host_file_cmd -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -+$as_echo "$lt_cv_to_host_file_cmd" >&6; } -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -+$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -+if ${lt_cv_to_tool_file_cmd+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ #assume ordinary cross tools, or native build. -+lt_cv_to_tool_file_cmd=func_convert_file_noop -+case $host in -+ *-*-mingw* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 -+ ;; -+ esac -+ ;; -+esac -+ -+fi -+ -+to_tool_file_cmd=$lt_cv_to_tool_file_cmd -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -+$as_echo "$lt_cv_to_tool_file_cmd" >&6; } -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -+$as_echo_n "checking for $LD option to reload object files... " >&6; } -+if ${lt_cv_ld_reload_flag+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_ld_reload_flag='-r' -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -+$as_echo "$lt_cv_ld_reload_flag" >&6; } -+reload_flag=$lt_cv_ld_reload_flag -+case $reload_flag in -+"" | " "*) ;; -+*) reload_flag=" $reload_flag" ;; -+esac -+reload_cmds='$LD$reload_flag -o $output$reload_objs' -+case $host_os in -+ cygwin* | mingw* | pw32* | cegcc*) -+ if test "$GCC" != yes; then -+ reload_cmds=false -+ fi -+ ;; -+ darwin*) -+ if test "$GCC" = yes; then -+ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' -+ else -+ reload_cmds='$LD$reload_flag -o $output$reload_objs' -+ fi -+ ;; -+esac -+ -+ -+ -+ -+ -+ -+ -+ -+ -+if test -n "$ac_tool_prefix"; then -+ # 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 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_OBJDUMP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$OBJDUMP"; then -+ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+OBJDUMP=$ac_cv_prog_OBJDUMP -+if test -n "$OBJDUMP"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -+$as_echo "$OBJDUMP" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_OBJDUMP"; then -+ ac_ct_OBJDUMP=$OBJDUMP -+ # Extract the first word of "objdump", so it can be a program name with args. -+set dummy objdump; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_OBJDUMP"; then -+ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_OBJDUMP="objdump" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -+if test -n "$ac_ct_OBJDUMP"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -+$as_echo "$ac_ct_OBJDUMP" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_OBJDUMP" = x; then -+ OBJDUMP="false" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ OBJDUMP=$ac_ct_OBJDUMP -+ fi -+else -+ OBJDUMP="$ac_cv_prog_OBJDUMP" -+fi -+ -+test -z "$OBJDUMP" && OBJDUMP=objdump -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -+$as_echo_n "checking how to recognize dependent libraries... " >&6; } -+if ${lt_cv_deplibs_check_method+:} false; then : -+ $as_echo_n "(cached) " >&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 extended regex. -+# If you have `file' or equivalent on your system and you're not sure -+# whether `pass_all' will *always* work, you probably want this one. -+ -+case $host_os in -+aix[4-9]*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+beos*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+bsdi[45]*) -+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' -+ lt_cv_file_magic_cmd='/usr/bin/file -L' -+ lt_cv_file_magic_test_file=/shlib/libc.so -+ ;; -+ -+cygwin*) -+ # func_win32_libid is a shell function defined in ltmain.sh -+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' -+ lt_cv_file_magic_cmd='func_win32_libid' -+ ;; -+ -+mingw* | pw32*) -+ # Base MSYS/MinGW do not provide the 'file' command needed by -+ # func_win32_libid shell function, so use a weaker test based on 'objdump', -+ # unless we find 'file', for example because we are cross-compiling. -+ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. -+ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then -+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' -+ lt_cv_file_magic_cmd='func_win32_libid' -+ else -+ # Keep this pattern in sync with the one in func_win32_libid. -+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' -+ lt_cv_file_magic_cmd='$OBJDUMP -f' -+ fi -+ ;; -+ -+cegcc*) -+ # use the weaker test based on 'objdump'. See mingw*. -+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' -+ lt_cv_file_magic_cmd='$OBJDUMP -f' -+ ;; -+ -+darwin* | rhapsody*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+freebsd* | dragonfly*) -+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then -+ case $host_cpu in -+ i*86 ) -+ # Not sure whether the presence of OpenBSD here was a mistake. -+ # Let's accept both of them until this is cleared up. -+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' -+ lt_cv_file_magic_cmd=/usr/bin/file -+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` -+ ;; -+ esac -+ else -+ lt_cv_deplibs_check_method=pass_all -+ fi -+ ;; -+ -+gnu*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+haiku*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+hpux10.20* | hpux11*) -+ lt_cv_file_magic_cmd=/usr/bin/file -+ case $host_cpu in -+ ia64*) -+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' -+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so -+ ;; -+ hppa*64*) -+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' -+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl -+ ;; -+ *) -+ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' -+ lt_cv_file_magic_test_file=/usr/lib/libc.sl -+ ;; -+ esac -+ ;; -+ -+interix[3-9]*) -+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' -+ ;; -+ -+irix5* | irix6* | nonstopux*) -+ case $LD in -+ *-32|*"-32 ") libmagic=32-bit;; -+ *-n32|*"-n32 ") libmagic=N32;; -+ *-64|*"-64 ") libmagic=64-bit;; -+ *) libmagic=never-match;; -+ esac -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+# This must be glibc/ELF. -+linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+netbsd* | netbsdelf*-gnu) -+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' -+ else -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' -+ fi -+ ;; -+ -+newos6*) -+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' -+ lt_cv_file_magic_cmd=/usr/bin/file -+ lt_cv_file_magic_test_file=/usr/lib/libnls.so -+ ;; -+ -+*nto* | *qnx*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+openbsd*) -+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' -+ else -+ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' -+ fi -+ ;; -+ -+osf3* | osf4* | osf5*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+rdos*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+solaris*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+sysv4 | sysv4.3*) -+ case $host_vendor in -+ motorola) -+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' -+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` -+ ;; -+ ncr) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ sequent) -+ lt_cv_file_magic_cmd='/bin/file' -+ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' -+ ;; -+ sni) -+ lt_cv_file_magic_cmd='/bin/file' -+ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" -+ lt_cv_file_magic_test_file=/lib/libc.so -+ ;; -+ siemens) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ pc) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ esac -+ ;; -+ -+tpf*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+esac -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -+$as_echo "$lt_cv_deplibs_check_method" >&6; } -+ -+file_magic_glob= -+want_nocaseglob=no -+if test "$build" = "$host"; then -+ case $host_os in -+ mingw* | pw32*) -+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then -+ want_nocaseglob=yes -+ else -+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` -+ fi -+ ;; -+ esac -+fi -+ -+file_magic_cmd=$lt_cv_file_magic_cmd -+deplibs_check_method=$lt_cv_deplibs_check_method -+test -z "$deplibs_check_method" && deplibs_check_method=unknown -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+if test -n "$ac_tool_prefix"; then -+ # 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 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_DLLTOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$DLLTOOL"; then -+ ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+DLLTOOL=$ac_cv_prog_DLLTOOL -+if test -n "$DLLTOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -+$as_echo "$DLLTOOL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_DLLTOOL"; then -+ ac_ct_DLLTOOL=$DLLTOOL -+ # Extract the first word of "dlltool", so it can be a program name with args. -+set dummy dlltool; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_DLLTOOL"; then -+ ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_DLLTOOL="dlltool" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -+if test -n "$ac_ct_DLLTOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -+$as_echo "$ac_ct_DLLTOOL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_DLLTOOL" = x; then -+ DLLTOOL="false" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ DLLTOOL=$ac_ct_DLLTOOL -+ fi -+else -+ DLLTOOL="$ac_cv_prog_DLLTOOL" -+fi -+ -+test -z "$DLLTOOL" && DLLTOOL=dlltool -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -+$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -+if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_sharedlib_from_linklib_cmd='unknown' -+ -+case $host_os in -+cygwin* | mingw* | pw32* | cegcc*) -+ # two different shell functions defined in ltmain.sh -+ # decide which to use based on capabilities of $DLLTOOL -+ case `$DLLTOOL --help 2>&1` in -+ *--identify-strict*) -+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib -+ ;; -+ *) -+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback -+ ;; -+ esac -+ ;; -+*) -+ # fallback: assume linklib IS sharedlib -+ lt_cv_sharedlib_from_linklib_cmd="$ECHO" -+ ;; -+esac -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -+$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO -+ -+ -+ -+ -+ -+ -+ -+ -+if test -n "$ac_tool_prefix"; then -+ for ac_prog in ar -+ do -+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -+set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_AR+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$AR"; then -+ ac_cv_prog_AR="$AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_AR="$ac_tool_prefix$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+AR=$ac_cv_prog_AR -+if test -n "$AR"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -+$as_echo "$AR" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$AR" && break -+ done -+fi -+if test -z "$AR"; then -+ ac_ct_AR=$AR -+ for ac_prog in ar -+do -+ # Extract the first word of "$ac_prog", so it can be a program name with args. -+set dummy $ac_prog; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_AR+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_AR"; then -+ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_AR="$ac_prog" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_AR=$ac_cv_prog_ac_ct_AR -+if test -n "$ac_ct_AR"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -+$as_echo "$ac_ct_AR" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ test -n "$ac_ct_AR" && break -+done -+ -+ if test "x$ac_ct_AR" = x; then -+ AR="false" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ AR=$ac_ct_AR -+ fi -+fi -+ -+: ${AR=ar} -+: ${AR_FLAGS=cru} -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -+$as_echo_n "checking for archiver @FILE support... " >&6; } -+if ${lt_cv_ar_at_file+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_ar_at_file=no -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ echo conftest.$ac_objext > conftest.lst -+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 -+ (eval $lt_ar_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ if test "$ac_status" -eq 0; then -+ # Ensure the archiver fails upon bogus file names. -+ rm -f conftest.$ac_objext libconftest.a -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 -+ (eval $lt_ar_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ if test "$ac_status" -ne 0; then -+ lt_cv_ar_at_file=@ -+ fi -+ fi -+ rm -f conftest.* libconftest.a -+ -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -+$as_echo "$lt_cv_ar_at_file" >&6; } -+ -+if test "x$lt_cv_ar_at_file" = xno; then -+ archiver_list_spec= -+else -+ archiver_list_spec=$lt_cv_ar_at_file -+fi -+ -+ -+ -+ -+ -+ -+ -+if test -n "$ac_tool_prefix"; then -+ # 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 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_STRIP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$STRIP"; then -+ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_STRIP="${ac_tool_prefix}strip" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+STRIP=$ac_cv_prog_STRIP -+if test -n "$STRIP"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -+$as_echo "$STRIP" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_STRIP"; then -+ ac_ct_STRIP=$STRIP -+ # Extract the first word of "strip", so it can be a program name with args. -+set dummy strip; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_STRIP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_STRIP"; then -+ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_STRIP="strip" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -+if test -n "$ac_ct_STRIP"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -+$as_echo "$ac_ct_STRIP" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_STRIP" = x; then -+ STRIP=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ STRIP=$ac_ct_STRIP -+ fi -+else -+ STRIP="$ac_cv_prog_STRIP" -+fi -+ -+test -z "$STRIP" && STRIP=: -+ -+ -+ -+ -+ -+ -+if test -n "$ac_tool_prefix"; then -+ # 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 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_RANLIB+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$RANLIB"; then -+ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+RANLIB=$ac_cv_prog_RANLIB -+if test -n "$RANLIB"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -+$as_echo "$RANLIB" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_RANLIB"; then -+ ac_ct_RANLIB=$RANLIB -+ # Extract the first word of "ranlib", so it can be a program name with args. -+set dummy ranlib; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_RANLIB"; then -+ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_RANLIB="ranlib" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -+if test -n "$ac_ct_RANLIB"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -+$as_echo "$ac_ct_RANLIB" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_RANLIB" = x; then -+ RANLIB=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ RANLIB=$ac_ct_RANLIB -+ fi -+else -+ RANLIB="$ac_cv_prog_RANLIB" -+fi -+ -+test -z "$RANLIB" && RANLIB=: -+ -+ -+ -+ -+ -+ -+# Determine commands to create old-style static archives. -+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -+old_postinstall_cmds='chmod 644 $oldlib' -+old_postuninstall_cmds= -+ -+if test -n "$RANLIB"; then -+ case $host_os in -+ openbsd*) -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" -+ ;; -+ *) -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" -+ ;; -+ esac -+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -+fi -+ -+case $host_os in -+ darwin*) -+ lock_old_archive_extraction=yes ;; -+ *) -+ lock_old_archive_extraction=no ;; -+esac -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+# If no C compiler was specified, use CC. -+LTCC=${LTCC-"$CC"} -+ -+# If no C compiler flags were specified, use CFLAGS. -+LTCFLAGS=${LTCFLAGS-"$CFLAGS"} -+ -+# Allow CC to be a program name with arguments. -+compiler=$CC -+ -+ -+# Check for command to grab the raw symbol name followed by C symbol from nm. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -+$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -+if ${lt_cv_sys_global_symbol_pipe+:} false; then : -+ $as_echo_n "(cached) " >&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]*\)' -+ -+# Define system-specific variables. -+case $host_os in -+aix*) -+ symcode='[BCDT]' -+ ;; -+cygwin* | mingw* | pw32* | cegcc*) -+ symcode='[ABCDGISTW]' -+ ;; -+hpux*) -+ if test "$host_cpu" = ia64; then -+ symcode='[ABCDEGRST]' -+ fi -+ ;; -+irix* | nonstopux*) -+ symcode='[BCDEGRST]' -+ ;; -+osf*) -+ symcode='[BCDEGQRST]' -+ ;; -+solaris*) -+ symcode='[BDRT]' -+ ;; -+sco3.2v5*) -+ symcode='[DT]' -+ ;; -+sysv4.2uw2*) -+ symcode='[DT]' -+ ;; -+sysv5* | sco5v6* | unixware* | OpenUNIX*) -+ symcode='[ABDT]' -+ ;; -+sysv4) -+ symcode='[DFNSTU]' -+ ;; -+esac -+ -+# If we're using GNU nm, then use its standard symbol codes. -+case `$NM -V 2>&1` in -+*GNU* | *'with BFD'*) -+ symcode='[ABCDGIRSTW]' ;; -+esac -+ -+# Transform an extracted symbol line into a proper C declaration. -+# Some systems (esp. on ia64) link data and code symbols differently, -+# so use this general approach. -+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -+ -+# Transform an extracted symbol line into symbol name and symbol address -+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" -+ -+# Handle CRLF in mingw tool chain -+opt_cr= -+case $build_os in -+mingw*) -+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp -+ ;; -+esac -+ -+# Try without a prefix underscore, then with it. -+for ac_symprfx in "" "_"; do -+ -+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. -+ symxfrm="\\1 $ac_symprfx\\2 \\2" -+ -+ # Write the raw and C identifiers. -+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then -+ # Fake it for dumpbin and say T for any non-static function -+ # and D for any global variable. -+ # Also find C++ and __fastcall symbols from MSVC++, -+ # which start with @ or ?. -+ lt_cv_sys_global_symbol_pipe="$AWK '"\ -+" {last_section=section; section=\$ 3};"\ -+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -+" \$ 0!~/External *\|/{next};"\ -+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -+" {if(hide[section]) next};"\ -+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -+" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -+" ' prfx=^$ac_symprfx" -+ else -+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" -+ fi -+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" -+ -+ # Check to see that the pipe works correctly. -+ pipe_works=no -+ -+ rm -f conftest* -+ cat > conftest.$ac_ext <<_LT_EOF -+#ifdef __cplusplus -+extern "C" { -+#endif -+char nm_test_var; -+void nm_test_func(void); -+void nm_test_func(void){} -+#ifdef __cplusplus -+} -+#endif -+int main(){nm_test_var='a';nm_test_func();return(0);} -+_LT_EOF -+ -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then -+ # Now try to grab the symbols. -+ nlist=conftest.nm -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 -+ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && test -s "$nlist"; then -+ # Try sorting and uniquifying the output. -+ if sort "$nlist" | uniq > "$nlist"T; then -+ mv -f "$nlist"T "$nlist" -+ else -+ rm -f "$nlist"T -+ fi -+ -+ # Make sure that we snagged all the symbols we need. -+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then -+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then -+ cat <<_LT_EOF > conftest.$ac_ext -+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -+/* DATA imports from DLLs on WIN32 con't be const, because runtime -+ relocations are performed -- see ld's documentation on pseudo-relocs. */ -+# define LT_DLSYM_CONST -+#elif defined(__osf__) -+/* This system does not cope well with relocations in const data. */ -+# define LT_DLSYM_CONST -+#else -+# define LT_DLSYM_CONST const -+#endif -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+_LT_EOF -+ # Now generate the symbol file. -+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' -+ -+ cat <<_LT_EOF >> conftest.$ac_ext -+ -+/* The mapping between symbol names and symbols. */ -+LT_DLSYM_CONST struct { -+ const char *name; -+ void *address; -+} -+lt__PROGRAM__LTX_preloaded_symbols[] = -+{ -+ { "@PROGRAM@", (void *) 0 }, -+_LT_EOF -+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext -+ cat <<\_LT_EOF >> conftest.$ac_ext -+ {0, (void *) 0} -+}; -+ -+/* This works around a problem in FreeBSD linker */ -+#ifdef FREEBSD_WORKAROUND -+static const void *lt_preloaded_setup() { -+ return lt__PROGRAM__LTX_preloaded_symbols; -+} -+#endif -+ -+#ifdef __cplusplus -+} -+#endif -+_LT_EOF -+ # Now try linking the two files. -+ mv conftest.$ac_objext conftstm.$ac_objext -+ lt_globsym_save_LIBS=$LIBS -+ lt_globsym_save_CFLAGS=$CFLAGS -+ LIBS="conftstm.$ac_objext" -+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && test -s conftest${ac_exeext}; then -+ pipe_works=yes -+ fi -+ LIBS=$lt_globsym_save_LIBS -+ CFLAGS=$lt_globsym_save_CFLAGS -+ else -+ echo "cannot find nm_test_func in $nlist" >&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 -rf conftest* conftst* -+ -+ # Do not use the global_symbol_pipe unless it works. -+ if test "$pipe_works" = yes; then -+ break -+ else -+ lt_cv_sys_global_symbol_pipe= -+ fi -+done -+ -+fi -+ -+if test -z "$lt_cv_sys_global_symbol_pipe"; then -+ lt_cv_sys_global_symbol_to_cdecl= -+fi -+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -+$as_echo "failed" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -+$as_echo "ok" >&6; } -+fi -+ -+# Response file support. -+if test "$lt_cv_nm_interface" = "MS dumpbin"; then -+ nm_file_list_spec='@' -+elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then -+ nm_file_list_spec='@' -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -+$as_echo_n "checking for sysroot... " >&6; } -+ -+# Check whether --with-sysroot was given. -+if test "${with_sysroot+set}" = set; then : -+ withval=$with_sysroot; -+else -+ with_sysroot=no -+fi -+ -+ -+lt_sysroot= -+case ${with_sysroot} in #( -+ yes) -+ if test "$GCC" = yes; then -+ lt_sysroot=`$CC --print-sysroot 2>/dev/null` -+ fi -+ ;; #( -+ /*) -+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` -+ ;; #( -+ no|'') -+ ;; #( -+ *) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -+$as_echo "${with_sysroot}" >&6; } -+ as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 -+ ;; -+esac -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -+$as_echo "${lt_sysroot:-no}" >&6; } -+ -+ -+ -+ -+ -+# Check whether --enable-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 -+ia64-*-hpux*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then -+ case `/usr/bin/file conftest.$ac_objext` in -+ *ELF-32*) -+ HPUX_IA64_MODE="32" -+ ;; -+ *ELF-64*) -+ HPUX_IA64_MODE="64" -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+*-*-irix6*) -+ # Find out which ABI we are using. -+ echo '#line '$LINENO' "configure"' > conftest.$ac_ext -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then -+ if test "$lt_cv_prog_gnu_ld" = yes; then -+ case `/usr/bin/file conftest.$ac_objext` in -+ *32-bit*) -+ LD="${LD-ld} -melf32bsmip" -+ ;; -+ *N32*) -+ LD="${LD-ld} -melf32bmipn32" -+ ;; -+ *64-bit*) -+ LD="${LD-ld} -melf64bmip" -+ ;; -+ esac -+ else -+ case `/usr/bin/file conftest.$ac_objext` in -+ *32-bit*) -+ LD="${LD-ld} -32" -+ ;; -+ *N32*) -+ LD="${LD-ld} -n32" -+ ;; -+ *64-bit*) -+ LD="${LD-ld} -64" -+ ;; -+ esac -+ fi -+ fi -+ rm -rf conftest* -+ ;; -+ -+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -+s390*-*linux*|s390*-*tpf*|sparc*-*linux*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then -+ case `/usr/bin/file conftest.o` in -+ *32-bit*) -+ case $host in -+ x86_64-*kfreebsd*-gnu) -+ LD="${LD-ld} -m elf_i386_fbsd" -+ ;; -+ x86_64-*linux*) -+ LD="${LD-ld} -m elf_i386" -+ ;; -+ ppc64-*linux*|powerpc64-*linux*) -+ LD="${LD-ld} -m elf32ppclinux" -+ ;; -+ s390x-*linux*) -+ LD="${LD-ld} -m elf_s390" -+ ;; -+ sparc64-*linux*) -+ LD="${LD-ld} -m elf32_sparc" -+ ;; -+ esac -+ ;; -+ *64-bit*) -+ case $host in -+ x86_64-*kfreebsd*-gnu) -+ LD="${LD-ld} -m elf_x86_64_fbsd" -+ ;; -+ x86_64-*linux*) -+ LD="${LD-ld} -m elf_x86_64" -+ ;; -+ ppc*-*linux*|powerpc*-*linux*) -+ LD="${LD-ld} -m elf64ppc" -+ ;; -+ s390*-*linux*|s390*-*tpf*) -+ LD="${LD-ld} -m elf64_s390" -+ ;; -+ sparc*-*linux*) -+ LD="${LD-ld} -m elf64_sparc" -+ ;; -+ esac -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ -+*-*-sco3.2v5*) -+ # On SCO OpenServer 5, we need -belf to get full-featured binaries. -+ SAVE_CFLAGS="$CFLAGS" -+ CFLAGS="$CFLAGS -belf" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -+$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -+if ${lt_cv_cc_needs_belf+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ lt_cv_cc_needs_belf=yes -+else -+ lt_cv_cc_needs_belf=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -+$as_echo "$lt_cv_cc_needs_belf" >&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 -+ ;; -+*-*solaris*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; then -+ case `/usr/bin/file conftest.o` in -+ *64-bit*) -+ case $lt_cv_prog_gnu_ld in -+ yes*) -+ case $host in -+ i?86-*-solaris*) -+ LD="${LD-ld} -m elf_x86_64" -+ ;; -+ sparc*-*-solaris*) -+ LD="${LD-ld} -m elf64_sparc" -+ ;; -+ esac -+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available. -+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then -+ LD="${LD-ld}_sol2" -+ fi -+ ;; -+ *) -+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then -+ LD="${LD-ld} -64" -+ fi -+ ;; -+ esac -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+esac -+ -+need_locks="$enable_libtool_lock" -+ -+if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -+set dummy ${ac_tool_prefix}mt; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$MANIFEST_TOOL"; then -+ ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -+if test -n "$MANIFEST_TOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -+$as_echo "$MANIFEST_TOOL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_MANIFEST_TOOL"; then -+ ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL -+ # Extract the first word of "mt", so it can be a program name with args. -+set dummy mt; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_MANIFEST_TOOL"; then -+ ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -+if test -n "$ac_ct_MANIFEST_TOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -+$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_MANIFEST_TOOL" = x; then -+ MANIFEST_TOOL=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL -+ fi -+else -+ MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -+fi -+ -+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -+$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -+if ${lt_cv_path_mainfest_tool+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_path_mainfest_tool=no -+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 -+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out -+ cat conftest.err >&5 -+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then -+ lt_cv_path_mainfest_tool=yes -+ fi -+ rm -f conftest* -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -+$as_echo "$lt_cv_path_mainfest_tool" >&6; } -+if test "x$lt_cv_path_mainfest_tool" != xyes; then -+ MANIFEST_TOOL=: -+fi -+ -+ -+ -+ -+ -+ -+ case $host_os in -+ rhapsody* | darwin*) -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -+set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_DSYMUTIL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$DSYMUTIL"; then -+ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+DSYMUTIL=$ac_cv_prog_DSYMUTIL -+if test -n "$DSYMUTIL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -+$as_echo "$DSYMUTIL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_DSYMUTIL"; then -+ ac_ct_DSYMUTIL=$DSYMUTIL -+ # Extract the first word of "dsymutil", so it can be a program name with args. -+set dummy dsymutil; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_DSYMUTIL"; then -+ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -+if test -n "$ac_ct_DSYMUTIL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -+$as_echo "$ac_ct_DSYMUTIL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_DSYMUTIL" = x; then -+ DSYMUTIL=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ DSYMUTIL=$ac_ct_DSYMUTIL -+ fi -+else -+ DSYMUTIL="$ac_cv_prog_DSYMUTIL" -+fi -+ -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -+set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_NMEDIT+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$NMEDIT"; then -+ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+NMEDIT=$ac_cv_prog_NMEDIT -+if test -n "$NMEDIT"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -+$as_echo "$NMEDIT" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_NMEDIT"; then -+ ac_ct_NMEDIT=$NMEDIT -+ # Extract the first word of "nmedit", so it can be a program name with args. -+set dummy nmedit; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_NMEDIT"; then -+ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_NMEDIT="nmedit" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -+if test -n "$ac_ct_NMEDIT"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -+$as_echo "$ac_ct_NMEDIT" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_NMEDIT" = x; then -+ NMEDIT=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ NMEDIT=$ac_ct_NMEDIT -+ fi -+else -+ NMEDIT="$ac_cv_prog_NMEDIT" -+fi -+ -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -+set dummy ${ac_tool_prefix}lipo; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_LIPO+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$LIPO"; then -+ ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_LIPO="${ac_tool_prefix}lipo" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+LIPO=$ac_cv_prog_LIPO -+if test -n "$LIPO"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -+$as_echo "$LIPO" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_LIPO"; then -+ ac_ct_LIPO=$LIPO -+ # Extract the first word of "lipo", so it can be a program name with args. -+set dummy lipo; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_LIPO+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_LIPO"; then -+ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_LIPO="lipo" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -+if test -n "$ac_ct_LIPO"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -+$as_echo "$ac_ct_LIPO" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_LIPO" = x; then -+ LIPO=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ LIPO=$ac_ct_LIPO -+ fi -+else -+ LIPO="$ac_cv_prog_LIPO" -+fi -+ -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -+set dummy ${ac_tool_prefix}otool; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_OTOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$OTOOL"; then -+ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_OTOOL="${ac_tool_prefix}otool" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+OTOOL=$ac_cv_prog_OTOOL -+if test -n "$OTOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -+$as_echo "$OTOOL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_OTOOL"; then -+ ac_ct_OTOOL=$OTOOL -+ # Extract the first word of "otool", so it can be a program name with args. -+set dummy otool; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_OTOOL"; then -+ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_OTOOL="otool" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -+if test -n "$ac_ct_OTOOL"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -+$as_echo "$ac_ct_OTOOL" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_OTOOL" = x; then -+ OTOOL=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ OTOOL=$ac_ct_OTOOL -+ fi -+else -+ OTOOL="$ac_cv_prog_OTOOL" -+fi -+ -+ if test -n "$ac_tool_prefix"; then -+ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -+set dummy ${ac_tool_prefix}otool64; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_OTOOL64+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$OTOOL64"; then -+ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+OTOOL64=$ac_cv_prog_OTOOL64 -+if test -n "$OTOOL64"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -+$as_echo "$OTOOL64" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+fi -+if test -z "$ac_cv_prog_OTOOL64"; then -+ ac_ct_OTOOL64=$OTOOL64 -+ # Extract the first word of "otool64", so it can be a program name with args. -+set dummy otool64; ac_word=$2 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -+$as_echo_n "checking for $ac_word... " >&6; } -+if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if test -n "$ac_ct_OTOOL64"; then -+ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -+else -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then -+ ac_cv_prog_ac_ct_OTOOL64="otool64" -+ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 -+ break 2 -+ fi -+done -+ done -+IFS=$as_save_IFS -+ -+fi -+fi -+ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -+if test -n "$ac_ct_OTOOL64"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -+$as_echo "$ac_ct_OTOOL64" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ if test "x$ac_ct_OTOOL64" = x; then -+ OTOOL64=":" -+ else -+ case $cross_compiling:$ac_tool_warned in -+yes:) -+{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -+$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -+ac_tool_warned=yes ;; -+esac -+ OTOOL64=$ac_ct_OTOOL64 -+ fi -+else -+ OTOOL64="$ac_cv_prog_OTOOL64" -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -+$as_echo_n "checking for -single_module linker flag... " >&6; } -+if ${lt_cv_apple_cc_single_mod+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_apple_cc_single_mod=no -+ if test -z "${LT_MULTI_MODULE}"; then -+ # By default we will add the -single_module flag. You can override -+ # by either setting the environment variable LT_MULTI_MODULE -+ # non-empty at configure time, or by adding -multi_module to the -+ # link flags. -+ rm -rf libconftest.dylib* -+ echo "int foo(void){return 1;}" > conftest.c -+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -+-dynamiclib -Wl,-single_module conftest.c" >&5 -+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err -+ _lt_result=$? -+ # If there is a non-empty error log, and "single_module" -+ # appears in it, assume the flag caused a linker warning -+ if test -s conftest.err && $GREP single_module conftest.err; then -+ cat conftest.err >&5 -+ # Otherwise, if the output was created with a 0 exit code from -+ # the compiler, it worked. -+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then -+ lt_cv_apple_cc_single_mod=yes -+ else -+ cat conftest.err >&5 -+ fi -+ rm -rf libconftest.dylib* -+ rm -f conftest.* -+ fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -+$as_echo "$lt_cv_apple_cc_single_mod" >&6; } -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -+$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -+if ${lt_cv_ld_exported_symbols_list+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_ld_exported_symbols_list=no -+ save_LDFLAGS=$LDFLAGS -+ echo "_main" > conftest.sym -+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ lt_cv_ld_exported_symbols_list=yes -+else -+ lt_cv_ld_exported_symbols_list=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ LDFLAGS="$save_LDFLAGS" -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -+$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -+$as_echo_n "checking for -force_load linker flag... " >&6; } -+if ${lt_cv_ld_force_load+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_ld_force_load=no -+ cat > conftest.c << _LT_EOF -+int forced_loaded() { return 2;} -+_LT_EOF -+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 -+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 -+ echo "$AR cru libconftest.a conftest.o" >&5 -+ $AR cru libconftest.a conftest.o 2>&5 -+ echo "$RANLIB libconftest.a" >&5 -+ $RANLIB libconftest.a 2>&5 -+ cat > conftest.c << _LT_EOF -+int main() { return 0;} -+_LT_EOF -+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 -+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err -+ _lt_result=$? -+ if test -s conftest.err && $GREP force_load conftest.err; then -+ cat conftest.err >&5 -+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then -+ lt_cv_ld_force_load=yes -+ else -+ cat conftest.err >&5 -+ fi -+ rm -f conftest.err libconftest.a conftest conftest.c -+ rm -rf conftest.dSYM -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -+$as_echo "$lt_cv_ld_force_load" >&6; } -+ case $host_os in -+ rhapsody* | darwin1.[012]) -+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; -+ darwin1.*) -+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; -+ darwin*) # darwin 5.x on -+ # if running on 10.5 or later, the deployment target defaults -+ # to the OS version, if on x86, and 10.4, the deployment -+ # target defaults to 10.4. Don't you love it? -+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in -+ 10.0,*86*-darwin8*|10.0,*-darwin[91]*) -+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; -+ 10.[012]*) -+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; -+ 10.*) -+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; -+ esac -+ ;; -+ esac -+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then -+ _lt_dar_single_mod='$single_module' -+ fi -+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then -+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' -+ else -+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ fi -+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then -+ _lt_dsymutil='~$DSYMUTIL $lib || :' -+ else -+ _lt_dsymutil= -+ fi -+ ;; -+ esac -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -+$as_echo_n "checking how to run the C preprocessor... " >&6; } -+# On Suns, sometimes $CPP names a directory. -+if test -n "$CPP" && test -d "$CPP"; then -+ CPP= -+fi -+if test -z "$CPP"; then -+ if ${ac_cv_prog_CPP+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ # Double quotes because CPP needs to be expanded -+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" -+ do -+ ac_preproc_ok=false -+for ac_c_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ Syntax error -+_ACEOF -+if ac_fn_c_try_cpp "$LINENO"; then : -+ -+else -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.i conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether nonexistent headers -+ # can be detected and how. -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+_ACEOF -+if ac_fn_c_try_cpp "$LINENO"; then : -+ # Broken: success on invalid input. -+continue -+else -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+rm -f conftest.err conftest.i conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.i conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then : -+ break -+fi -+ -+ done -+ ac_cv_prog_CPP=$CPP -+ -+fi -+ CPP=$ac_cv_prog_CPP -+else -+ ac_cv_prog_CPP=$CPP -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -+$as_echo "$CPP" >&6; } -+ac_preproc_ok=false -+for ac_c_preproc_warn_flag in '' yes -+do -+ # Use a header file that comes with gcc, so configuring glibc -+ # with a fresh cross-compiler works. -+ # Prefer to if __STDC__ is defined, since -+ # exists even on freestanding compilers. -+ # On the NeXT, cc -E runs the code through the compiler's parser, -+ # not just through cpp. "Syntax error" is here to catch this case. -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#ifdef __STDC__ -+# include -+#else -+# include -+#endif -+ Syntax error -+_ACEOF -+if ac_fn_c_try_cpp "$LINENO"; then : -+ -+else -+ # Broken: fails on valid input. -+continue -+fi -+rm -f conftest.err conftest.i conftest.$ac_ext -+ -+ # OK, works on sane cases. Now check whether nonexistent headers -+ # can be detected and how. -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+_ACEOF -+if ac_fn_c_try_cpp "$LINENO"; then : -+ # Broken: success on invalid input. -+continue -+else -+ # Passes both tests. -+ac_preproc_ok=: -+break -+fi -+rm -f conftest.err conftest.i conftest.$ac_ext -+ -+done -+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -+rm -f conftest.i conftest.err conftest.$ac_ext -+if $ac_preproc_ok; then : -+ -+else -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -+See \`config.log' for more details" "$LINENO" 5; } -+fi -+ -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -+$as_echo_n "checking for ANSI C header files... " >&6; } -+if ${ac_cv_header_stdc+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+#include -+#include -+#include -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_header_stdc=yes -+else -+ ac_cv_header_stdc=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+if test $ac_cv_header_stdc = yes; then -+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "memchr" >/dev/null 2>&1; then : -+ -+else -+ 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "free" >/dev/null 2>&1; then : -+ -+else -+ 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+#include -+#if ((' ' & 0x0FF) == 0x020) -+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -+#else -+# define ISLOWER(c) \ -+ (('a' <= (c) && (c) <= 'i') \ -+ || ('j' <= (c) && (c) <= 'r') \ -+ || ('s' <= (c) && (c) <= 'z')) -+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -+#endif -+ -+#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)) -+ return 2; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ -+else -+ ac_cv_header_stdc=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi -+ -+fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -+$as_echo "$ac_cv_header_stdc" >&6; } -+if test $ac_cv_header_stdc = yes; then -+ -+$as_echo "#define STDC_HEADERS 1" >>confdefs.h -+ -+fi -+ -+# On IRIX 5.3, sys/types and inttypes.h are conflicting. -+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ -+ inttypes.h stdint.h unistd.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -+" -+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+for ac_header in dlfcn.h -+do : -+ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -+" -+if test "x$ac_cv_header_dlfcn_h" = xyes; then : -+ cat >>confdefs.h <<_ACEOF -+#define HAVE_DLFCN_H 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+ -+ -+ -+# Set options -+ -+ -+ -+ enable_dlopen=no -+ -+ -+ enable_win32_dll=no -+ -+ -+ # Check whether --enable-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. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_shared=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac -+else -+ enable_shared=yes -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ # Check whether --enable-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. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_static=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac -+else -+ enable_static=yes -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+# Check whether --with-pic was given. -+if test "${with_pic+set}" = set; then : -+ withval=$with_pic; lt_p=${PACKAGE-default} -+ case $withval in -+ yes|no) pic_mode=$withval ;; -+ *) -+ pic_mode=default -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for lt_pkg in $withval; do -+ IFS="$lt_save_ifs" -+ if test "X$lt_pkg" = "X$lt_p"; then -+ pic_mode=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac -+else -+ pic_mode=default -+fi -+ -+ -+test -z "$pic_mode" && pic_mode=default -+ -+ -+ -+ -+ -+ -+ -+ # Check whether --enable-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. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_fast_install=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac -+else -+ enable_fast_install=yes -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+# This can be used to rebuild libtool when needed -+LIBTOOL_DEPS="$ltmain" -+ -+# Always use our own libtool. -+LIBTOOL='$(SHELL) $(top_builddir)/libtool' -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+test -z "$LN_S" && LN_S="ln -s" -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+if test -n "${ZSH_VERSION+set}" ; then -+ setopt NO_GLOB_SUBST -+fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -+$as_echo_n "checking for objdir... " >&6; } -+if ${lt_cv_objdir+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ rm -f .libs 2>/dev/null -+mkdir .libs 2>/dev/null -+if test -d .libs; then -+ lt_cv_objdir=.libs -+else -+ # MS-DOS does not allow filenames that begin with a dot. -+ lt_cv_objdir=_libs -+fi -+rmdir .libs 2>/dev/null -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -+$as_echo "$lt_cv_objdir" >&6; } -+objdir=$lt_cv_objdir -+ -+ -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define LT_OBJDIR "$lt_cv_objdir/" -+_ACEOF -+ -+ -+ -+ -+case $host_os in -+aix3*) -+ # AIX sometimes has problems with the GCC collect2 program. For some -+ # reason, if we set the COLLECT_NAMES environment variable, the problems -+ # vanish in a puff of smoke. -+ if test "X${COLLECT_NAMES+set}" != Xset; then -+ COLLECT_NAMES= -+ export COLLECT_NAMES -+ fi -+ ;; -+esac -+ -+# Global variables: -+ofile=libtool -+can_build_shared=yes -+ -+# All known linkers require a `.a' archive for static linking (except MSVC, -+# which needs '.lib'). -+libext=a -+ -+with_gnu_ld="$lt_cv_prog_gnu_ld" -+ -+old_CC="$CC" -+old_CFLAGS="$CFLAGS" -+ -+# Set sane defaults for various variables -+test -z "$CC" && CC=cc -+test -z "$LTCC" && LTCC=$CC -+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -+test -z "$LD" && LD=ld -+test -z "$ac_objext" && ac_objext=o -+ -+for cc_temp in $compiler""; do -+ case $cc_temp in -+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; -+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -+ -+ -+# Only perform the check for file, if the check method requires it -+test -z "$MAGIC_CMD" && MAGIC_CMD=file -+case $deplibs_check_method in -+file_magic*) -+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -+$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -+if ${lt_cv_path_MAGIC_CMD+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ case $MAGIC_CMD in -+[\\/*] | ?:[\\/]*) -+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. -+ ;; -+*) -+ lt_save_MAGIC_CMD="$MAGIC_CMD" -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" -+ for ac_dir in $ac_dummy; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ if test -f $ac_dir/${ac_tool_prefix}file; then -+ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" -+ if test -n "$file_magic_test_file"; then -+ case $deplibs_check_method in -+ "file_magic "*) -+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` -+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | -+ $EGREP "$file_magic_regex" > /dev/null; then -+ : -+ else -+ cat <<_LT_EOF 1>&2 -+ -+*** Warning: the command libtool uses to detect shared libraries, -+*** $file_magic_cmd, produces output that libtool cannot recognize. -+*** The result is that libtool may fail to recognize shared libraries -+*** as such. This will affect the creation of libtool libraries that -+*** depend on shared libraries, but programs linked with such libtool -+*** libraries will work regardless of this problem. Nevertheless, you -+*** may want to report the problem to your system manager and/or to -+*** bug-libtool@gnu.org -+ -+_LT_EOF -+ fi ;; -+ esac -+ fi -+ break -+ fi -+ done -+ IFS="$lt_save_ifs" -+ MAGIC_CMD="$lt_save_MAGIC_CMD" -+ ;; -+esac -+fi -+ -+MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -+if test -n "$MAGIC_CMD"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -+$as_echo "$MAGIC_CMD" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ -+ -+ -+if test -z "$lt_cv_path_MAGIC_CMD"; then -+ if test -n "$ac_tool_prefix"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -+$as_echo_n "checking for file... " >&6; } -+if ${lt_cv_path_MAGIC_CMD+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ case $MAGIC_CMD in -+[\\/*] | ?:[\\/]*) -+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. -+ ;; -+*) -+ lt_save_MAGIC_CMD="$MAGIC_CMD" -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" -+ for ac_dir in $ac_dummy; do -+ IFS="$lt_save_ifs" -+ 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 <<_LT_EOF 1>&2 -+ -+*** Warning: the command libtool uses to detect shared libraries, -+*** $file_magic_cmd, produces output that libtool cannot recognize. -+*** The result is that libtool may fail to recognize shared libraries -+*** as such. This will affect the creation of libtool libraries that -+*** depend on shared libraries, but programs linked with such libtool -+*** libraries will work regardless of this problem. Nevertheless, you -+*** may want to report the problem to your system manager and/or to -+*** bug-libtool@gnu.org -+ -+_LT_EOF -+ fi ;; -+ esac -+ fi -+ break -+ fi -+ done -+ IFS="$lt_save_ifs" -+ MAGIC_CMD="$lt_save_MAGIC_CMD" -+ ;; -+esac -+fi -+ -+MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -+if test -n "$MAGIC_CMD"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -+$as_echo "$MAGIC_CMD" >&6; } -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+fi -+ -+ -+ else -+ MAGIC_CMD=: -+ fi -+fi -+ -+ fi -+ ;; -+esac -+ -+# Use C for the default configuration in the libtool script -+ -+lt_save_CC="$CC" -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+ -+# Source file extension for C test sources. -+ac_ext=c -+ -+# Object file extension for compiled C test sources. -+objext=o -+objext=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="int some_variable = 0;" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='int main(){return(0);}' -+ -+ -+ -+ -+ -+ -+ -+# If no C compiler was specified, use CC. -+LTCC=${LTCC-"$CC"} -+ -+# If no C compiler flags were specified, use CFLAGS. -+LTCFLAGS=${LTCFLAGS-"$CFLAGS"} -+ -+# Allow CC to be a program name with arguments. -+compiler=$CC -+ -+# Save the default compiler, since it gets overwritten when the other -+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -+compiler_DEFAULT=$CC -+ -+# save warnings/boilerplate of simple test code -+ac_outfile=conftest.$ac_objext -+echo "$lt_simple_compile_test_code" >conftest.$ac_ext -+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -+_lt_compiler_boilerplate=`cat conftest.err` -+$RM conftest* -+ -+ac_outfile=conftest.$ac_objext -+echo "$lt_simple_link_test_code" >conftest.$ac_ext -+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -+_lt_linker_boilerplate=`cat conftest.err` -+$RM -r conftest* -+ -+ -+## CAVEAT EMPTOR: -+## There is no encapsulation within the following macros, do not change -+## the running order or otherwise move them around unless you know exactly -+## what you are doing... -+if test -n "$compiler"; then -+ -+lt_prog_compiler_no_builtin_flag= -+ -+if test "$GCC" = yes; then -+ case $cc_basename in -+ nvcc*) -+ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; -+ *) -+ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; -+ esac -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -+$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -+if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_prog_compiler_rtti_exceptions=no -+ ac_outfile=conftest.$ac_objext -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ lt_compiler_flag="-fno-rtti -fno-exceptions" -+ # Insert the option either (1) after the last *FLAGS variable, or -+ # (2) before a word containing "conftest.", or (3) at the end. -+ # Note that $ac_compile itself does not contain backslashes and begins -+ # with a dollar sign (not a hyphen), so the echo should work correctly. -+ # The option is referenced via a variable to avoid confusing sed. -+ lt_compile=`echo "$ac_compile" | $SED \ -+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -+ -e 's:$: $lt_compiler_flag:'` -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ if (exit $ac_status) && test -s "$ac_outfile"; then -+ # The compiler can only warn and ignore the option if not recognized -+ # So say no if there are warnings other than the usual output. -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -+ lt_cv_prog_compiler_rtti_exceptions=yes -+ fi -+ fi -+ $RM conftest* -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -+$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } -+ -+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then -+ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -+else -+ : -+fi -+ -+fi -+ -+ -+ -+ -+ -+ -+ lt_prog_compiler_wl= -+lt_prog_compiler_pic= -+lt_prog_compiler_static= -+ -+ -+ if test "$GCC" = yes; then -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_static='-static' -+ -+ case $host_os in -+ aix*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static='-Bstatic' -+ fi -+ ;; -+ -+ amigaos*) -+ case $host_cpu in -+ powerpc) -+ # see comment about AmigaOS4 .so support -+ lt_prog_compiler_pic='-fPIC' -+ ;; -+ m68k) -+ # FIXME: we need at least 68020 code to build shared libraries, but -+ # adding the `-m68020' flag to GCC prevents building anything better, -+ # like `-m68040'. -+ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' -+ ;; -+ esac -+ ;; -+ -+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -+ # PIC is the default for these OSes. -+ ;; -+ -+ mingw* | cygwin* | pw32* | os2* | cegcc*) -+ # This hack is so that the source file can tell whether it is being -+ # built for inclusion in a dll (and should export symbols for example). -+ # Although the cygwin gcc ignores -fPIC, still need this for old-style -+ # (--disable-auto-import) libraries -+ lt_prog_compiler_pic='-DDLL_EXPORT' -+ ;; -+ -+ darwin* | rhapsody*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ lt_prog_compiler_pic='-fno-common' -+ ;; -+ -+ haiku*) -+ # PIC is the default for Haiku. -+ # The "-static" flag exists, but is broken. -+ lt_prog_compiler_static= -+ ;; -+ -+ hpux*) -+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit -+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag -+ # sets the default TLS model and affects inlining. -+ case $host_cpu in -+ hppa*64*) -+ # +Z the default -+ ;; -+ *) -+ lt_prog_compiler_pic='-fPIC' -+ ;; -+ esac -+ ;; -+ -+ interix[3-9]*) -+ # Interix 3.x gcc -fpic/-fPIC options generate broken code. -+ # Instead, we relocate shared libraries at runtime. -+ ;; -+ -+ msdosdjgpp*) -+ # Just because we use GCC doesn't mean we suddenly get shared libraries -+ # on systems that don't support them. -+ lt_prog_compiler_can_build_shared=no -+ enable_shared=no -+ ;; -+ -+ *nto* | *qnx*) -+ # QNX uses GNU C++, but need to define -shared option too, otherwise -+ # it will coredump. -+ lt_prog_compiler_pic='-fPIC -shared' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ lt_prog_compiler_pic=-Kconform_pic -+ fi -+ ;; -+ -+ *) -+ lt_prog_compiler_pic='-fPIC' -+ ;; -+ esac -+ -+ case $cc_basename in -+ nvcc*) # Cuda Compiler Driver 2.2 -+ lt_prog_compiler_wl='-Xlinker ' -+ if test -n "$lt_prog_compiler_pic"; then -+ lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic" -+ fi -+ ;; -+ esac -+ else -+ # PORTME Check for flag to pass linker flags through the system compiler. -+ case $host_os in -+ aix*) -+ lt_prog_compiler_wl='-Wl,' -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ lt_prog_compiler_static='-Bstatic' -+ else -+ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' -+ fi -+ ;; -+ -+ mingw* | cygwin* | pw32* | os2* | cegcc*) -+ # This hack is so that the source file can tell whether it is being -+ # built for inclusion in a dll (and should export symbols for example). -+ lt_prog_compiler_pic='-DDLL_EXPORT' -+ ;; -+ -+ hpux9* | hpux10* | hpux11*) -+ lt_prog_compiler_wl='-Wl,' -+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but -+ # not for PA HP-UX. -+ case $host_cpu in -+ hppa*64*|ia64*) -+ # +Z the default -+ ;; -+ *) -+ lt_prog_compiler_pic='+Z' -+ ;; -+ esac -+ # Is there a better lt_prog_compiler_static that works with the bundled CC? -+ lt_prog_compiler_static='${wl}-a ${wl}archive' -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ lt_prog_compiler_wl='-Wl,' -+ # PIC (with -KPIC) is the default. -+ lt_prog_compiler_static='-non_shared' -+ ;; -+ -+ linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ case $cc_basename in -+ # old Intel for x86_64 which still supported -KPIC. -+ ecc*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-static' -+ ;; -+ # icc used to be incompatible with GCC. -+ # ICC 10 doesn't accept -KPIC any more. -+ icc* | ifort*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-fPIC' -+ lt_prog_compiler_static='-static' -+ ;; -+ # Lahey Fortran 8.1. -+ lf95*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='--shared' -+ lt_prog_compiler_static='--static' -+ ;; -+ nagfor*) -+ # NAG Fortran compiler -+ lt_prog_compiler_wl='-Wl,-Wl,,' -+ lt_prog_compiler_pic='-PIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) -+ # Portland Group compilers (*not* the Pentium gcc compiler, -+ # which looks to be a dead project) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-fpic' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ ccc*) -+ lt_prog_compiler_wl='-Wl,' -+ # All Alpha code is PIC. -+ lt_prog_compiler_static='-non_shared' -+ ;; -+ xl* | bgxl* | bgf* | mpixl*) -+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-qpic' -+ lt_prog_compiler_static='-qstaticlink' -+ ;; -+ *) -+ case `$CC -V 2>&1 | sed 5q` in -+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*) -+ # Sun Fortran 8.3 passes all unrecognized flags to the linker -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ lt_prog_compiler_wl='' -+ ;; -+ *Sun\ F* | *Sun*Fortran*) -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ lt_prog_compiler_wl='-Qoption ld ' -+ ;; -+ *Sun\ C*) -+ # Sun C 5.9 -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ lt_prog_compiler_wl='-Wl,' -+ ;; -+ *Intel*\ [CF]*Compiler*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-fPIC' -+ lt_prog_compiler_static='-static' -+ ;; -+ *Portland\ Group*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-fpic' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ esac -+ ;; -+ esac -+ ;; -+ -+ newsos6) -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ *nto* | *qnx*) -+ # QNX uses GNU C++, but need to define -shared option too, otherwise -+ # it will coredump. -+ lt_prog_compiler_pic='-fPIC -shared' -+ ;; -+ -+ osf3* | osf4* | osf5*) -+ lt_prog_compiler_wl='-Wl,' -+ # All OSF/1 code is PIC. -+ lt_prog_compiler_static='-non_shared' -+ ;; -+ -+ rdos*) -+ lt_prog_compiler_static='-non_shared' -+ ;; -+ -+ solaris*) -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ case $cc_basename in -+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) -+ lt_prog_compiler_wl='-Qoption ld ';; -+ *) -+ lt_prog_compiler_wl='-Wl,';; -+ esac -+ ;; -+ -+ sunos4*) -+ lt_prog_compiler_wl='-Qoption ld ' -+ lt_prog_compiler_pic='-PIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ sysv4 | sysv4.2uw2* | sysv4.3*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec ;then -+ lt_prog_compiler_pic='-Kconform_pic' -+ lt_prog_compiler_static='-Bstatic' -+ fi -+ ;; -+ -+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_pic='-KPIC' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ unicos*) -+ lt_prog_compiler_wl='-Wl,' -+ lt_prog_compiler_can_build_shared=no -+ ;; -+ -+ uts4*) -+ lt_prog_compiler_pic='-pic' -+ lt_prog_compiler_static='-Bstatic' -+ ;; -+ -+ *) -+ lt_prog_compiler_can_build_shared=no -+ ;; -+ esac -+ fi -+ -+case $host_os in -+ # For platforms which do not support PIC, -DPIC is meaningless: -+ *djgpp*) -+ lt_prog_compiler_pic= -+ ;; -+ *) -+ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" -+ ;; -+esac -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -+$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -+if ${lt_cv_prog_compiler_pic+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -+$as_echo "$lt_cv_prog_compiler_pic" >&6; } -+lt_prog_compiler_pic=$lt_cv_prog_compiler_pic -+ -+# -+# Check to make sure the PIC flag actually works. -+# -+if test -n "$lt_prog_compiler_pic"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -+$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -+if ${lt_cv_prog_compiler_pic_works+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_prog_compiler_pic_works=no -+ ac_outfile=conftest.$ac_objext -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" -+ # Insert the option either (1) after the last *FLAGS variable, or -+ # (2) before a word containing "conftest.", or (3) at the end. -+ # Note that $ac_compile itself does not contain backslashes and begins -+ # with a dollar sign (not a hyphen), so the echo should work correctly. -+ # The option is referenced via a variable to avoid confusing sed. -+ lt_compile=`echo "$ac_compile" | $SED \ -+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -+ -e 's:$: $lt_compiler_flag:'` -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ if (exit $ac_status) && test -s "$ac_outfile"; then -+ # The compiler can only warn and ignore the option if not recognized -+ # So say no if there are warnings other than the usual output. -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -+ lt_cv_prog_compiler_pic_works=yes -+ fi -+ fi -+ $RM conftest* -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -+$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } -+ -+if test x"$lt_cv_prog_compiler_pic_works" = xyes; then -+ case $lt_prog_compiler_pic in -+ "" | " "*) ;; -+ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; -+ esac -+else -+ lt_prog_compiler_pic= -+ lt_prog_compiler_can_build_shared=no -+fi -+ -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+# -+# Check to make sure the static flag actually works. -+# -+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -+$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -+if ${lt_cv_prog_compiler_static_works+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_prog_compiler_static_works=no -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" -+ echo "$lt_simple_link_test_code" > conftest.$ac_ext -+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then -+ # The linker can only warn and ignore the option if not recognized -+ # So say no if there are warnings -+ if test -s conftest.err; then -+ # Append any errors to the config.log. -+ cat conftest.err 1>&5 -+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if diff conftest.exp conftest.er2 >/dev/null; then -+ lt_cv_prog_compiler_static_works=yes -+ fi -+ else -+ lt_cv_prog_compiler_static_works=yes -+ fi -+ fi -+ $RM -r conftest* -+ LDFLAGS="$save_LDFLAGS" -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -+$as_echo "$lt_cv_prog_compiler_static_works" >&6; } -+ -+if test x"$lt_cv_prog_compiler_static_works" = xyes; then -+ : -+else -+ lt_prog_compiler_static= -+fi -+ -+ -+ -+ -+ -+ -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -+if ${lt_cv_prog_compiler_c_o+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_prog_compiler_c_o=no -+ $RM -r conftest 2>/dev/null -+ mkdir conftest -+ cd conftest -+ mkdir out -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ lt_compiler_flag="-o out/conftest2.$ac_objext" -+ # Insert the option either (1) after the last *FLAGS variable, or -+ # (2) before a word containing "conftest.", or (3) at the end. -+ # Note that $ac_compile itself does not contain backslashes and begins -+ # with a dollar sign (not a hyphen), so the echo should work correctly. -+ lt_compile=`echo "$ac_compile" | $SED \ -+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -+ -e 's:$: $lt_compiler_flag:'` -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ if (exit $ac_status) && test -s out/conftest2.$ac_objext -+ then -+ # The compiler can only warn and ignore the option if not recognized -+ # So say no if there are warnings -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp -+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then -+ lt_cv_prog_compiler_c_o=yes -+ fi -+ fi -+ chmod u+w . 2>&5 -+ $RM conftest* -+ # SGI C++ compiler will create directory out/ii_files/ for -+ # template instantiation -+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files -+ $RM out/* && rmdir out -+ cd .. -+ $RM -r conftest -+ $RM conftest* -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -+$as_echo "$lt_cv_prog_compiler_c_o" >&6; } -+ -+ -+ -+ -+ -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -+$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -+if ${lt_cv_prog_compiler_c_o+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_prog_compiler_c_o=no -+ $RM -r conftest 2>/dev/null -+ mkdir conftest -+ cd conftest -+ mkdir out -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ lt_compiler_flag="-o out/conftest2.$ac_objext" -+ # Insert the option either (1) after the last *FLAGS variable, or -+ # (2) before a word containing "conftest.", or (3) at the end. -+ # Note that $ac_compile itself does not contain backslashes and begins -+ # with a dollar sign (not a hyphen), so the echo should work correctly. -+ lt_compile=`echo "$ac_compile" | $SED \ -+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -+ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -+ -e 's:$: $lt_compiler_flag:'` -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&5 -+ echo "$as_me:$LINENO: \$? = $ac_status" >&5 -+ if (exit $ac_status) && test -s out/conftest2.$ac_objext -+ then -+ # The compiler can only warn and ignore the option if not recognized -+ # So say no if there are warnings -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp -+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then -+ lt_cv_prog_compiler_c_o=yes -+ fi -+ fi -+ chmod u+w . 2>&5 -+ $RM conftest* -+ # SGI C++ compiler will create directory out/ii_files/ for -+ # template instantiation -+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files -+ $RM out/* && rmdir out -+ cd .. -+ $RM -r conftest -+ $RM conftest* -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -+$as_echo "$lt_cv_prog_compiler_c_o" >&6; } -+ -+ -+ -+ -+hard_links="nottested" -+if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then -+ # do not overwrite the value of need_locks provided by the user -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -+$as_echo_n "checking if we can lock with hard links... " >&6; } -+ 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 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -+$as_echo "$hard_links" >&6; } -+ if test "$hard_links" = no; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -+$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} -+ need_locks=warn -+ fi -+else -+ need_locks=no -+fi -+ -+ -+ -+ -+ -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -+$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } -+ -+ runpath_var= -+ allow_undefined_flag= -+ always_export_symbols=no -+ archive_cmds= -+ archive_expsym_cmds= -+ compiler_needs_object=no -+ enable_shared_with_static_runtimes=no -+ export_dynamic_flag_spec= -+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ hardcode_automatic=no -+ hardcode_direct=no -+ hardcode_direct_absolute=no -+ hardcode_libdir_flag_spec= -+ hardcode_libdir_separator= -+ hardcode_minus_L=no -+ hardcode_shlibpath_var=unsupported -+ inherit_rpath=no -+ link_all_deplibs=unknown -+ module_cmds= -+ module_expsym_cmds= -+ old_archive_from_new_cmds= -+ old_archive_from_expsyms_cmds= -+ thread_safe_flag_spec= -+ whole_archive_flag_spec= -+ # 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 extended regexp of symbols to exclude -+ # it will be wrapped by ` (' and `)$', so one must not match beginning or -+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', -+ # as well as any symbol that contains `d'. -+ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' -+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out -+ # platforms (ab)use it in PIC code, but their linkers get confused if -+ # the symbol is explicitly referenced. Since portable code cannot -+ # rely on this symbol name, it's probably fine to never include it in -+ # preloaded symbol tables. -+ # Exclude shared library initialization/finalization symbols. -+ extract_expsyms_cmds= -+ -+ case $host_os in -+ cygwin* | mingw* | pw32* | cegcc*) -+ # FIXME: the MSVC++ port hasn't been tested in a loooong time -+ # When not using gcc, we currently assume that we are using -+ # Microsoft Visual C++. -+ if test "$GCC" != yes; then -+ with_gnu_ld=no -+ fi -+ ;; -+ interix*) -+ # we just hope/assume this is gcc and not c89 (= MSVC++) -+ with_gnu_ld=yes -+ ;; -+ openbsd*) -+ with_gnu_ld=no -+ ;; -+ linux* | k*bsd*-gnu | gnu*) -+ link_all_deplibs=no -+ ;; -+ esac -+ -+ ld_shlibs=yes -+ -+ # On some targets, GNU ld is compatible enough with the native linker -+ # that we're better off using the native interface for both. -+ lt_use_gnu_ld_interface=no -+ if test "$with_gnu_ld" = yes; then -+ case $host_os in -+ aix*) -+ # The AIX port of GNU ld has always aspired to compatibility -+ # with the native linker. However, as the warning in the GNU ld -+ # block says, versions before 2.19.5* couldn't really create working -+ # shared libraries, regardless of the interface used. -+ case `$LD -v 2>&1` in -+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;; -+ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; -+ *\ \(GNU\ Binutils\)\ [3-9]*) ;; -+ *) -+ lt_use_gnu_ld_interface=yes -+ ;; -+ esac -+ ;; -+ *) -+ lt_use_gnu_ld_interface=yes -+ ;; -+ esac -+ fi -+ -+ if test "$lt_use_gnu_ld_interface" = yes; then -+ # If archive_cmds runs LD, not CC, wlarc should be empty -+ wlarc='${wl}' -+ -+ # Set some defaults for GNU ld with shared library support. These -+ # are reset later if shared libraries are not supported. Putting them -+ # here allows them to be overridden if necessary. -+ runpath_var=LD_RUN_PATH -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ export_dynamic_flag_spec='${wl}--export-dynamic' -+ # ancient GNU ld didn't support --whole-archive et. al. -+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then -+ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ whole_archive_flag_spec= -+ fi -+ supports_anon_versioning=no -+ case `$LD -v 2>&1` in -+ *GNU\ gold*) supports_anon_versioning=yes ;; -+ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 -+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... -+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... -+ *\ 2.11.*) ;; # other 2.11 versions -+ *) supports_anon_versioning=yes ;; -+ esac -+ -+ # See if GNU ld supports shared libraries. -+ case $host_os in -+ aix[3-9]*) -+ # On AIX/PPC, the GNU linker is very broken -+ if test "$host_cpu" != ia64; then -+ ld_shlibs=no -+ cat <<_LT_EOF 1>&2 -+ -+*** Warning: the GNU linker, at least up to release 2.19, is reported -+*** to be unable to reliably create shared libraries on AIX. -+*** Therefore, libtool is disabling shared libraries support. If you -+*** really care for shared libraries, you may want to install binutils -+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -+*** You will then need to restart the configuration process. -+ -+_LT_EOF -+ fi -+ ;; -+ -+ amigaos*) -+ case $host_cpu in -+ powerpc) -+ # see comment about AmigaOS4 .so support -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='' -+ ;; -+ m68k) -+ 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 -+ ;; -+ esac -+ ;; -+ -+ beos*) -+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -+ allow_undefined_flag=unsupported -+ # Joseph Beckenbach 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* | cegcc*) -+ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, -+ # as there is no search path for DLLs. -+ hardcode_libdir_flag_spec='-L$libdir' -+ export_dynamic_flag_spec='${wl}--export-all-symbols' -+ allow_undefined_flag=unsupported -+ always_export_symbols=no -+ enable_shared_with_static_runtimes=yes -+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' -+ exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' -+ -+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -+ # If the export-symbols file already is a .def file (1st line -+ # is EXPORTS), use it as is; otherwise, prepend... -+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ cp $export_symbols $output_objdir/$soname.def; -+ else -+ echo EXPORTS > $output_objdir/$soname.def; -+ cat $export_symbols >> $output_objdir/$soname.def; -+ fi~ -+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ haiku*) -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ link_all_deplibs=yes -+ ;; -+ -+ interix[3-9]*) -+ hardcode_direct=no -+ hardcode_shlibpath_var=no -+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec='${wl}-E' -+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. -+ # Instead, shared libraries are loaded at an image base (0x10000000 by -+ # default) and relocated if they conflict, which is a slow very memory -+ # consuming and fragmenting process. To avoid this, we pick a random, -+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link -+ # time. Moving up from 0x10000000 also allows more sbrk(2) space. -+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ ;; -+ -+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) -+ tmp_diet=no -+ if test "$host_os" = linux-dietlibc; then -+ case $cc_basename in -+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) -+ esac -+ fi -+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ -+ && test "$tmp_diet" = no -+ then -+ tmp_addflag=' $pic_flag' -+ tmp_sharedflag='-shared' -+ case $cc_basename,$host_cpu in -+ pgcc*) # Portland Group C compiler -+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ tmp_addflag=' $pic_flag' -+ ;; -+ pgf77* | pgf90* | pgf95* | pgfortran*) -+ # Portland Group f77 and f90 compilers -+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ tmp_addflag=' $pic_flag -Mnomain' ;; -+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 -+ tmp_addflag=' -i_dynamic' ;; -+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 -+ tmp_addflag=' -i_dynamic -nofor_main' ;; -+ ifc* | ifort*) # Intel Fortran compiler -+ tmp_addflag=' -nofor_main' ;; -+ lf95*) # Lahey Fortran 8.1 -+ whole_archive_flag_spec= -+ tmp_sharedflag='--shared' ;; -+ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) -+ tmp_sharedflag='-qmkshrobj' -+ tmp_addflag= ;; -+ nvcc*) # Cuda Compiler Driver 2.2 -+ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ compiler_needs_object=yes -+ ;; -+ esac -+ case `$CC -V 2>&1 | sed 5q` in -+ *Sun\ C*) # Sun C 5.9 -+ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ compiler_needs_object=yes -+ tmp_sharedflag='-G' ;; -+ *Sun\ F*) # Sun Fortran 8.3 -+ tmp_sharedflag='-G' ;; -+ esac -+ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ -+ if test "x$supports_anon_versioning" = xyes; then -+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ -+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -+ echo "local: *; };" >> $output_objdir/$libname.ver~ -+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -+ fi -+ -+ case $cc_basename in -+ xlf* | bgf* | bgxlf* | mpixlf*) -+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself -+ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' -+ if test "x$supports_anon_versioning" = xyes; then -+ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ -+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -+ echo "local: *; };" >> $output_objdir/$libname.ver~ -+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' -+ fi -+ ;; -+ esac -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu) -+ 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 $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ fi -+ ;; -+ -+ solaris*) -+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then -+ ld_shlibs=no -+ cat <<_LT_EOF 1>&2 -+ -+*** Warning: The releases 2.8.* of the GNU linker cannot reliably -+*** create shared libraries on Solaris systems. Therefore, libtool -+*** is disabling shared libraries support. We urge you to upgrade GNU -+*** binutils to release 2.9.1 or newer. Another option is to modify -+*** your PATH or compiler configuration so that the native linker is -+*** used, and then restart. -+ -+_LT_EOF -+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) -+ case `$LD -v 2>&1` in -+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) -+ ld_shlibs=no -+ cat <<_LT_EOF 1>&2 -+ -+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -+*** reliably create shared libraries on SCO systems. Therefore, libtool -+*** is disabling shared libraries support. We urge you to upgrade GNU -+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -+*** your PATH or compiler configuration so that the native linker is -+*** used, and then restart. -+ -+_LT_EOF -+ ;; -+ *) -+ # For security reasons, it is highly recommended that you always -+ # use absolute paths for naming shared libraries, and exclude the -+ # DT_RUNPATH tag from executables and libraries. But doing so -+ # requires that you compile everything twice, which is a pain. -+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ 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 -+ ;; -+ -+ 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 | $GREP ': supported targets:.* elf' > /dev/null; then -+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='$CC -shared $pic_flag $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" = no; then -+ runpath_var= -+ hardcode_libdir_flag_spec= -+ export_dynamic_flag_spec= -+ whole_archive_flag_spec= -+ 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 "$lt_prog_compiler_static"; then -+ # Neither direct hardcoding nor static linking is supported with a -+ # broken collect2. -+ hardcode_direct=unsupported -+ fi -+ ;; -+ -+ aix[4-9]*) -+ if test "$host_cpu" = ia64; then -+ # On IA64, the linker does run time linking by default, so we don't -+ # have to do anything special. -+ aix_use_runtimelinking=no -+ exp_sym_flag='-Bexport' -+ no_entry_flag="" -+ else -+ # If we're using GNU nm, then we don't want the "-C" option. -+ # -C means demangle to AIX nm, but means don't demangle with GNU nm -+ # Also, AIX nm treats weak defined symbols like other global -+ # defined symbols, whereas GNU nm marks them as "W". -+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then -+ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -+ else -+ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -+ fi -+ aix_use_runtimelinking=no -+ -+ # Test if we are trying to use run time linking or normal -+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we -+ # need to do runtime linking. -+ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) -+ for ld_flag in $LDFLAGS; do -+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then -+ aix_use_runtimelinking=yes -+ break -+ fi -+ done -+ ;; -+ esac -+ -+ exp_sym_flag='-bexport' -+ no_entry_flag='-bnoentry' -+ fi -+ -+ # When large executables or shared objects are built, AIX ld can -+ # have problems creating the table of contents. If linking a library -+ # or program results in "error TOC overflow" add -mminimal-toc to -+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not -+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. -+ -+ archive_cmds='' -+ hardcode_direct=yes -+ hardcode_direct_absolute=yes -+ hardcode_libdir_separator=':' -+ link_all_deplibs=yes -+ file_list_spec='${wl}-f,' -+ -+ if test "$GCC" = yes; then -+ case $host_os in aix4.[012]|aix4.[012].*) -+ # We only want to do this on AIX 4.2 and lower, the check -+ # below for broken collect2 doesn't work under 4.3+ -+ collect2name=`${CC} -print-prog-name=collect2` -+ if test -f "$collect2name" && -+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null -+ then -+ # We have reworked collect2 -+ : -+ else -+ # We have old collect2 -+ 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 -+ ;; -+ esac -+ shared_flag='-shared' -+ if test "$aix_use_runtimelinking" = yes; then -+ shared_flag="$shared_flag "'${wl}-G' -+ fi -+ link_all_deplibs=no -+ else -+ # not using gcc -+ if test "$host_cpu" = ia64; then -+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release -+ # chokes on -Wl,-G. The following line is correct: -+ shared_flag='-G' -+ else -+ if test "$aix_use_runtimelinking" = yes; then -+ shared_flag='${wl}-G' -+ else -+ shared_flag='${wl}-bM:SRE' -+ fi -+ fi -+ fi -+ -+ export_dynamic_flag_spec='${wl}-bexpall' -+ # It seems that -bexpall does not export symbols beginning with -+ # underscore (_), so it is better to generate a list of symbols to export. -+ always_export_symbols=yes -+ if test "$aix_use_runtimelinking" = yes; then -+ # Warning - without using the other runtime loading flags (-brtl), -+ # -berok will link without error, but may produce a broken library. -+ allow_undefined_flag='-berok' -+ # Determine the default libpath from the value encoded in an -+ # empty executable. -+ if test "${lt_cv_aix_libpath+set}" = set; then -+ aix_libpath=$lt_cv_aix_libpath -+else -+ if ${lt_cv_aix_libpath_+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ -+ lt_aix_libpath_sed=' -+ /Import File Strings/,/^$/ { -+ /^0/ { -+ s/^0 *\([^ ]*\) *$/\1/ -+ p -+ } -+ }' -+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ # Check for a 64-bit object if we didn't find anything. -+ if test -z "$lt_cv_aix_libpath_"; then -+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ fi -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ if test -z "$lt_cv_aix_libpath_"; then -+ lt_cv_aix_libpath_="/usr/lib:/lib" -+ fi -+ -+fi -+ -+ aix_libpath=$lt_cv_aix_libpath_ -+fi -+ -+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" -+ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ else -+ if test "$host_cpu" = ia64; then -+ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' -+ allow_undefined_flag="-z nodefs" -+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" -+ else -+ # Determine the default libpath from the value encoded in an -+ # empty executable. -+ if test "${lt_cv_aix_libpath+set}" = set; then -+ aix_libpath=$lt_cv_aix_libpath -+else -+ if ${lt_cv_aix_libpath_+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ -+ lt_aix_libpath_sed=' -+ /Import File Strings/,/^$/ { -+ /^0/ { -+ s/^0 *\([^ ]*\) *$/\1/ -+ p -+ } -+ }' -+ lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ # Check for a 64-bit object if we didn't find anything. -+ if test -z "$lt_cv_aix_libpath_"; then -+ lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ fi -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ if test -z "$lt_cv_aix_libpath_"; then -+ lt_cv_aix_libpath_="/usr/lib:/lib" -+ fi -+ -+fi -+ -+ aix_libpath=$lt_cv_aix_libpath_ -+fi -+ -+ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" -+ # Warning - without using the other run time loading flags, -+ # -berok will link without error, but may produce a broken library. -+ no_undefined_flag=' ${wl}-bernotok' -+ allow_undefined_flag=' ${wl}-berok' -+ if test "$with_gnu_ld" = yes; then -+ # We only use this code for GNU lds that support --whole-archive. -+ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ else -+ # Exported symbols can be pulled into shared objects from archives -+ whole_archive_flag_spec='$convenience' -+ fi -+ archive_cmds_need_lc=yes -+ # This is similar to how AIX traditionally builds its shared libraries. -+ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -+ fi -+ fi -+ ;; -+ -+ amigaos*) -+ case $host_cpu in -+ powerpc) -+ # see comment about AmigaOS4 .so support -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ archive_expsym_cmds='' -+ ;; -+ m68k) -+ 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 -+ ;; -+ esac -+ ;; -+ -+ bsdi[45]*) -+ export_dynamic_flag_spec=-rdynamic -+ ;; -+ -+ cygwin* | mingw* | pw32* | cegcc*) -+ # When not using gcc, we currently assume that we are using -+ # Microsoft Visual C++. -+ # hardcode_libdir_flag_spec is actually meaningless, as there is -+ # no search path for DLLs. -+ case $cc_basename in -+ cl*) -+ # Native MSVC -+ hardcode_libdir_flag_spec=' ' -+ allow_undefined_flag=unsupported -+ always_export_symbols=yes -+ file_list_spec='@' -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' -+ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; -+ else -+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; -+ fi~ -+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ -+ linknames=' -+ # The linker will not automatically build a static lib if we build a DLL. -+ # _LT_TAGVAR(old_archive_from_new_cmds, )='true' -+ enable_shared_with_static_runtimes=yes -+ exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' -+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' -+ # Don't use ranlib -+ old_postinstall_cmds='chmod 644 $oldlib' -+ postlink_cmds='lt_outputfile="@OUTPUT@"~ -+ lt_tool_outputfile="@TOOL_OUTPUT@"~ -+ case $lt_outputfile in -+ *.exe|*.EXE) ;; -+ *) -+ lt_outputfile="$lt_outputfile.exe" -+ lt_tool_outputfile="$lt_tool_outputfile.exe" -+ ;; -+ esac~ -+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then -+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; -+ $RM "$lt_outputfile.manifest"; -+ fi' -+ ;; -+ *) -+ # Assume MSVC wrapper -+ hardcode_libdir_flag_spec=' ' -+ allow_undefined_flag=unsupported -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' -+ # The linker will automatically build a .lib file if we build a DLL. -+ old_archive_from_new_cmds='true' -+ # FIXME: Should let the user specify the lib program. -+ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' -+ enable_shared_with_static_runtimes=yes -+ ;; -+ esac -+ ;; -+ -+ darwin* | rhapsody*) -+ -+ -+ archive_cmds_need_lc=no -+ hardcode_direct=no -+ hardcode_automatic=yes -+ hardcode_shlibpath_var=unsupported -+ if test "$lt_cv_ld_force_load" = "yes"; then -+ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' -+ -+ else -+ whole_archive_flag_spec='' -+ fi -+ link_all_deplibs=yes -+ allow_undefined_flag="$_lt_dar_allow_undefined" -+ case $cc_basename in -+ ifort*) _lt_dar_can_shared=yes ;; -+ *) _lt_dar_can_shared=$GCC ;; -+ esac -+ if test "$_lt_dar_can_shared" = "yes"; then -+ output_verbose_link_cmd=func_echo_all -+ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" -+ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" -+ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" -+ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" -+ -+ else -+ ld_shlibs=no -+ fi -+ -+ ;; -+ -+ dgux*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_shlibpath_var=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* | dragonfly*) -+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec='-R$libdir' -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ ;; -+ -+ hpux9*) -+ if test "$GCC" = yes; then -+ archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ else -+ 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' -+ fi -+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator=: -+ hardcode_direct=yes -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L=yes -+ export_dynamic_flag_spec='${wl}-E' -+ ;; -+ -+ hpux10*) -+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then -+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ if test "$with_gnu_ld" = no; then -+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator=: -+ hardcode_direct=yes -+ hardcode_direct_absolute=yes -+ export_dynamic_flag_spec='${wl}-E' -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L=yes -+ fi -+ ;; -+ -+ hpux11*) -+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ esac -+ else -+ case $host_cpu in -+ hppa*64*) -+ archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ -+ # Older versions of the 11.00 compiler do not understand -b yet -+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -+$as_echo_n "checking if $CC understands -b... " >&6; } -+if ${lt_cv_prog_compiler__b+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_prog_compiler__b=no -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -b" -+ echo "$lt_simple_link_test_code" > conftest.$ac_ext -+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then -+ # The linker can only warn and ignore the option if not recognized -+ # So say no if there are warnings -+ if test -s conftest.err; then -+ # Append any errors to the config.log. -+ cat conftest.err 1>&5 -+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if diff conftest.exp conftest.er2 >/dev/null; then -+ lt_cv_prog_compiler__b=yes -+ fi -+ else -+ lt_cv_prog_compiler__b=yes -+ fi -+ fi -+ $RM -r conftest* -+ LDFLAGS="$save_LDFLAGS" -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -+$as_echo "$lt_cv_prog_compiler__b" >&6; } -+ -+if test x"$lt_cv_prog_compiler__b" = xyes; then -+ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+else -+ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+fi -+ -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' -+ hardcode_libdir_separator=: -+ -+ case $host_cpu in -+ hppa*64*|ia64*) -+ hardcode_direct=no -+ hardcode_shlibpath_var=no -+ ;; -+ *) -+ hardcode_direct=yes -+ hardcode_direct_absolute=yes -+ export_dynamic_flag_spec='${wl}-E' -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ hardcode_minus_L=yes -+ ;; -+ esac -+ fi -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ if test "$GCC" = yes; then -+ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ # Try to use the -exported_symbol ld option, if it does not -+ # work, assume that -exports_file does not work either and -+ # implicitly export all symbols. -+ # This should be the same for all languages, so no per-tag cache variable. -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -+$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -+if ${lt_cv_irix_exported_symbol+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+int foo (void) { return 0; } -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ lt_cv_irix_exported_symbol=yes -+else -+ lt_cv_irix_exported_symbol=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ LDFLAGS="$save_LDFLAGS" -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -+$as_echo "$lt_cv_irix_exported_symbol" >&6; } -+ if test "$lt_cv_irix_exported_symbol" = yes; then -+ archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' -+ fi -+ else -+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' -+ fi -+ archive_cmds_need_lc='no' -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator=: -+ inherit_rpath=yes -+ link_all_deplibs=yes -+ ;; -+ -+ netbsd* | netbsdelf*-gnu) -+ 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 $linker_flags' -+ hardcode_direct=yes -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ hardcode_libdir_separator=: -+ hardcode_shlibpath_var=no -+ ;; -+ -+ *nto* | *qnx*) -+ ;; -+ -+ openbsd*) -+ if test -f /usr/libexec/ld.so; then -+ hardcode_direct=yes -+ hardcode_shlibpath_var=no -+ hardcode_direct_absolute=yes -+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' -+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' -+ export_dynamic_flag_spec='${wl}-E' -+ else -+ case $host_os in -+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) -+ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec='-R$libdir' -+ ;; -+ *) -+ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' -+ ;; -+ esac -+ fi -+ else -+ ld_shlibs=no -+ fi -+ ;; -+ -+ os2*) -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_minus_L=yes -+ 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" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ allow_undefined_flag=' -expect_unresolved \*' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ fi -+ archive_cmds_need_lc='no' -+ 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} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' -+ else -+ allow_undefined_flag=' -expect_unresolved \*' -+ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ -+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' -+ -+ # Both c and cxx compiler support -rpath directly -+ hardcode_libdir_flag_spec='-rpath $libdir' -+ fi -+ archive_cmds_need_lc='no' -+ hardcode_libdir_separator=: -+ ;; -+ -+ solaris*) -+ no_undefined_flag=' -z defs' -+ if test "$GCC" = yes; then -+ wlarc='${wl}' -+ archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' -+ else -+ case `$CC -V 2>&1` in -+ *"Compilers 5.0"*) -+ wlarc='' -+ 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' -+ ;; -+ *) -+ wlarc='${wl}' -+ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' -+ ;; -+ esac -+ fi -+ hardcode_libdir_flag_spec='-R$libdir' -+ hardcode_shlibpath_var=no -+ case $host_os in -+ solaris2.[0-5] | solaris2.[0-5].*) ;; -+ *) -+ # The compiler driver will combine and reorder linker options, -+ # but understands `-z linker_flag'. GCC discards it without `$wl', -+ # but is careful enough not to reorder. -+ # Supported since Solaris 2.6 (maybe 2.5.1?) -+ if test "$GCC" = yes; then -+ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' -+ else -+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' -+ fi -+ ;; -+ 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) -+ case $host_vendor in -+ sni) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_direct=yes # is this really true??? -+ ;; -+ siemens) -+ ## LD is ld it makes a PLAMLIB -+ ## CC just makes a GrossModule. -+ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ reload_cmds='$CC -r -o $output$reload_objs' -+ hardcode_direct=no -+ ;; -+ motorola) -+ 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 -+ ;; -+ esac -+ 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' -+ ;; -+ -+ 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*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) -+ no_undefined_flag='${wl}-z,text' -+ archive_cmds_need_lc=no -+ hardcode_shlibpath_var=no -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ ;; -+ -+ sysv5* | sco3.2v5* | sco5v6*) -+ # Note: We can NOT use -z defs as we might desire, because we do not -+ # link with -lc, and that would cause any symbols used from libc to -+ # always be unresolved, which means just about no library would -+ # ever link correctly. If we're not using GNU ld we use -z text -+ # though, which does catch some bad symbols but isn't as heavy-handed -+ # as -z defs. -+ no_undefined_flag='${wl}-z,text' -+ allow_undefined_flag='${wl}-z,nodefs' -+ archive_cmds_need_lc=no -+ hardcode_shlibpath_var=no -+ hardcode_libdir_flag_spec='${wl}-R,$libdir' -+ hardcode_libdir_separator=':' -+ link_all_deplibs=yes -+ export_dynamic_flag_spec='${wl}-Bexport' -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ ;; -+ -+ uts4*) -+ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ hardcode_libdir_flag_spec='-L$libdir' -+ hardcode_shlibpath_var=no -+ ;; -+ -+ *) -+ ld_shlibs=no -+ ;; -+ esac -+ -+ if test x$host_vendor = xsni; then -+ case $host in -+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -+ export_dynamic_flag_spec='${wl}-Blargedynsym' -+ ;; -+ esac -+ fi -+ fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -+$as_echo "$ld_shlibs" >&6; } -+test "$ld_shlibs" = no && can_build_shared=no -+ -+with_gnu_ld=$with_gnu_ld -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+# -+# Do we need to explicitly link libc? -+# -+case "x$archive_cmds_need_lc" in -+x|xyes) -+ # Assume -lc should be added -+ archive_cmds_need_lc=yes -+ -+ 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. -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -+$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -+if ${lt_cv_archive_cmds_need_lc+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ $RM conftest* -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 -+ (eval $ac_compile) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } 2>conftest.err; then -+ soname=conftest -+ lib=conftest -+ libobjs=conftest.$ac_objext -+ deplibs= -+ wl=$lt_prog_compiler_wl -+ pic_flag=$lt_prog_compiler_pic -+ compiler_flags=-v -+ linker_flags=-v -+ verstring= -+ output_objdir=. -+ libname=conftest -+ lt_save_allow_undefined_flag=$allow_undefined_flag -+ allow_undefined_flag= -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 -+ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } -+ then -+ lt_cv_archive_cmds_need_lc=no -+ else -+ lt_cv_archive_cmds_need_lc=yes -+ fi -+ allow_undefined_flag=$lt_save_allow_undefined_flag -+ else -+ cat conftest.err 1>&5 -+ fi -+ $RM conftest* -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -+$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } -+ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc -+ ;; -+ esac -+ fi -+ ;; -+esac -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -+$as_echo_n "checking dynamic linker characteristics... " >&6; } -+ -+if test "$GCC" = yes; then -+ case $host_os in -+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; -+ *) lt_awk_arg="/^libraries:/" ;; -+ esac -+ case $host_os in -+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; -+ *) lt_sed_strip_eq="s,=/,/,g" ;; -+ esac -+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` -+ case $lt_search_path_spec in -+ *\;*) -+ # if the path contains ";" then we assume it to be the separator -+ # otherwise default to the standard path separator (i.e. ":") - it is -+ # assumed that no part of a normal pathname contains ";" but that should -+ # okay in the real world where ";" in dirpaths is itself problematic. -+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` -+ ;; -+ *) -+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` -+ ;; -+ esac -+ # Ok, now we have the path, separated by spaces, we can step through it -+ # and add multilib dir if necessary. -+ lt_tmp_lt_search_path_spec= -+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` -+ for lt_sys_path in $lt_search_path_spec; do -+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then -+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" -+ else -+ test -d "$lt_sys_path" && \ -+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" -+ fi -+ done -+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -+BEGIN {RS=" "; FS="/|\n";} { -+ lt_foo=""; -+ lt_count=0; -+ for (lt_i = NF; lt_i > 0; lt_i--) { -+ if ($lt_i != "" && $lt_i != ".") { -+ if ($lt_i == "..") { -+ lt_count++; -+ } else { -+ if (lt_count == 0) { -+ lt_foo="/" $lt_i lt_foo; -+ } else { -+ lt_count--; -+ } -+ } -+ } -+ } -+ if (lt_foo != "") { lt_freq[lt_foo]++; } -+ if (lt_freq[lt_foo] == 1) { print lt_foo; } -+}'` -+ # AWK program above erroneously prepends '/' to C:/dos/paths -+ # for these hosts. -+ case $host_os in -+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ -+ $SED 's,/\([A-Za-z]:\),\1,g'` ;; -+ esac -+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -+else -+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -+fi -+library_names_spec= -+libname_spec='lib$name' -+soname_spec= -+shrext_cmds=".so" -+postinstall_cmds= -+postuninstall_cmds= -+finish_cmds= -+finish_eval= -+shlibpath_var= -+shlibpath_overrides_runpath=unknown -+version_type=none -+dynamic_linker="$host_os ld.so" -+sys_lib_dlsearch_path_spec="/lib /usr/lib" -+need_lib_prefix=unknown -+hardcode_into_libs=no -+ -+# when you set need_version to no, make sure it does not cause -set_version -+# flags to be left without arguments -+need_version=unknown -+ -+case $host_os in -+aix3*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' -+ shlibpath_var=LIBPATH -+ -+ # AIX 3 has no versioning support, so we append a major version to the name. -+ soname_spec='${libname}${release}${shared_ext}$major' -+ ;; -+ -+aix[4-9]*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ hardcode_into_libs=yes -+ if test "$host_cpu" = ia64; then -+ # AIX 5 supports IA64 -+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' -+ shlibpath_var=LD_LIBRARY_PATH -+ else -+ # With GCC up to 2.95.x, collect2 would create an import file -+ # for dependence libraries. The import file would start with -+ # the line `#! .'. This would cause the generated library to -+ # depend on `.', always an invalid library. This was fixed in -+ # development snapshots of GCC prior to 3.0. -+ case $host_os in -+ aix4 | aix4.[01] | aix4.[01].*) -+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' -+ echo ' yes ' -+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then -+ : -+ else -+ can_build_shared=no -+ fi -+ ;; -+ esac -+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct -+ # soname into executable. Probably we can add versioning support to -+ # collect2, so additional links can be useful in future. -+ if test "$aix_use_runtimelinking" = yes; then -+ # If using run time linking (on AIX 4.2 or later) use lib.so -+ # instead of lib.a to let people know that these are not -+ # typical AIX shared libraries. -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ else -+ # We preserve .a as extension for shared libraries through AIX4.2 -+ # and later when we are not doing run time linking. -+ library_names_spec='${libname}${release}.a $libname.a' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ fi -+ shlibpath_var=LIBPATH -+ fi -+ ;; -+ -+amigaos*) -+ case $host_cpu in -+ powerpc) -+ # Since July 2007 AmigaOS4 officially supports .so libraries. -+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ ;; -+ m68k) -+ library_names_spec='$libname.ixlibrary $libname.a' -+ # Create ${libname}_ixlibrary.a entries in /sys/libs. -+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' -+ ;; -+ esac -+ ;; -+ -+beos*) -+ library_names_spec='${libname}${shared_ext}' -+ dynamic_linker="$host_os ld.so" -+ shlibpath_var=LIBRARY_PATH -+ ;; -+ -+bsdi[45]*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" -+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" -+ # the default ld.so.conf also contains /usr/contrib/lib and -+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow -+ # libtool to hard-code these into programs -+ ;; -+ -+cygwin* | mingw* | pw32* | cegcc*) -+ version_type=windows -+ shrext_cmds=".dll" -+ need_version=no -+ need_lib_prefix=no -+ -+ case $GCC,$cc_basename in -+ yes,*) -+ # gcc -+ library_names_spec='$libname.dll.a' -+ # DLL is installed to $(libdir)/../bin by postinstall_cmds -+ postinstall_cmds='base_file=`basename \${file}`~ -+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ -+ dldir=$destdir/`dirname \$dlpath`~ -+ test -d \$dldir || mkdir -p \$dldir~ -+ $install_prog $dir/$dlname \$dldir/$dlname~ -+ chmod a+x \$dldir/$dlname~ -+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then -+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; -+ fi' -+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ -+ dlpath=$dir/\$dldll~ -+ $RM \$dlpath' -+ shlibpath_overrides_runpath=yes -+ -+ case $host_os in -+ cygwin*) -+ # Cygwin DLLs use 'cyg' prefix rather than 'lib' -+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -+ -+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" -+ ;; -+ mingw* | cegcc*) -+ # MinGW DLLs use traditional 'lib' prefix -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -+ ;; -+ pw32*) -+ # pw32 DLLs use 'pw' prefix rather than 'lib' -+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -+ ;; -+ esac -+ dynamic_linker='Win32 ld.exe' -+ ;; -+ -+ *,cl*) -+ # Native MSVC -+ libname_spec='$name' -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' -+ library_names_spec='${libname}.dll.lib' -+ -+ case $build_os in -+ mingw*) -+ sys_lib_search_path_spec= -+ lt_save_ifs=$IFS -+ IFS=';' -+ for lt_path in $LIB -+ do -+ IFS=$lt_save_ifs -+ # Let DOS variable expansion print the short 8.3 style file name. -+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` -+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" -+ done -+ IFS=$lt_save_ifs -+ # Convert to MSYS style. -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` -+ ;; -+ cygwin*) -+ # Convert to unix form, then to dos form, then back to unix form -+ # but this time dos style (no spaces!) so that the unix form looks -+ # like /cygdrive/c/PROGRA~1:/cygdr... -+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` -+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` -+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -+ ;; -+ *) -+ sys_lib_search_path_spec="$LIB" -+ if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then -+ # It is most probably a Windows format PATH. -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` -+ else -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -+ fi -+ # FIXME: find the short name or the path components, as spaces are -+ # common. (e.g. "Program Files" -> "PROGRA~1") -+ ;; -+ esac -+ -+ # DLL is installed to $(libdir)/../bin by postinstall_cmds -+ postinstall_cmds='base_file=`basename \${file}`~ -+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ -+ dldir=$destdir/`dirname \$dlpath`~ -+ test -d \$dldir || mkdir -p \$dldir~ -+ $install_prog $dir/$dlname \$dldir/$dlname' -+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ -+ dlpath=$dir/\$dldll~ -+ $RM \$dlpath' -+ shlibpath_overrides_runpath=yes -+ dynamic_linker='Win32 link.exe' -+ ;; -+ -+ *) -+ # Assume MSVC wrapper -+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' -+ dynamic_linker='Win32 ld.exe' -+ ;; -+ esac -+ # FIXME: first we should search . and the directory the executable is in -+ shlibpath_var=PATH -+ ;; -+ -+darwin* | rhapsody*) -+ dynamic_linker="$host_os dyld" -+ version_type=darwin -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' -+ soname_spec='${libname}${release}${major}$shared_ext' -+ shlibpath_overrides_runpath=yes -+ shlibpath_var=DYLD_LIBRARY_PATH -+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -+ -+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" -+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' -+ ;; -+ -+dgux*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ ;; -+ -+freebsd* | dragonfly*) -+ # DragonFly does not have aout. When/if they implement a new -+ # versioning mechanism, adjust this. -+ if test -x /usr/bin/objformat; then -+ objformat=`/usr/bin/objformat` -+ else -+ case $host_os in -+ freebsd[23].*) objformat=aout ;; -+ *) objformat=elf ;; -+ esac -+ fi -+ version_type=freebsd-$objformat -+ case $version_type in -+ freebsd-elf*) -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' -+ need_version=no -+ need_lib_prefix=no -+ ;; -+ freebsd-*) -+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' -+ need_version=yes -+ ;; -+ esac -+ shlibpath_var=LD_LIBRARY_PATH -+ case $host_os in -+ freebsd2.*) -+ shlibpath_overrides_runpath=yes -+ ;; -+ freebsd3.[01]* | freebsdelf3.[01]*) -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ -+ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ *) # from 4.6 on, and DragonFly -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ esac -+ ;; -+ -+gnu*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ -+haiku*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ dynamic_linker="$host_os runtime_loader" -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' -+ hardcode_into_libs=yes -+ ;; -+ -+hpux9* | hpux10* | hpux11*) -+ # Give a soname corresponding to the major version so that dld.sl refuses to -+ # link against other versions. -+ version_type=sunos -+ need_lib_prefix=no -+ need_version=no -+ case $host_cpu in -+ ia64*) -+ shrext_cmds='.so' -+ hardcode_into_libs=yes -+ dynamic_linker="$host_os dld.so" -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ if test "X$HPUX_IA64_MODE" = X32; then -+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" -+ else -+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" -+ fi -+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -+ ;; -+ hppa*64*) -+ shrext_cmds='.sl' -+ hardcode_into_libs=yes -+ dynamic_linker="$host_os dld.sl" -+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH -+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" -+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -+ ;; -+ *) -+ shrext_cmds='.sl' -+ dynamic_linker="$host_os dld.sl" -+ shlibpath_var=SHLIB_PATH -+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ ;; -+ esac -+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ... -+ postinstall_cmds='chmod 555 $lib' -+ # or fails outright, so override atomically: -+ install_override_mode=555 -+ ;; -+ -+interix[3-9]*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ -+irix5* | irix6* | nonstopux*) -+ case $host_os in -+ nonstopux*) version_type=nonstopux ;; -+ *) -+ if test "$lt_cv_prog_gnu_ld" = yes; then -+ version_type=linux # correct to gnu/linux during the next big refactor -+ else -+ version_type=irix -+ fi ;; -+ esac -+ need_lib_prefix=no -+ need_version=no -+ soname_spec='${libname}${release}${shared_ext}$major' -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' -+ case $host_os in -+ irix5* | nonstopux*) -+ libsuff= shlibsuff= -+ ;; -+ *) -+ case $LD in # libtool.m4 will add one of these switches to LD -+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") -+ libsuff= shlibsuff= libmagic=32-bit;; -+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") -+ libsuff=32 shlibsuff=N32 libmagic=N32;; -+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") -+ libsuff=64 shlibsuff=64 libmagic=64-bit;; -+ *) libsuff= shlibsuff= libmagic=never-match;; -+ esac -+ ;; -+ esac -+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH -+ shlibpath_overrides_runpath=no -+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" -+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" -+ hardcode_into_libs=yes -+ ;; -+ -+# No shared lib support for Linux oldld, aout, or coff. -+linux*oldld* | linux*aout* | linux*coff*) -+ dynamic_linker=no -+ ;; -+ -+# This must be glibc/ELF. -+linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ -+ # Some binutils ld are patched to set DT_RUNPATH -+ if ${lt_cv_shlibpath_overrides_runpath+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ lt_cv_shlibpath_overrides_runpath=no -+ save_LDFLAGS=$LDFLAGS -+ save_libdir=$libdir -+ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ -+ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : -+ lt_cv_shlibpath_overrides_runpath=yes -+fi -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ LDFLAGS=$save_LDFLAGS -+ libdir=$save_libdir -+ -+fi -+ -+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath -+ -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ hardcode_into_libs=yes -+ -+ # Append ld.so.conf contents to the search path -+ if test -f /etc/ld.so.conf; then -+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` -+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+netbsd*) -+ version_type=sunos -+ need_lib_prefix=no -+ need_version=no -+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -+ dynamic_linker='NetBSD (a.out) ld.so' -+ else -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ dynamic_linker='NetBSD ld.elf_so' -+ fi -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ -+newsos6) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ ;; -+ -+*nto* | *qnx*) -+ version_type=qnx -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='ldqnx.so' -+ ;; -+ -+openbsd*) -+ version_type=sunos -+ sys_lib_dlsearch_path_spec="/usr/lib" -+ need_lib_prefix=no -+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. -+ case $host_os in -+ openbsd3.3 | openbsd3.3.*) need_version=yes ;; -+ *) need_version=no ;; -+ esac -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ case $host_os in -+ openbsd2.[89] | openbsd2.[89].*) -+ shlibpath_overrides_runpath=no -+ ;; -+ *) -+ shlibpath_overrides_runpath=yes -+ ;; -+ esac -+ else -+ shlibpath_overrides_runpath=yes -+ fi -+ ;; -+ -+os2*) -+ libname_spec='$name' -+ shrext_cmds=".dll" -+ need_lib_prefix=no -+ library_names_spec='$libname${shared_ext} $libname.a' -+ dynamic_linker='OS/2 ld.exe' -+ shlibpath_var=LIBPATH -+ ;; -+ -+osf3* | osf4* | osf5*) -+ version_type=osf -+ need_lib_prefix=no -+ need_version=no -+ soname_spec='${libname}${release}${shared_ext}$major' -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ shlibpath_var=LD_LIBRARY_PATH -+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" -+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" -+ ;; -+ -+rdos*) -+ dynamic_linker=no -+ ;; -+ -+solaris*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ # ldd complains unless libraries are executable -+ postinstall_cmds='chmod +x $lib' -+ ;; -+ -+sunos4*) -+ version_type=sunos -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' -+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ if test "$with_gnu_ld" = yes; then -+ need_lib_prefix=no -+ fi -+ need_version=yes -+ ;; -+ -+sysv4 | sysv4.3*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ case $host_vendor in -+ sni) -+ shlibpath_overrides_runpath=no -+ need_lib_prefix=no -+ runpath_var=LD_RUN_PATH -+ ;; -+ siemens) -+ need_lib_prefix=no -+ ;; -+ motorola) -+ need_lib_prefix=no -+ need_version=no -+ shlibpath_overrides_runpath=no -+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' -+ ;; -+ esac -+ ;; -+ -+sysv4*MP*) -+ if test -d /usr/nec ;then -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' -+ soname_spec='$libname${shared_ext}.$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ fi -+ ;; -+ -+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) -+ version_type=freebsd-elf -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ if test "$with_gnu_ld" = yes; then -+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' -+ else -+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' -+ case $host_os in -+ sco3.2v5*) -+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" -+ ;; -+ esac -+ fi -+ sys_lib_dlsearch_path_spec='/usr/lib' -+ ;; -+ -+tpf*) -+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux. -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ -+uts4*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ ;; -+ -+*) -+ dynamic_linker=no -+ ;; -+esac -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -+$as_echo "$dynamic_linker" >&6; } -+test "$dynamic_linker" = no && can_build_shared=no -+ -+variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -+if test "$GCC" = yes; then -+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -+fi -+ -+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then -+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -+fi -+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then -+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -+$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -+hardcode_action= -+if test -n "$hardcode_libdir_flag_spec" || -+ test -n "$runpath_var" || -+ test "X$hardcode_automatic" = "Xyes" ; then -+ -+ # We can hardcode non-existent 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 "$_LT_TAGVAR(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 -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -+$as_echo "$hardcode_action" >&6; } -+ -+if test "$hardcode_action" = relink || -+ test "$inherit_rpath" = yes; then -+ # Fast installation is not supported -+ enable_fast_install=no -+elif test "$shlibpath_overrides_runpath" = yes || -+ test "$enable_shared" = no; then -+ # Fast installation is not necessary -+ enable_fast_install=needless -+fi -+ -+ -+ -+ -+ -+ -+ if test "x$enable_dlopen" != xyes; then -+ enable_dlopen=unknown -+ enable_dlopen_self=unknown -+ enable_dlopen_self_static=unknown -+else -+ lt_cv_dlopen=no -+ lt_cv_dlopen_libs= -+ -+ case $host_os in -+ beos*) -+ lt_cv_dlopen="load_add_on" -+ lt_cv_dlopen_libs= -+ lt_cv_dlopen_self=yes -+ ;; -+ -+ mingw* | pw32* | cegcc*) -+ lt_cv_dlopen="LoadLibrary" -+ lt_cv_dlopen_libs= -+ ;; -+ -+ cygwin*) -+ lt_cv_dlopen="dlopen" -+ lt_cv_dlopen_libs= -+ ;; -+ -+ darwin*) -+ # if libdl is installed we need to link against it -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -+$as_echo_n "checking for dlopen in -ldl... " >&6; } -+if ${ac_cv_lib_dl_dlopen+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldl $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen (); -+int -+main () -+{ -+return dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_dl_dlopen=yes -+else -+ ac_cv_lib_dl_dlopen=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -+$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -+if test "x$ac_cv_lib_dl_dlopen" = xyes; then : -+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -+else -+ -+ lt_cv_dlopen="dyld" -+ lt_cv_dlopen_libs= -+ lt_cv_dlopen_self=yes -+ -+fi -+ -+ ;; -+ -+ *) -+ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -+if test "x$ac_cv_func_shl_load" = xyes; then : -+ lt_cv_dlopen="shl_load" -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -+$as_echo_n "checking for shl_load in -ldld... " >&6; } -+if ${ac_cv_lib_dld_shl_load+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldld $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char shl_load (); -+int -+main () -+{ -+return shl_load (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_dld_shl_load=yes -+else -+ ac_cv_lib_dld_shl_load=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -+$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -+if test "x$ac_cv_lib_dld_shl_load" = xyes; then : -+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -+else -+ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -+if test "x$ac_cv_func_dlopen" = xyes; then : -+ lt_cv_dlopen="dlopen" -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -+$as_echo_n "checking for dlopen in -ldl... " >&6; } -+if ${ac_cv_lib_dl_dlopen+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldl $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen (); -+int -+main () -+{ -+return dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_dl_dlopen=yes -+else -+ ac_cv_lib_dl_dlopen=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -+$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -+if test "x$ac_cv_lib_dl_dlopen" = xyes; then : -+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -+$as_echo_n "checking for dlopen in -lsvld... " >&6; } -+if ${ac_cv_lib_svld_dlopen+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-lsvld $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dlopen (); -+int -+main () -+{ -+return dlopen (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_svld_dlopen=yes -+else -+ ac_cv_lib_svld_dlopen=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -+$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -+if test "x$ac_cv_lib_svld_dlopen" = xyes; then : -+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -+else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -+$as_echo_n "checking for dld_link in -ldld... " >&6; } -+if ${ac_cv_lib_dld_dld_link+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_check_lib_save_LIBS=$LIBS -+LIBS="-ldld $LIBS" -+cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+/* Override any GCC internal prototype to avoid an error. -+ Use char because int might match the return type of a GCC -+ builtin and then its argument prototype would still apply. */ -+#ifdef __cplusplus -+extern "C" -+#endif -+char dld_link (); -+int -+main () -+{ -+return dld_link (); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_lib_dld_dld_link=yes -+else -+ ac_cv_lib_dld_dld_link=no -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+LIBS=$ac_check_lib_save_LIBS -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -+$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -+if test "x$ac_cv_lib_dld_dld_link" = xyes; then : -+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ -+fi -+ -+ ;; -+ esac -+ -+ if test "x$lt_cv_dlopen" != xno; then -+ enable_dlopen=yes -+ else -+ enable_dlopen=no -+ fi -+ -+ case $lt_cv_dlopen in -+ dlopen) -+ save_CPPFLAGS="$CPPFLAGS" -+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" -+ -+ save_LDFLAGS="$LDFLAGS" -+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" -+ -+ save_LIBS="$LIBS" -+ LIBS="$lt_cv_dlopen_libs $LIBS" -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -+$as_echo_n "checking whether a program can dlopen itself... " >&6; } -+if ${lt_cv_dlopen_self+:} false; then : -+ $as_echo_n "(cached) " >&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 <<_LT_EOF -+#line $LINENO "configure" -+#include "confdefs.h" -+ -+#if HAVE_DLFCN_H -+#include -+#endif -+ -+#include -+ -+#ifdef RTLD_GLOBAL -+# define LT_DLGLOBAL RTLD_GLOBAL -+#else -+# ifdef DL_GLOBAL -+# define LT_DLGLOBAL DL_GLOBAL -+# else -+# define LT_DLGLOBAL 0 -+# endif -+#endif -+ -+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we -+ find out it does not work in some platform. */ -+#ifndef LT_DLLAZY_OR_NOW -+# ifdef RTLD_LAZY -+# define LT_DLLAZY_OR_NOW RTLD_LAZY -+# else -+# ifdef DL_LAZY -+# define LT_DLLAZY_OR_NOW DL_LAZY -+# else -+# ifdef RTLD_NOW -+# define LT_DLLAZY_OR_NOW RTLD_NOW -+# else -+# ifdef DL_NOW -+# define LT_DLLAZY_OR_NOW DL_NOW -+# else -+# define LT_DLLAZY_OR_NOW 0 -+# endif -+# endif -+# endif -+# endif -+#endif -+ -+/* When -fvisbility=hidden is used, assume the code has been annotated -+ correspondingly for the symbols needed. */ -+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -+int fnord () __attribute__((visibility("default"))); -+#endif -+ -+int fnord () { return 42; } -+int main () -+{ -+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); -+ int status = $lt_dlunknown; -+ -+ if (self) -+ { -+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -+ else -+ { -+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -+ else puts (dlerror ()); -+ } -+ /* dlclose (self); */ -+ } -+ else -+ puts (dlerror ()); -+ -+ return status; -+} -+_LT_EOF -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then -+ (./conftest; exit; ) >&5 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_dlunknown|x*) lt_cv_dlopen_self=no ;; -+ esac -+ else : -+ # compilation failed -+ lt_cv_dlopen_self=no -+ fi -+fi -+rm -fr conftest* -+ -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -+$as_echo "$lt_cv_dlopen_self" >&6; } -+ -+ if test "x$lt_cv_dlopen_self" = xyes; then -+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -+$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -+if ${lt_cv_dlopen_self_static+:} false; then : -+ $as_echo_n "(cached) " >&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 <<_LT_EOF -+#line $LINENO "configure" -+#include "confdefs.h" -+ -+#if HAVE_DLFCN_H -+#include -+#endif -+ -+#include -+ -+#ifdef RTLD_GLOBAL -+# define LT_DLGLOBAL RTLD_GLOBAL -+#else -+# ifdef DL_GLOBAL -+# define LT_DLGLOBAL DL_GLOBAL -+# else -+# define LT_DLGLOBAL 0 -+# endif -+#endif -+ -+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we -+ find out it does not work in some platform. */ -+#ifndef LT_DLLAZY_OR_NOW -+# ifdef RTLD_LAZY -+# define LT_DLLAZY_OR_NOW RTLD_LAZY -+# else -+# ifdef DL_LAZY -+# define LT_DLLAZY_OR_NOW DL_LAZY -+# else -+# ifdef RTLD_NOW -+# define LT_DLLAZY_OR_NOW RTLD_NOW -+# else -+# ifdef DL_NOW -+# define LT_DLLAZY_OR_NOW DL_NOW -+# else -+# define LT_DLLAZY_OR_NOW 0 -+# endif -+# endif -+# endif -+# endif -+#endif -+ -+/* When -fvisbility=hidden is used, assume the code has been annotated -+ correspondingly for the symbols needed. */ -+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -+int fnord () __attribute__((visibility("default"))); -+#endif -+ -+int fnord () { return 42; } -+int main () -+{ -+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); -+ int status = $lt_dlunknown; -+ -+ if (self) -+ { -+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -+ else -+ { -+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -+ else puts (dlerror ()); -+ } -+ /* dlclose (self); */ -+ } -+ else -+ puts (dlerror ()); -+ -+ return status; -+} -+_LT_EOF -+ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 -+ (eval $ac_link) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then -+ (./conftest; exit; ) >&5 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_dlunknown|x*) lt_cv_dlopen_self_static=no ;; -+ esac -+ else : -+ # compilation failed -+ lt_cv_dlopen_self_static=no -+ fi -+fi -+rm -fr conftest* -+ -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -+$as_echo "$lt_cv_dlopen_self_static" >&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 -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+striplib= -+old_striplib= -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -+$as_echo_n "checking whether stripping libraries is possible... " >&6; } -+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" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+else -+# FIXME - insert some real tests, host_os isn't really good enough -+ case $host_os in -+ darwin*) -+ if test -n "$STRIP" ; then -+ striplib="$STRIP -x" -+ old_striplib="$STRIP -S" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -+$as_echo "yes" >&6; } -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ fi -+ ;; -+ *) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -+$as_echo "no" >&6; } -+ ;; -+ esac -+fi -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ # Report which library types will actually be built -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -+$as_echo_n "checking if libtool supports shared libraries... " >&6; } -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -+$as_echo "$can_build_shared" >&6; } -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -+$as_echo_n "checking whether to build shared libraries... " >&6; } -+ test "$can_build_shared" = "no" && enable_shared=no -+ -+ # On AIX, shared libraries and static libraries use the same namespace, and -+ # are all built from PIC. -+ case $host_os in -+ aix3*) -+ test "$enable_shared" = yes && enable_static=no -+ if test -n "$RANLIB"; then -+ archive_cmds="$archive_cmds~\$RANLIB \$lib" -+ postinstall_cmds='$RANLIB $lib' -+ fi -+ ;; -+ -+ aix[4-9]*) -+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then -+ test "$enable_shared" = yes && enable_static=no -+ fi -+ ;; -+ esac -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -+$as_echo "$enable_shared" >&6; } -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -+$as_echo_n "checking whether to build static libraries... " >&6; } -+ # Make sure either enable_shared or enable_static is yes. -+ test "$enable_shared" = yes || enable_static=yes -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -+$as_echo "$enable_static" >&6; } -+ -+ -+ -+ -+fi -+ac_ext=c -+ac_cpp='$CPP $CPPFLAGS' -+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -+ac_compiler_gnu=$ac_cv_c_compiler_gnu -+ -+CC="$lt_save_CC" -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ ac_config_commands="$ac_config_commands libtool" -+ -+ -+ -+ -+# Only expand once: -+ -+ -+ -+ -+# Checks for header files. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -+$as_echo_n "checking for ANSI C header files... " >&6; } -+if ${ac_cv_header_stdc+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+#include -+#include -+#include -+ -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_header_stdc=yes -+else -+ ac_cv_header_stdc=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ -+if test $ac_cv_header_stdc = yes; then -+ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "memchr" >/dev/null 2>&1; then : -+ -+else -+ 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+ -+_ACEOF -+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | -+ $EGREP "free" >/dev/null 2>&1; then : -+ -+else -+ 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 confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+#include -+#if ((' ' & 0x0FF) == 0x020) -+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -+#else -+# define ISLOWER(c) \ -+ (('a' <= (c) && (c) <= 'i') \ -+ || ('j' <= (c) && (c) <= 'r') \ -+ || ('s' <= (c) && (c) <= 'z')) -+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -+#endif -+ -+#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)) -+ return 2; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_run "$LINENO"; then : -+ -+else -+ ac_cv_header_stdc=no -+fi -+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ -+ conftest.$ac_objext conftest.beam conftest.$ac_ext -+fi -+ -+fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -+$as_echo "$ac_cv_header_stdc" >&6; } -+if test $ac_cv_header_stdc = yes; then -+ -+$as_echo "#define STDC_HEADERS 1" >>confdefs.h -+ -+fi -+ -+for ac_header in ctype.h limits.h stdlib.h wctype.h -+do : -+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -+ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" -+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+ -+done -+ -+ -+# Checks for typedefs, structures, and compiler characteristics. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -+$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -+if ${ac_cv_c_const+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+ -+int -+main () -+{ -+/* FIXME: Include the comments suggested by Paul. */ -+#ifndef __cplusplus -+ /* Ultrix mips cc rejects this. */ -+ typedef int charset[2]; -+ const charset cs; -+ /* SunOS 4.1.1 cc rejects this. */ -+ char const *const *pcpcc; -+ char **ppc; -+ /* NEC SVR4.0.2 mips cc rejects this. */ -+ struct point {int x, y;}; -+ static struct point const zero = {0,0}; -+ /* AIX XL C 1.02.0.0 rejects this. -+ It does not let you subtract one const X* pointer from another in -+ an arm of an if-expression whose if-part is not a constant -+ expression */ -+ const char *g = "string"; -+ pcpcc = &g + (g ? g-g : 0); -+ /* HPUX 7.0 cc rejects these. */ -+ ++pcpcc; -+ ppc = (char**) pcpcc; -+ pcpcc = (char const *const *) ppc; -+ { /* SCO 3.2v4 cc rejects this. */ -+ char *t; -+ char const *s = 0 ? (char *) 0 : (char const *) 0; -+ -+ *t++ = 0; -+ if (s) return 0; -+ } -+ { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ -+ int x[] = {25, 17}; -+ const int *foo = &x[0]; -+ ++foo; -+ } -+ { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ -+ typedef const int *iptr; -+ iptr p = 0; -+ ++p; -+ } -+ { /* AIX XL C 1.02.0.0 rejects this saying -+ "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ -+ struct s { int j; const int *ap[3]; }; -+ struct s *b; b->j = 5; -+ } -+ { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ -+ const int foo = 10; -+ if (!foo) return 0; -+ } -+ return !cs[0] && !zero.x; -+#endif -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_c_const=yes -+else -+ ac_cv_c_const=no -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -+$as_echo "$ac_cv_c_const" >&6; } -+if test $ac_cv_c_const = no; then -+ -+$as_echo "#define const /**/" >>confdefs.h -+ -+fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5 -+$as_echo_n "checking for inline... " >&6; } -+if ${ac_cv_c_inline+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_c_inline=no -+for ac_kw in inline __inline__ __inline; do -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#ifndef __cplusplus -+typedef int foo_t; -+static $ac_kw foo_t static_foo () {return 0; } -+$ac_kw foo_t foo () {return 0; } -+#endif -+ -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_c_inline=$ac_kw -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ test "$ac_cv_c_inline" != no && break -+done -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_inline" >&5 -+$as_echo "$ac_cv_c_inline" >&6; } -+ -+case $ac_cv_c_inline in -+ inline | yes) ;; -+ *) -+ case $ac_cv_c_inline in -+ no) ac_val=;; -+ *) ac_val=$ac_cv_c_inline;; -+ esac -+ cat >>confdefs.h <<_ACEOF -+#ifndef __cplusplus -+#define inline $ac_val -+#endif -+_ACEOF -+ ;; -+esac -+ -+ac_fn_c_check_type "$LINENO" "mode_t" "ac_cv_type_mode_t" "$ac_includes_default" -+if test "x$ac_cv_type_mode_t" = xyes; then : -+ -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define mode_t int -+_ACEOF -+ -+fi -+ -+ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -+if test "x$ac_cv_type_off_t" = xyes; then : -+ -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define off_t long int -+_ACEOF -+ -+fi -+ -+ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -+if test "x$ac_cv_type_size_t" = xyes; then : -+ -+else -+ -+cat >>confdefs.h <<_ACEOF -+#define size_t unsigned int -+_ACEOF -+ -+fi -+ -+# The cast to long int works around a bug in the HP C Compiler -+# version HP92453-01 B.11.11.23709.GP, which incorrectly rejects -+# declarations like `int a3[[(sizeof (unsigned char)) >= 0]];'. -+# This bug is HP SR number 8606223364. -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking size of off_t" >&5 -+$as_echo_n "checking size of off_t... " >&6; } -+if ${ac_cv_sizeof_off_t+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if ac_fn_c_compute_int "$LINENO" "(long int) (sizeof (off_t))" "ac_cv_sizeof_off_t" "$ac_includes_default"; then : -+ -+else -+ if test "$ac_cv_type_off_t" = yes; then -+ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -+$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -+as_fn_error 77 "cannot compute sizeof (off_t) -+See \`config.log' for more details" "$LINENO" 5; } -+ else -+ ac_cv_sizeof_off_t=0 -+ fi -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sizeof_off_t" >&5 -+$as_echo "$ac_cv_sizeof_off_t" >&6; } -+ -+ -+ -+cat >>confdefs.h <<_ACEOF -+#define SIZEOF_OFF_T $ac_cv_sizeof_off_t -+_ACEOF -+ -+ -+for ac_func in tolower towlower -+do : -+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -+if eval test \"x\$"$as_ac_var"\" = x"yes"; then : -+ cat >>confdefs.h <<_ACEOF -+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -+_ACEOF -+ -+fi -+done -+ -+ -+# largefile support -+# Check whether --enable-largefile was given. -+if test "${enable_largefile+set}" = set; then : -+ enableval=$enable_largefile; -+fi -+ -+if test "$enable_largefile" != no; then -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 -+$as_echo_n "checking for special C compiler options needed for large files... " >&6; } -+if ${ac_cv_sys_largefile_CC+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ ac_cv_sys_largefile_CC=no -+ if test "$GCC" != yes; then -+ ac_save_CC=$CC -+ while :; do -+ # IRIX 6.2 and later do not support large files by default, -+ # so use the C compiler's -n32 option if that helps. -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+ /* Check that off_t can represent 2**63 - 1 correctly. -+ We can't simply define LARGE_OFF_T to be 9223372036854775807, -+ since some C++ compilers masquerading as C compilers -+ incorrectly reject 9223372036854775807. */ -+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) -+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 -+ && LARGE_OFF_T % 2147483647 == 1) -+ ? 1 : -1]; -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+ if ac_fn_c_try_compile "$LINENO"; then : -+ break -+fi -+rm -f core conftest.err conftest.$ac_objext -+ CC="$CC -n32" -+ if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_sys_largefile_CC=' -n32'; break -+fi -+rm -f core conftest.err conftest.$ac_objext -+ break -+ done -+ CC=$ac_save_CC -+ rm -f conftest.$ac_ext -+ fi -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 -+$as_echo "$ac_cv_sys_largefile_CC" >&6; } -+ if test "$ac_cv_sys_largefile_CC" != no; then -+ CC=$CC$ac_cv_sys_largefile_CC -+ fi -+ -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 -+$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } -+if ${ac_cv_sys_file_offset_bits+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ while :; do -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+ /* Check that off_t can represent 2**63 - 1 correctly. -+ We can't simply define LARGE_OFF_T to be 9223372036854775807, -+ since some C++ compilers masquerading as C compilers -+ incorrectly reject 9223372036854775807. */ -+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) -+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 -+ && LARGE_OFF_T % 2147483647 == 1) -+ ? 1 : -1]; -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_sys_file_offset_bits=no; break -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#define _FILE_OFFSET_BITS 64 -+#include -+ /* Check that off_t can represent 2**63 - 1 correctly. -+ We can't simply define LARGE_OFF_T to be 9223372036854775807, -+ since some C++ compilers masquerading as C compilers -+ incorrectly reject 9223372036854775807. */ -+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) -+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 -+ && LARGE_OFF_T % 2147483647 == 1) -+ ? 1 : -1]; -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_sys_file_offset_bits=64; break -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ ac_cv_sys_file_offset_bits=unknown -+ break -+done -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 -+$as_echo "$ac_cv_sys_file_offset_bits" >&6; } -+case $ac_cv_sys_file_offset_bits in #( -+ no | unknown) ;; -+ *) -+cat >>confdefs.h <<_ACEOF -+#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits -+_ACEOF -+;; -+esac -+rm -rf conftest* -+ if test $ac_cv_sys_file_offset_bits = unknown; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 -+$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } -+if ${ac_cv_sys_large_files+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ while :; do -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include -+ /* Check that off_t can represent 2**63 - 1 correctly. -+ We can't simply define LARGE_OFF_T to be 9223372036854775807, -+ since some C++ compilers masquerading as C compilers -+ incorrectly reject 9223372036854775807. */ -+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) -+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 -+ && LARGE_OFF_T % 2147483647 == 1) -+ ? 1 : -1]; -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_sys_large_files=no; break -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#define _LARGE_FILES 1 -+#include -+ /* Check that off_t can represent 2**63 - 1 correctly. -+ We can't simply define LARGE_OFF_T to be 9223372036854775807, -+ since some C++ compilers masquerading as C compilers -+ incorrectly reject 9223372036854775807. */ -+#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) -+ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 -+ && LARGE_OFF_T % 2147483647 == 1) -+ ? 1 : -1]; -+int -+main () -+{ -+ -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ ac_cv_sys_large_files=1; break -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+ ac_cv_sys_large_files=unknown -+ break -+done -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 -+$as_echo "$ac_cv_sys_large_files" >&6; } -+case $ac_cv_sys_large_files in #( -+ no | unknown) ;; -+ *) -+cat >>confdefs.h <<_ACEOF -+#define _LARGE_FILES $ac_cv_sys_large_files -+_ACEOF -+;; -+esac -+rm -rf conftest* -+ fi -+fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGEFILE_SOURCE value needed for large files" >&5 -+$as_echo_n "checking for _LARGEFILE_SOURCE value needed for large files... " >&6; } -+if ${ac_cv_sys_largefile_source+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ while :; do -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#include /* for off_t */ -+ #include -+int -+main () -+{ -+int (*fp) (FILE *, off_t, int) = fseeko; -+ return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_sys_largefile_source=no; break -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+#define _LARGEFILE_SOURCE 1 -+#include /* for off_t */ -+ #include -+int -+main () -+{ -+int (*fp) (FILE *, off_t, int) = fseeko; -+ return fseeko (stdin, 0, 0) && fp (stdin, 0, 0); -+ ; -+ return 0; -+} -+_ACEOF -+if ac_fn_c_try_link "$LINENO"; then : -+ ac_cv_sys_largefile_source=1; break -+fi -+rm -f core conftest.err conftest.$ac_objext \ -+ conftest$ac_exeext conftest.$ac_ext -+ ac_cv_sys_largefile_source=unknown -+ break -+done -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_source" >&5 -+$as_echo "$ac_cv_sys_largefile_source" >&6; } -+case $ac_cv_sys_largefile_source in #( -+ no | unknown) ;; -+ *) -+cat >>confdefs.h <<_ACEOF -+#define _LARGEFILE_SOURCE $ac_cv_sys_largefile_source -+_ACEOF -+;; -+esac -+rm -rf conftest* -+ -+# We used to try defining _XOPEN_SOURCE=500 too, to work around a bug -+# in glibc 2.1.3, but that breaks too many other things. -+# If you want fseeko and ftello with glibc, upgrade to a fixed glibc. -+if test $ac_cv_sys_largefile_source != unknown; then -+ -+$as_echo "#define HAVE_FSEEKO 1" >>confdefs.h -+ -+fi -+ -+ -+# Checks for library functions. -+ac_config_files="$ac_config_files Makefile doc/Makefile doc/Doxyfile libmspack.pc" -+ -+cat >confcache <<\_ACEOF -+# This file is a shell script that caches the results of configure -+# tests run on this system so they can be shared between configure -+# scripts and configure runs, see configure's option --config-cache. -+# It is not useful on other systems. If it contains results you don't -+# want to keep, you may remove or edit it. -+# -+# config.status only pays attention to the cache file if you give it -+# the --recheck option to rerun configure. -+# -+# `ac_cv_env_foo' variables (set or unset) will be overridden when -+# loading this file, other *unset* `ac_cv_foo' will be assigned the -+# following values. -+ -+_ACEOF -+ -+# The following way of writing the cache mishandles newlines in values, -+# but we know of no workaround that is simple, portable, and efficient. -+# So, we kill variables containing newlines. -+# Ultrix sh set writes to stderr and can't be redirected directly, -+# and sets the high bit in the cache file unless we assign to the vars. -+( -+ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do -+ eval ac_val=\$$ac_var -+ case $ac_val in #( -+ *${as_nl}*) -+ case $ac_var in #( -+ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -+$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; -+ esac -+ case $ac_var in #( -+ _ | IFS | as_nl) ;; #( -+ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( -+ *) { eval $ac_var=; unset $ac_var;} ;; -+ esac ;; -+ esac -+ done -+ -+ (set) 2>&1 | -+ case $as_nl`(ac_space=' '; set) 2>&1` in #( -+ *${as_nl}ac_space=\ *) -+ # `set' does not quote correctly, so add quotes: double-quote -+ # substitution turns \\\\ into \\, and sed turns \\ into \. -+ sed -n \ -+ "s/'/'\\\\''/g; -+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" -+ ;; #( -+ *) -+ # `set' quotes correctly as required by POSIX, so do not add quotes. -+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" -+ ;; -+ esac | -+ sort -+) | -+ sed ' -+ /^ac_cv_env_/b end -+ t clear -+ :clear -+ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ -+ t end -+ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ -+ :end' >>confcache -+if diff "$cache_file" confcache >/dev/null 2>&1; then :; else -+ if test -w "$cache_file"; then -+ if test "x$cache_file" != "x/dev/null"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -+$as_echo "$as_me: updating cache $cache_file" >&6;} -+ if test ! -f "$cache_file" || test -h "$cache_file"; then -+ cat confcache >"$cache_file" -+ else -+ case $cache_file in #( -+ */* | ?:*) -+ mv -f confcache "$cache_file"$$ && -+ mv -f "$cache_file"$$ "$cache_file" ;; #( -+ *) -+ mv -f confcache "$cache_file" ;; -+ esac -+ fi -+ fi -+ else -+ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -+$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} -+ fi -+fi -+rm -f confcache -+ -+test "x$prefix" = xNONE && prefix=$ac_default_prefix -+# Let make expand exec_prefix. -+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' -+ -+DEFS=-DHAVE_CONFIG_H -+ -+ac_libobjs= -+ac_ltlibobjs= -+U= -+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue -+ # 1. Remove the extension, and $U if already installed. -+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' -+ ac_i=`$as_echo "$ac_i" | sed "$ac_script"` -+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR -+ # will be set to the directory where LIBOBJS objects are built. -+ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" -+ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -+done -+LIBOBJS=$ac_libobjs -+ -+LTLIBOBJS=$ac_ltlibobjs -+ -+ -+ if test -n "$EXEEXT"; then -+ am__EXEEXT_TRUE= -+ am__EXEEXT_FALSE='#' -+else -+ am__EXEEXT_TRUE='#' -+ am__EXEEXT_FALSE= -+fi -+ -+if test -z "${DEBUG_TRUE}" && test -z "${DEBUG_FALSE}"; then -+ as_fn_error $? "conditional \"DEBUG\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then -+ as_fn_error $? "conditional \"AMDEP\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then -+ as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+if test -z "${GCC_TRUE}" && test -z "${GCC_FALSE}"; then -+ as_fn_error $? "conditional \"GCC\" was never defined. -+Usually this means the macro was only invoked conditionally." "$LINENO" 5 -+fi -+ -+: "${CONFIG_STATUS=./config.status}" -+ac_write_fail=0 -+ac_clean_files_save=$ac_clean_files -+ac_clean_files="$ac_clean_files $CONFIG_STATUS" -+{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -+$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -+as_write_fail=0 -+cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -+#! $SHELL -+# Generated by $as_me. -+# Run this file to recreate the current configuration. -+# Compiler output produced by configure, useful for debugging -+# configure, is in config.log if it exists. -+ -+debug=false -+ac_cs_recheck=false -+ac_cs_silent=false -+ -+SHELL=\${CONFIG_SHELL-$SHELL} -+export SHELL -+_ASEOF -+cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -+## -------------------- ## -+## M4sh Initialization. ## -+## -------------------- ## -+ -+# Be more Bourne compatible -+DUALCASE=1; export DUALCASE # for MKS sh -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : -+ emulate sh -+ NULLCMD=: -+ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in #( -+ *posix*) : -+ set -o posix ;; #( -+ *) : -+ ;; -+esac -+fi -+ -+ -+as_nl=' -+' -+export as_nl -+# Printing a long string crashes Solaris 7 /usr/bin/printf. -+as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -+as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -+# Prefer a ksh shell builtin over an external printf program on Solaris, -+# but without wasting forks for bash or zsh. -+if test -z "$BASH_VERSION$ZSH_VERSION" \ -+ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then -+ as_echo='print -r --' -+ as_echo_n='print -rn --' -+elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then -+ as_echo='printf %s\n' -+ as_echo_n='printf %s' -+else -+ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then -+ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' -+ as_echo_n='/usr/ucb/echo -n' -+ else -+ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' -+ as_echo_n_body='eval -+ arg=$1; -+ case $arg in #( -+ *"$as_nl"*) -+ expr "X$arg" : "X\\(.*\\)$as_nl"; -+ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; -+ esac; -+ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" -+ ' -+ export as_echo_n_body -+ as_echo_n='sh -c $as_echo_n_body as_echo' -+ fi -+ export as_echo_body -+ as_echo='sh -c $as_echo_body as_echo' -+fi -+ -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ PATH_SEPARATOR=: -+ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { -+ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || -+ PATH_SEPARATOR=';' -+ } -+fi -+ -+ -+# IFS -+# We need space, tab and new line, in precisely that order. Quoting is -+# there to prevent editors from complaining about space-tab. -+# (If _AS_PATH_WALK were called with IFS unset, it would disable word -+# splitting by setting IFS to empty value.) -+IFS=" "" $as_nl" -+ -+# Find who we are. Look in the path if we contain no directory separator. -+as_myself= -+case $0 in #(( -+ *[\\/]* ) as_myself=$0 ;; -+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break -+ done -+IFS=$as_save_IFS -+ -+ ;; -+esac -+# We did not find ourselves, most probably we were run as `sh COMMAND' -+# in which case we are not to be found in the path. -+if test "x$as_myself" = x; then -+ as_myself=$0 -+fi -+if test ! -f "$as_myself"; then -+ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 -+ exit 1 -+fi -+ -+# Unset variables that we do not need and which cause bugs (e.g. in -+# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -+# suppresses any "Segmentation fault" message there. '((' could -+# trigger a bug in pdksh 5.2.14. -+for as_var in BASH_ENV ENV MAIL MAILPATH -+do eval test x\${$as_var+set} = xset \ -+ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -+done -+PS1='$ ' -+PS2='> ' -+PS4='+ ' -+ -+# NLS nuisances. -+LC_ALL=C -+export LC_ALL -+LANGUAGE=C -+export LANGUAGE -+ -+# CDPATH. -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+ -+ -+# as_fn_error STATUS ERROR [LINENO LOG_FD] -+# ---------------------------------------- -+# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -+# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -+# script with STATUS, using 1 if that was 0. -+as_fn_error () -+{ -+ as_status=$1; test $as_status -eq 0 && as_status=1 -+ if test "$4"; then -+ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 -+ fi -+ $as_echo "$as_me: error: $2" >&2 -+ as_fn_exit $as_status -+} # as_fn_error -+ -+ -+# as_fn_set_status STATUS -+# ----------------------- -+# Set $? to STATUS, without forking. -+as_fn_set_status () -+{ -+ return $1 -+} # as_fn_set_status -+ -+# as_fn_exit STATUS -+# ----------------- -+# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -+as_fn_exit () -+{ -+ set +e -+ as_fn_set_status $1 -+ exit $1 -+} # as_fn_exit -+ -+# as_fn_unset VAR -+# --------------- -+# Portably unset VAR. -+as_fn_unset () -+{ -+ { eval $1=; unset $1;} -+} -+as_unset=as_fn_unset -+# as_fn_append VAR VALUE -+# ---------------------- -+# Append the text in VALUE to the end of the definition contained in VAR. Take -+# advantage of any shell optimizations that allow amortized linear growth over -+# repeated appends, instead of the typical quadratic growth present in naive -+# implementations. -+if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : -+ eval 'as_fn_append () -+ { -+ eval $1+=\$2 -+ }' -+else -+ as_fn_append () -+ { -+ eval $1=\$$1\$2 -+ } -+fi # as_fn_append -+ -+# as_fn_arith ARG... -+# ------------------ -+# Perform arithmetic evaluation on the ARGs, and store the result in the -+# global $as_val. Take advantage of shells that can avoid forks. The arguments -+# must be portable across $(()) and expr. -+if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : -+ eval 'as_fn_arith () -+ { -+ as_val=$(( $* )) -+ }' -+else -+ as_fn_arith () -+ { -+ as_val=`expr "$@" || test $? -eq 1` -+ } -+fi # as_fn_arith -+ -+ -+if expr a : '\(a\)' >/dev/null 2>&1 && -+ test "X`expr 00001 : '.*\(...\)'`" = X001; then -+ as_expr=expr -+else -+ as_expr=false -+fi -+ -+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then -+ as_basename=basename -+else -+ as_basename=false -+fi -+ -+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then -+ as_dirname=dirname -+else -+ as_dirname=false -+fi -+ -+as_me=`$as_basename -- "$0" || -+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ -+ X"$0" : 'X\(//\)$' \| \ -+ X"$0" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X/"$0" | -+ sed '/^.*\/\([^/][^/]*\)\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\/\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ -+# Avoid depending upon Character Ranges. -+as_cr_letters='abcdefghijklmnopqrstuvwxyz' -+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -+as_cr_Letters=$as_cr_letters$as_cr_LETTERS -+as_cr_digits='0123456789' -+as_cr_alnum=$as_cr_Letters$as_cr_digits -+ -+ECHO_C= ECHO_N= ECHO_T= -+case `echo -n x` in #((((( -+-n*) -+ case `echo 'xy\c'` in -+ *c*) ECHO_T=' ';; # ECHO_T is single tab character. -+ xy) ECHO_C='\c';; -+ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null -+ ECHO_T=' ';; -+ esac;; -+*) -+ ECHO_N='-n';; -+esac -+ -+rm -f conf$$ conf$$.exe conf$$.file -+if test -d conf$$.dir; then -+ rm -f conf$$.dir/conf$$.file -+else -+ rm -f conf$$.dir -+ mkdir conf$$.dir 2>/dev/null -+fi -+if (echo >conf$$.file) 2>/dev/null; then -+ if ln -s conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s='ln -s' -+ # ... but there are two gotchas: -+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. -+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. -+ # In both cases, we have to default to `cp -p'. -+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || -+ as_ln_s='cp -p' -+ elif ln conf$$.file conf$$ 2>/dev/null; then -+ as_ln_s=ln -+ else -+ as_ln_s='cp -p' -+ fi -+else -+ as_ln_s='cp -p' -+fi -+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -+rmdir conf$$.dir 2>/dev/null -+ -+ -+# as_fn_mkdir_p -+# ------------- -+# Create "$as_dir" as a directory, including parents if necessary. -+as_fn_mkdir_p () -+{ -+ -+ case $as_dir in #( -+ -*) as_dir=./$as_dir;; -+ esac -+ test -d "$as_dir" || eval $as_mkdir_p || { -+ as_dirs= -+ while :; do -+ case $as_dir in #( -+ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( -+ *) as_qdir=$as_dir;; -+ esac -+ as_dirs="'$as_qdir' $as_dirs" -+ as_dir=`$as_dirname -- "$as_dir" || -+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$as_dir" : 'X\(//\)[^/]' \| \ -+ X"$as_dir" : 'X\(//\)$' \| \ -+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$as_dir" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ test -d "$as_dir" && break -+ done -+ test -z "$as_dirs" || eval "mkdir $as_dirs" -+ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" -+ -+ -+} # as_fn_mkdir_p -+if mkdir -p . 2>/dev/null; then -+ as_mkdir_p='mkdir -p "$as_dir"' -+else -+ test -d ./-p && rmdir ./-p -+ as_mkdir_p=false -+fi -+ -+if test -x / >/dev/null 2>&1; then -+ as_test_x='test -x' -+else -+ if ls -dL / >/dev/null 2>&1; then -+ as_ls_L_option=L -+ else -+ as_ls_L_option= -+ fi -+ as_test_x=' -+ eval sh -c '\'' -+ if test -d "$1"; then -+ test -d "$1/."; -+ else -+ case $1 in #( -+ -*)set "./$1";; -+ esac; -+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( -+ ???[sx]*):;;*)false;;esac;fi -+ '\'' sh -+ ' -+fi -+as_executable_p=$as_test_x -+ -+# Sed expression to map a string onto a valid CPP name. -+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" -+ -+# Sed expression to map a string onto a valid variable name. -+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" -+ -+ -+exec 6>&1 -+## ----------------------------------- ## -+## Main body of $CONFIG_STATUS script. ## -+## ----------------------------------- ## -+_ASEOF -+test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 -+ -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+# Save the log message, to keep $0 and so on meaningful, and to -+# report actual input values of CONFIG_FILES etc. instead of their -+# values after options handling. -+ac_log=" -+This file was extended by libmspack $as_me 0.4alpha, which was -+generated by GNU Autoconf 2.68. Invocation command line was -+ -+ CONFIG_FILES = $CONFIG_FILES -+ CONFIG_HEADERS = $CONFIG_HEADERS -+ CONFIG_LINKS = $CONFIG_LINKS -+ CONFIG_COMMANDS = $CONFIG_COMMANDS -+ $ $0 $@ -+ -+on `(hostname || uname -n) 2>/dev/null | sed 1q` -+" -+ -+_ACEOF -+ -+case $ac_config_files in *" -+"*) set x $ac_config_files; shift; ac_config_files=$*;; -+esac -+ -+case $ac_config_headers in *" -+"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -+esac -+ -+ -+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -+# Files that config.status was made for. -+config_files="$ac_config_files" -+config_headers="$ac_config_headers" -+config_commands="$ac_config_commands" -+ -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+ac_cs_usage="\ -+\`$as_me' instantiates files and other configuration actions -+from templates according to the current configuration. Unless the files -+and actions are specified as TAGs, all are instantiated by default. -+ -+Usage: $0 [OPTION]... [TAG]... -+ -+ -h, --help print this help, then exit -+ -V, --version print version number and configuration settings, then exit -+ --config print configuration, then exit -+ -q, --quiet, --silent -+ do not print progress messages -+ -d, --debug don't remove temporary files -+ --recheck update $as_me by reconfiguring in the same conditions -+ --file=FILE[:TEMPLATE] -+ instantiate the configuration file FILE -+ --header=FILE[:TEMPLATE] -+ instantiate the configuration header FILE -+ -+Configuration files: -+$config_files -+ -+Configuration headers: -+$config_headers -+ -+Configuration commands: -+$config_commands -+ -+Report bugs to ." -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -+ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -+ac_cs_version="\\ -+libmspack config.status 0.4alpha -+configured by $0, generated by GNU Autoconf 2.68, -+ with options \\"\$ac_cs_config\\" -+ -+Copyright (C) 2010 Free Software Foundation, Inc. -+This config.status script is free software; the Free Software Foundation -+gives unlimited permission to copy, distribute and modify it." -+ -+ac_pwd='$ac_pwd' -+srcdir='$srcdir' -+INSTALL='$INSTALL' -+MKDIR_P='$MKDIR_P' -+AWK='$AWK' -+test -n "\$AWK" || AWK=awk -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+# The default lists apply if the user does not specify any file. -+ac_need_defaults=: -+while test $# != 0 -+do -+ case $1 in -+ --*=?*) -+ ac_option=`expr "X$1" : 'X\([^=]*\)='` -+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` -+ ac_shift=: -+ ;; -+ --*=) -+ ac_option=`expr "X$1" : 'X\([^=]*\)='` -+ ac_optarg= -+ ac_shift=: -+ ;; -+ *) -+ ac_option=$1 -+ ac_optarg=$2 -+ ac_shift=shift -+ ;; -+ esac -+ -+ case $ac_option in -+ # Handling of the options. -+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) -+ ac_cs_recheck=: ;; -+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) -+ $as_echo "$ac_cs_version"; exit ;; -+ --config | --confi | --conf | --con | --co | --c ) -+ $as_echo "$ac_cs_config"; exit ;; -+ --debug | --debu | --deb | --de | --d | -d ) -+ debug=: ;; -+ --file | --fil | --fi | --f ) -+ $ac_shift -+ case $ac_optarg in -+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; -+ '') as_fn_error $? "missing file argument" ;; -+ esac -+ as_fn_append CONFIG_FILES " '$ac_optarg'" -+ ac_need_defaults=false;; -+ --header | --heade | --head | --hea ) -+ $ac_shift -+ case $ac_optarg in -+ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; -+ esac -+ as_fn_append CONFIG_HEADERS " '$ac_optarg'" -+ ac_need_defaults=false;; -+ --he | --h) -+ # Conflict between --help and --header -+ as_fn_error $? "ambiguous option: \`$1' -+Try \`$0 --help' for more information.";; -+ --help | --hel | -h ) -+ $as_echo "$ac_cs_usage"; exit ;; -+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ -+ | -silent | --silent | --silen | --sile | --sil | --si | --s) -+ ac_cs_silent=: ;; -+ -+ # This is an error. -+ -*) as_fn_error $? "unrecognized option: \`$1' -+Try \`$0 --help' for more information." ;; -+ -+ *) as_fn_append ac_config_targets " $1" -+ ac_need_defaults=false ;; -+ -+ esac -+ shift -+done -+ -+ac_configure_extra_args= -+ -+if $ac_cs_silent; then -+ exec 6>/dev/null -+ ac_configure_extra_args="$ac_configure_extra_args --silent" -+fi -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -+if \$ac_cs_recheck; then -+ set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion -+ shift -+ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 -+ CONFIG_SHELL='$SHELL' -+ export CONFIG_SHELL -+ exec "\$@" -+fi -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+exec 5>>config.log -+{ -+ echo -+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -+## Running $as_me. ## -+_ASBOX -+ $as_echo "$ac_log" -+} >&5 -+ -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -+# -+# INIT-COMMANDS -+# -+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" -+ -+ -+# The HP-UX ksh and POSIX shell print the target directory to stdout -+# if CDPATH is set. -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+ -+sed_quote_subst='$sed_quote_subst' -+double_quote_subst='$double_quote_subst' -+delay_variable_subst='$delay_variable_subst' -+macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -+macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -+enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -+enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -+pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -+enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -+SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -+ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -+PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`' -+host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -+host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -+host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -+build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -+build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -+build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -+SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -+Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -+GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -+EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -+FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -+LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -+NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -+LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -+max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -+ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -+exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -+lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -+lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -+lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -+lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -+lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -+reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -+reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -+OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -+deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -+file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -+file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -+want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -+DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -+sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -+AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -+AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -+archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -+STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -+RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -+old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -+old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -+old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -+lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -+CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -+CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -+compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -+GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -+lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -+lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -+lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -+nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -+lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -+objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -+MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -+lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -+lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -+lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -+lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -+lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -+need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -+MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -+DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -+NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -+LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -+OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -+OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -+libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -+shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -+extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -+archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -+enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -+export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -+whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -+compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -+old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -+old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -+archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -+archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -+module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -+module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -+with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -+allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -+no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -+hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -+hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -+hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -+hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -+hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -+hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -+hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -+inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -+link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -+always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -+export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -+exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -+include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -+prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -+postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -+file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -+variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -+need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -+need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -+version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -+runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -+shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -+shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -+libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -+library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -+soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -+install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -+postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -+postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -+finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -+finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -+hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -+sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -+sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -+hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -+enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -+enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -+enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -+old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -+striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -+ -+LTCC='$LTCC' -+LTCFLAGS='$LTCFLAGS' -+compiler='$compiler_DEFAULT' -+ -+# A function that is used when there is no print builtin or printf. -+func_fallback_echo () -+{ -+ eval 'cat <<_LTECHO_EOF -+\$1 -+_LTECHO_EOF' -+} -+ -+# Quote evaled strings. -+for var in SHELL \ -+ECHO \ -+PATH_SEPARATOR \ -+SED \ -+GREP \ -+EGREP \ -+FGREP \ -+LD \ -+NM \ -+LN_S \ -+lt_SP2NL \ -+lt_NL2SP \ -+reload_flag \ -+OBJDUMP \ -+deplibs_check_method \ -+file_magic_cmd \ -+file_magic_glob \ -+want_nocaseglob \ -+DLLTOOL \ -+sharedlib_from_linklib_cmd \ -+AR \ -+AR_FLAGS \ -+archiver_list_spec \ -+STRIP \ -+RANLIB \ -+CC \ -+CFLAGS \ -+compiler \ -+lt_cv_sys_global_symbol_pipe \ -+lt_cv_sys_global_symbol_to_cdecl \ -+lt_cv_sys_global_symbol_to_c_name_address \ -+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -+nm_file_list_spec \ -+lt_prog_compiler_no_builtin_flag \ -+lt_prog_compiler_pic \ -+lt_prog_compiler_wl \ -+lt_prog_compiler_static \ -+lt_cv_prog_compiler_c_o \ -+need_locks \ -+MANIFEST_TOOL \ -+DSYMUTIL \ -+NMEDIT \ -+LIPO \ -+OTOOL \ -+OTOOL64 \ -+shrext_cmds \ -+export_dynamic_flag_spec \ -+whole_archive_flag_spec \ -+compiler_needs_object \ -+with_gnu_ld \ -+allow_undefined_flag \ -+no_undefined_flag \ -+hardcode_libdir_flag_spec \ -+hardcode_libdir_separator \ -+exclude_expsyms \ -+include_expsyms \ -+file_list_spec \ -+variables_saved_for_relink \ -+libname_spec \ -+library_names_spec \ -+soname_spec \ -+install_override_mode \ -+finish_eval \ -+old_striplib \ -+striplib; do -+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in -+ *[\\\\\\\`\\"\\\$]*) -+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" -+ ;; -+ *) -+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" -+ ;; -+ esac -+done -+ -+# Double-quote double-evaled strings. -+for var in reload_cmds \ -+old_postinstall_cmds \ -+old_postuninstall_cmds \ -+old_archive_cmds \ -+extract_expsyms_cmds \ -+old_archive_from_new_cmds \ -+old_archive_from_expsyms_cmds \ -+archive_cmds \ -+archive_expsym_cmds \ -+module_cmds \ -+module_expsym_cmds \ -+export_symbols_cmds \ -+prelink_cmds \ -+postlink_cmds \ -+postinstall_cmds \ -+postuninstall_cmds \ -+finish_cmds \ -+sys_lib_search_path_spec \ -+sys_lib_dlsearch_path_spec; do -+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in -+ *[\\\\\\\`\\"\\\$]*) -+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" -+ ;; -+ *) -+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" -+ ;; -+ esac -+done -+ -+ac_aux_dir='$ac_aux_dir' -+xsi_shell='$xsi_shell' -+lt_shell_append='$lt_shell_append' -+ -+# See if we are running on zsh, and set the options which allow our -+# commands through without removal of \ escapes INIT. -+if test -n "\${ZSH_VERSION+set}" ; then -+ setopt NO_GLOB_SUBST -+fi -+ -+ -+ PACKAGE='$PACKAGE' -+ VERSION='$VERSION' -+ TIMESTAMP='$TIMESTAMP' -+ RM='$RM' -+ ofile='$ofile' -+ -+ -+ -+ -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+ -+# Handling of arguments. -+for ac_config_target in $ac_config_targets -+do -+ case $ac_config_target in -+ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; -+ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; -+ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; -+ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; -+ "doc/Makefile") CONFIG_FILES="$CONFIG_FILES doc/Makefile" ;; -+ "doc/Doxyfile") CONFIG_FILES="$CONFIG_FILES doc/Doxyfile" ;; -+ "libmspack.pc") CONFIG_FILES="$CONFIG_FILES libmspack.pc" ;; -+ -+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; -+ esac -+done -+ -+ -+# If the user did not use the arguments to specify the items to instantiate, -+# then the envvar interface is used. Set only those that are not. -+# We use the long form for the default assignment because of an extremely -+# bizarre bug on SunOS 4.1.3. -+if $ac_need_defaults; then -+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files -+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers -+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -+fi -+ -+# Have a temporary directory for convenience. Make it in the build tree -+# simply because there is no reason against having it here, and in addition, -+# creating and moving files from /tmp can sometimes cause problems. -+# Hook for its removal unless debugging. -+# Note that there is a small window in which the directory will not be cleaned: -+# after its creation but before its name has been assigned to `$tmp'. -+$debug || -+{ -+ tmp= ac_tmp= -+ trap 'exit_status=$? -+ : "${ac_tmp:=$tmp}" -+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -+' 0 -+ trap 'as_fn_exit 1' 1 2 13 15 -+} -+# Create a (secure) tmp directory for tmp files. -+ -+{ -+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && -+ test -d "$tmp" -+} || -+{ -+ tmp=./conf$$-$RANDOM -+ (umask 077 && mkdir "$tmp") -+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -+ac_tmp=$tmp -+ -+# Set up the scripts for CONFIG_FILES section. -+# No need to generate them if there are no CONFIG_FILES. -+# This happens for instance with `./config.status config.h'. -+if test -n "$CONFIG_FILES"; then -+ -+ -+ac_cr=`echo X | tr X '\015'` -+# On cygwin, bash can eat \r inside `` if the user requested igncr. -+# But we know of no other shell where ac_cr would be empty at this -+# point, so we can use a bashism as a fallback. -+if test "x$ac_cr" = x; then -+ eval ac_cr=\$\'\\r\' -+fi -+ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -+if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then -+ ac_cs_awk_cr='\\r' -+else -+ ac_cs_awk_cr=$ac_cr -+fi -+ -+echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -+_ACEOF -+ -+ -+{ -+ echo "cat >conf$$subs.awk <<_ACEOF" && -+ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && -+ echo "_ACEOF" -+} >conf$$subs.sh || -+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -+ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -+ac_delim='%!_!# ' -+for ac_last_try in false false false false false :; do -+ . ./conf$$subs.sh || -+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -+ -+ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` -+ if test $ac_delim_n = $ac_delim_num; then -+ break -+ elif $ac_last_try; then -+ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -+ else -+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " -+ fi -+done -+rm -f conf$$subs.sh -+ -+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -+_ACEOF -+sed -n ' -+h -+s/^/S["/; s/!.*/"]=/ -+p -+g -+s/^[^!]*!// -+:repl -+t repl -+s/'"$ac_delim"'$// -+t delim -+:nl -+h -+s/\(.\{148\}\)..*/\1/ -+t more1 -+s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -+p -+n -+b repl -+:more1 -+s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -+p -+g -+s/.\{148\}// -+t nl -+:delim -+h -+s/\(.\{148\}\)..*/\1/ -+t more2 -+s/["\\]/\\&/g; s/^/"/; s/$/"/ -+p -+b -+:more2 -+s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -+p -+g -+s/.\{148\}// -+t delim -+' >$CONFIG_STATUS || ac_write_fail=1 -+rm -f conf$$subs.awk -+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -+_ACAWK -+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && -+ for (key in S) S_is_set[key] = 1 -+ FS = "" -+ -+} -+{ -+ line = $ 0 -+ nfields = split(line, field, "@") -+ substed = 0 -+ len = length(field[1]) -+ for (i = 2; i < nfields; i++) { -+ key = field[i] -+ keylen = length(key) -+ if (S_is_set[key]) { -+ value = S[key] -+ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) -+ len += length(value) + length(field[++i]) -+ substed = 1 -+ } else -+ len += 1 + keylen -+ } -+ -+ print line -+} -+ -+_ACAWK -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then -+ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -+else -+ cat -+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ -+ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -+_ACEOF -+ -+# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -+# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -+# trailing colons and then remove the whole line if VPATH becomes empty -+# (actually we leave an empty line to preserve line numbers). -+if test "x$srcdir" = x.; then -+ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -+h -+s/// -+s/^/:/ -+s/[ ]*$/:/ -+s/:\$(srcdir):/:/g -+s/:\${srcdir}:/:/g -+s/:@srcdir@:/:/g -+s/^:*// -+s/:*$// -+x -+s/\(=[ ]*\).*/\1/ -+G -+s/\n// -+s/^[^=]*=[ ]*$// -+}' -+fi -+ -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+fi # test -n "$CONFIG_FILES" -+ -+# Set up the scripts for CONFIG_HEADERS section. -+# No need to generate them if there are no CONFIG_HEADERS. -+# This happens for instance with `./config.status Makefile'. -+if test -n "$CONFIG_HEADERS"; then -+cat >"$ac_tmp/defines.awk" <<\_ACAWK || -+BEGIN { -+_ACEOF -+ -+# Transform confdefs.h into an awk script `defines.awk', embedded as -+# here-document in config.status, that substitutes the proper values into -+# config.h.in to produce config.h. -+ -+# Create a delimiter string that does not exist in confdefs.h, to ease -+# handling of long lines. -+ac_delim='%!_!# ' -+for ac_last_try in false false :; do -+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h` -+ if test -z "$ac_tt"; then -+ break -+ elif $ac_last_try; then -+ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 -+ else -+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " -+ fi -+done -+ -+# For the awk script, D is an array of macro values keyed by name, -+# likewise P contains macro parameters if any. Preserve backslash -+# newline sequences. -+ -+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -+sed -n ' -+s/.\{148\}/&'"$ac_delim"'/g -+t rset -+:rset -+s/^[ ]*#[ ]*define[ ][ ]*/ / -+t def -+d -+:def -+s/\\$// -+t bsnl -+s/["\\]/\\&/g -+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -+D["\1"]=" \3"/p -+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -+d -+:bsnl -+s/["\\]/\\&/g -+s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -+D["\1"]=" \3\\\\\\n"\\/p -+t cont -+s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -+t cont -+d -+:cont -+n -+s/.\{148\}/&'"$ac_delim"'/g -+t clear -+:clear -+s/\\$// -+t bsnlc -+s/["\\]/\\&/g; s/^/"/; s/$/"/p -+d -+:bsnlc -+s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -+b cont -+' >$CONFIG_STATUS || ac_write_fail=1 -+ -+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -+ for (key in D) D_is_set[key] = 1 -+ FS = "" -+} -+/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { -+ line = \$ 0 -+ split(line, arg, " ") -+ if (arg[1] == "#") { -+ defundef = arg[2] -+ mac1 = arg[3] -+ } else { -+ defundef = substr(arg[1], 2) -+ mac1 = arg[2] -+ } -+ split(mac1, mac2, "(") #) -+ macro = mac2[1] -+ prefix = substr(line, 1, index(line, defundef) - 1) -+ if (D_is_set[macro]) { -+ # Preserve the white space surrounding the "#". -+ print prefix "define", macro P[macro] D[macro] -+ next -+ } else { -+ # Replace #undef with comments. This is necessary, for example, -+ # in the case of _POSIX_SOURCE, which is predefined and required -+ # on some systems where configure will not decide to define it. -+ if (defundef == "undef") { -+ print "/*", prefix defundef, macro, "*/" -+ next -+ } -+ } -+} -+{ print } -+_ACAWK -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -+fi # test -n "$CONFIG_HEADERS" -+ -+ -+eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -+shift -+for ac_tag -+do -+ case $ac_tag in -+ :[FHLC]) ac_mode=$ac_tag; continue;; -+ esac -+ case $ac_mode$ac_tag in -+ :[FHL]*:*);; -+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; -+ :[FH]-) ac_tag=-:-;; -+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; -+ esac -+ ac_save_IFS=$IFS -+ IFS=: -+ set x $ac_tag -+ IFS=$ac_save_IFS -+ shift -+ ac_file=$1 -+ shift -+ -+ case $ac_mode in -+ :L) ac_source=$1;; -+ :[FH]) -+ ac_file_inputs= -+ for ac_f -+ do -+ case $ac_f in -+ -) ac_f="$ac_tmp/stdin";; -+ *) # Look for the file first in the build tree, then in the source tree -+ # (if the path is not absolute). The absolute path cannot be DOS-style, -+ # because $ac_f cannot contain `:'. -+ test -f "$ac_f" || -+ case $ac_f in -+ [\\/$]*) false;; -+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; -+ esac || -+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; -+ esac -+ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac -+ as_fn_append ac_file_inputs " '$ac_f'" -+ done -+ -+ # Let's still pretend it is `configure' which instantiates (i.e., don't -+ # use $as_me), people would be surprised to read: -+ # /* config.h. Generated by config.status. */ -+ configure_input='Generated from '` -+ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' -+ `' by configure.' -+ if test x"$ac_file" != x-; then -+ configure_input="$ac_file. $configure_input" -+ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -+$as_echo "$as_me: creating $ac_file" >&6;} -+ fi -+ # Neutralize special characters interpreted by sed in replacement strings. -+ case $configure_input in #( -+ *\&* | *\|* | *\\* ) -+ ac_sed_conf_input=`$as_echo "$configure_input" | -+ sed 's/[\\\\&|]/\\\\&/g'`;; #( -+ *) ac_sed_conf_input=$configure_input;; -+ esac -+ -+ case $ac_tag in -+ *:-:* | *:-) cat >"$ac_tmp/stdin" \ -+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; -+ esac -+ ;; -+ esac -+ -+ ac_dir=`$as_dirname -- "$ac_file" || -+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$ac_file" : 'X\(//\)[^/]' \| \ -+ X"$ac_file" : 'X\(//\)$' \| \ -+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$ac_file" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ as_dir="$ac_dir"; as_fn_mkdir_p -+ ac_builddir=. -+ -+case "$ac_dir" in -+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -+*) -+ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` -+ # A ".." for each directory in $ac_dir_suffix. -+ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` -+ case $ac_top_builddir_sub in -+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; -+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; -+ esac ;; -+esac -+ac_abs_top_builddir=$ac_pwd -+ac_abs_builddir=$ac_pwd$ac_dir_suffix -+# for backward compatibility: -+ac_top_builddir=$ac_top_build_prefix -+ -+case $srcdir in -+ .) # We are building in place. -+ ac_srcdir=. -+ ac_top_srcdir=$ac_top_builddir_sub -+ ac_abs_top_srcdir=$ac_pwd ;; -+ [\\/]* | ?:[\\/]* ) # Absolute name. -+ ac_srcdir=$srcdir$ac_dir_suffix; -+ ac_top_srcdir=$srcdir -+ ac_abs_top_srcdir=$srcdir ;; -+ *) # Relative name. -+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix -+ ac_top_srcdir=$ac_top_build_prefix$srcdir -+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -+esac -+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix -+ -+ -+ case $ac_mode in -+ :F) -+ # -+ # CONFIG_FILE -+ # -+ -+ case $INSTALL in -+ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; -+ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; -+ esac -+ ac_MKDIR_P=$MKDIR_P -+ case $MKDIR_P in -+ [\\/$]* | ?:[\\/]* ) ;; -+ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; -+ esac -+_ACEOF -+ -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+# If the template does not know about datarootdir, expand it. -+# FIXME: This hack should be removed a few years after 2.60. -+ac_datarootdir_hack=; ac_datarootdir_seen= -+ac_sed_dataroot=' -+/datarootdir/ { -+ p -+ q -+} -+/@datadir@/p -+/@docdir@/p -+/@infodir@/p -+/@localedir@/p -+/@mandir@/p' -+case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -+*datarootdir*) ac_datarootdir_seen=yes;; -+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -+$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -+_ACEOF -+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -+ ac_datarootdir_hack=' -+ s&@datadir@&$datadir&g -+ s&@docdir@&$docdir&g -+ s&@infodir@&$infodir&g -+ s&@localedir@&$localedir&g -+ s&@mandir@&$mandir&g -+ s&\\\${datarootdir}&$datarootdir&g' ;; -+esac -+_ACEOF -+ -+# Neutralize VPATH when `$srcdir' = `.'. -+# Shell code in configure.ac might set extrasub. -+# FIXME: do we really want to maintain this feature? -+cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -+ac_sed_extra="$ac_vpsub -+$extrasub -+_ACEOF -+cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -+:t -+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -+s|@configure_input@|$ac_sed_conf_input|;t t -+s&@top_builddir@&$ac_top_builddir_sub&;t t -+s&@top_build_prefix@&$ac_top_build_prefix&;t t -+s&@srcdir@&$ac_srcdir&;t t -+s&@abs_srcdir@&$ac_abs_srcdir&;t t -+s&@top_srcdir@&$ac_top_srcdir&;t t -+s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -+s&@builddir@&$ac_builddir&;t t -+s&@abs_builddir@&$ac_abs_builddir&;t t -+s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -+s&@INSTALL@&$ac_INSTALL&;t t -+s&@MKDIR_P@&$ac_MKDIR_P&;t t -+$ac_datarootdir_hack -+" -+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ -+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 -+ -+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && -+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && -+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ -+ "$ac_tmp/out"`; test -z "$ac_out"; } && -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -+which seems to be undefined. Please make sure it is defined" >&5 -+$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -+which seems to be undefined. Please make sure it is defined" >&2;} -+ -+ rm -f "$ac_tmp/stdin" -+ case $ac_file in -+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; -+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; -+ esac \ -+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 -+ ;; -+ :H) -+ # -+ # CONFIG_HEADER -+ # -+ if test x"$ac_file" != x-; then -+ { -+ $as_echo "/* $configure_input */" \ -+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" -+ } >"$ac_tmp/config.h" \ -+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 -+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -+$as_echo "$as_me: $ac_file is unchanged" >&6;} -+ else -+ rm -f "$ac_file" -+ mv "$ac_tmp/config.h" "$ac_file" \ -+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 -+ fi -+ else -+ $as_echo "/* $configure_input */" \ -+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ -+ || as_fn_error $? "could not create -" "$LINENO" 5 -+ fi -+# Compute "$ac_file"'s index in $config_headers. -+_am_arg="$ac_file" -+_am_stamp_count=1 -+for _am_header in $config_headers :; do -+ case $_am_header in -+ $_am_arg | $_am_arg:* ) -+ break ;; -+ * ) -+ _am_stamp_count=`expr $_am_stamp_count + 1` ;; -+ esac -+done -+echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -+$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$_am_arg" : 'X\(//\)[^/]' \| \ -+ X"$_am_arg" : 'X\(//\)$' \| \ -+ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$_am_arg" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'`/stamp-h$_am_stamp_count -+ ;; -+ -+ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -+$as_echo "$as_me: executing $ac_file commands" >&6;} -+ ;; -+ esac -+ -+ -+ case $ac_file$ac_mode in -+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || { -+ # Autoconf 2.62 quotes --file arguments for eval, but not when files -+ # are listed without --file. Let's play safe and only enable the eval -+ # if we detect the quoting. -+ case $CONFIG_FILES in -+ *\'*) eval set x "$CONFIG_FILES" ;; -+ *) set x $CONFIG_FILES ;; -+ esac -+ shift -+ for mf -+ do -+ # Strip MF so we end up with the name of the file. -+ mf=`echo "$mf" | sed -e 's/:.*$//'` -+ # Check whether this is an Automake generated Makefile or not. -+ # We used to match only the files named `Makefile.in', but -+ # some people rename them; so instead we look at the file content. -+ # Grep'ing the first line is not enough: some people post-process -+ # each Makefile.in and add a new line on top of each file to say so. -+ # Grep'ing the whole file is not good either: AIX grep has a line -+ # limit of 2048, but all sed's we know have understand at least 4000. -+ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then -+ dirpart=`$as_dirname -- "$mf" || -+$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$mf" : 'X\(//\)[^/]' \| \ -+ X"$mf" : 'X\(//\)$' \| \ -+ X"$mf" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$mf" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ else -+ continue -+ fi -+ # Extract the definition of DEPDIR, am__include, and am__quote -+ # from the Makefile without running `make'. -+ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` -+ test -z "$DEPDIR" && continue -+ am__include=`sed -n 's/^am__include = //p' < "$mf"` -+ test -z "am__include" && continue -+ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` -+ # When using ansi2knr, U may be empty or an underscore; expand it -+ U=`sed -n 's/^U = //p' < "$mf"` -+ # Find all dependency output files, they are included files with -+ # $(DEPDIR) in their names. We invoke sed twice because it is the -+ # simplest approach to changing $(DEPDIR) to its actual value in the -+ # expansion. -+ for file in `sed -n " -+ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ -+ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do -+ # Make sure the directory exists. -+ test -f "$dirpart/$file" && continue -+ fdir=`$as_dirname -- "$file" || -+$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$file" : 'X\(//\)[^/]' \| \ -+ X"$file" : 'X\(//\)$' \| \ -+ X"$file" : 'X\(/\)' \| . 2>/dev/null || -+$as_echo X"$file" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q'` -+ as_dir=$dirpart/$fdir; as_fn_mkdir_p -+ # echo "creating $dirpart/$file" -+ echo '# dummy' > "$dirpart/$file" -+ done -+ done -+} -+ ;; -+ "libtool":C) -+ -+ # See if we are running on zsh, and set the options which allow our -+ # commands through without removal of \ escapes. -+ if test -n "${ZSH_VERSION+set}" ; then -+ setopt NO_GLOB_SUBST -+ fi -+ -+ cfgfile="${ofile}T" -+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 -+ $RM "$cfgfile" -+ -+ cat <<_LT_EOF >> "$cfgfile" -+#! $SHELL -+ -+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+# NOTE: Changes made to this file will be lost: look at ltmain.sh. -+# -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -+# Foundation, Inc. -+# Written by Gordon Matzigkeit, 1996 -+# -+# This file is part of GNU Libtool. -+# -+# GNU Libtool is free software; you can redistribute it and/or -+# modify it under the terms of the GNU General Public License as -+# published by the Free Software Foundation; either version 2 of -+# the License, or (at your option) any later version. -+# -+# As a special exception to the GNU General Public License, -+# if you distribute this file as part of a program or library that -+# is built using GNU Libtool, you may include this file under the -+# same distribution terms that you use for the rest of that program. -+# -+# GNU Libtool is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with GNU Libtool; see the file COPYING. If not, a copy -+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -+# obtained by writing to the Free Software Foundation, Inc., -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+ -+# The names of the tagged configurations supported by this script. -+available_tags="" -+ -+# ### BEGIN LIBTOOL CONFIG -+ -+# Which release of libtool.m4 was used? -+macro_version=$macro_version -+macro_revision=$macro_revision -+ -+# Whether or not to build shared libraries. -+build_libtool_libs=$enable_shared -+ -+# Whether or not to build static libraries. -+build_old_libs=$enable_static -+ -+# What type of objects to build. -+pic_mode=$pic_mode -+ -+# Whether or not to optimize for fast installation. -+fast_install=$enable_fast_install -+ -+# Shell to use when invoking shell scripts. -+SHELL=$lt_SHELL -+ -+# An echo program that protects backslashes. -+ECHO=$lt_ECHO -+ -+# The PATH separator for the build system. -+PATH_SEPARATOR=$lt_PATH_SEPARATOR -+ -+# The host system. -+host_alias=$host_alias -+host=$host -+host_os=$host_os -+ -+# The build system. -+build_alias=$build_alias -+build=$build -+build_os=$build_os -+ -+# A sed program that does not truncate output. -+SED=$lt_SED -+ -+# Sed that helps us avoid accidentally triggering echo(1) options like -n. -+Xsed="\$SED -e 1s/^X//" -+ -+# A grep program that handles long lines. -+GREP=$lt_GREP -+ -+# An ERE matcher. -+EGREP=$lt_EGREP -+ -+# A literal string matcher. -+FGREP=$lt_FGREP -+ -+# A BSD- or MS-compatible name lister. -+NM=$lt_NM -+ -+# Whether we need soft or hard links. -+LN_S=$lt_LN_S -+ -+# What is the maximum length of a command? -+max_cmd_len=$max_cmd_len -+ -+# Object file suffix (normally "o"). -+objext=$ac_objext -+ -+# Executable file suffix (normally ""). -+exeext=$exeext -+ -+# whether the shell understands "unset". -+lt_unset=$lt_unset -+ -+# turn spaces into newlines. -+SP2NL=$lt_lt_SP2NL -+ -+# turn newlines into spaces. -+NL2SP=$lt_lt_NL2SP -+ -+# convert \$build file names to \$host format. -+to_host_file_cmd=$lt_cv_to_host_file_cmd -+ -+# convert \$build files to toolchain format. -+to_tool_file_cmd=$lt_cv_to_tool_file_cmd -+ -+# An object symbol dumper. -+OBJDUMP=$lt_OBJDUMP -+ -+# 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 -+ -+# How to find potential files when deplibs_check_method = "file_magic". -+file_magic_glob=$lt_file_magic_glob -+ -+# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -+want_nocaseglob=$lt_want_nocaseglob -+ -+# DLL creation program. -+DLLTOOL=$lt_DLLTOOL -+ -+# Command to associate shared and link libraries. -+sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd -+ -+# The archiver. -+AR=$lt_AR -+ -+# Flags to create an archive. -+AR_FLAGS=$lt_AR_FLAGS -+ -+# How to feed a file listing to the archiver. -+archiver_list_spec=$lt_archiver_list_spec -+ -+# A symbol stripping program. -+STRIP=$lt_STRIP -+ -+# Commands used to install an old-style archive. -+RANLIB=$lt_RANLIB -+old_postinstall_cmds=$lt_old_postinstall_cmds -+old_postuninstall_cmds=$lt_old_postuninstall_cmds -+ -+# Whether to use a lock for old archive extraction. -+lock_old_archive_extraction=$lock_old_archive_extraction -+ -+# A C compiler. -+LTCC=$lt_CC -+ -+# LTCC compiler flags. -+LTCFLAGS=$lt_CFLAGS -+ -+# Take the output of nm and produce a listing of raw symbols and C names. -+global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe -+ -+# Transform the output of nm in a proper C declaration. -+global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl -+ -+# Transform the output of nm in a C name address pair. -+global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address -+ -+# Transform the output of nm in a C name address pair when lib prefix is needed. -+global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix -+ -+# Specify filename containing input files for \$NM. -+nm_file_list_spec=$lt_nm_file_list_spec -+ -+# The root where to search for dependent libraries,and in which our libraries should be installed. -+lt_sysroot=$lt_sysroot -+ -+# The name of the directory that contains temporary libtool files. -+objdir=$objdir -+ -+# Used to examine libraries when file_magic_cmd begins with "file". -+MAGIC_CMD=$MAGIC_CMD -+ -+# Must we lock files when doing compilation? -+need_locks=$lt_need_locks -+ -+# Manifest tool. -+MANIFEST_TOOL=$lt_MANIFEST_TOOL -+ -+# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -+DSYMUTIL=$lt_DSYMUTIL -+ -+# Tool to change global to local symbols on Mac OS X. -+NMEDIT=$lt_NMEDIT -+ -+# Tool to manipulate fat objects and archives on Mac OS X. -+LIPO=$lt_LIPO -+ -+# ldd/readelf like tool for Mach-O binaries on Mac OS X. -+OTOOL=$lt_OTOOL -+ -+# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -+OTOOL64=$lt_OTOOL64 -+ -+# Old archive suffix (normally "a"). -+libext=$libext -+ -+# Shared library suffix (normally ".so"). -+shrext_cmds=$lt_shrext_cmds -+ -+# The commands to extract the exported symbol list from a shared archive. -+extract_expsyms_cmds=$lt_extract_expsyms_cmds -+ -+# Variables whose values should be saved in libtool wrapper scripts and -+# restored at link time. -+variables_saved_for_relink=$lt_variables_saved_for_relink -+ -+# 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 -+ -+# Library versioning type. -+version_type=$version_type -+ -+# Shared library runtime path variable. -+runpath_var=$runpath_var -+ -+# Shared library path variable. -+shlibpath_var=$shlibpath_var -+ -+# Is shlibpath searched before the hard-coded library search path? -+shlibpath_overrides_runpath=$shlibpath_overrides_runpath -+ -+# 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 -+ -+# Permission mode override for installation of shared libraries. -+install_override_mode=$lt_install_override_mode -+ -+# Command to use after installation of a shared archive. -+postinstall_cmds=$lt_postinstall_cmds -+ -+# Command to use after uninstallation of a shared archive. -+postuninstall_cmds=$lt_postuninstall_cmds -+ -+# Commands used to finish a libtool library installation in a directory. -+finish_cmds=$lt_finish_cmds -+ -+# As "finish_cmds", except a single script fragment to be evaled but -+# not shown. -+finish_eval=$lt_finish_eval -+ -+# Whether we should hardcode library paths into libraries. -+hardcode_into_libs=$hardcode_into_libs -+ -+# 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 -+ -+# 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 -+ -+# Commands to strip libraries. -+old_striplib=$lt_old_striplib -+striplib=$lt_striplib -+ -+ -+# The linker used to build libraries. -+LD=$lt_LD -+ -+# How to create reloadable object files. -+reload_flag=$lt_reload_flag -+reload_cmds=$lt_reload_cmds -+ -+# Commands used to build an old-style archive. -+old_archive_cmds=$lt_old_archive_cmds -+ -+# A language specific compiler. -+CC=$lt_compiler -+ -+# Is the compiler the GNU compiler? -+with_gcc=$GCC -+ -+# Compiler flag to turn off builtin functions. -+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag -+ -+# Additional compiler flags for building library objects. -+pic_flag=$lt_lt_prog_compiler_pic -+ -+# How to pass a linker flag through the compiler. -+wl=$lt_lt_prog_compiler_wl -+ -+# Compiler flag to prevent dynamic linking. -+link_static_flag=$lt_lt_prog_compiler_static -+ -+# Does compiler simultaneously support -c and -o options? -+compiler_c_o=$lt_lt_cv_prog_compiler_c_o -+ -+# Whether or not to add -lc for building shared libraries. -+build_libtool_need_lc=$archive_cmds_need_lc -+ -+# Whether or not to disallow shared libs when runtime libs are static. -+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes -+ -+# 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 -+ -+# Whether the compiler copes with passing no objects directly. -+compiler_needs_object=$lt_compiler_needs_object -+ -+# 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 a shared archive. -+archive_cmds=$lt_archive_cmds -+archive_expsym_cmds=$lt_archive_expsym_cmds -+ -+# Commands used to build a loadable module if different from building -+# a shared archive. -+module_cmds=$lt_module_cmds -+module_expsym_cmds=$lt_module_expsym_cmds -+ -+# Whether we are building with GNU ld or not. -+with_gnu_ld=$lt_with_gnu_ld -+ -+# Flag that allows shared libraries with undefined symbols to be built. -+allow_undefined_flag=$lt_allow_undefined_flag -+ -+# Flag that enforces no undefined symbols. -+no_undefined_flag=$lt_no_undefined_flag -+ -+# 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\${shared_ext} during linking hardcodes -+# DIR into the resulting binary. -+hardcode_direct=$hardcode_direct -+ -+# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -+# DIR into the resulting binary and the resulting library dependency is -+# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -+# library is relocated. -+hardcode_direct_absolute=$hardcode_direct_absolute -+ -+# 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 -+ -+# Set to "yes" if building a shared library automatically hardcodes DIR -+# into the library and all subsequent libraries and executables linked -+# against it. -+hardcode_automatic=$hardcode_automatic -+ -+# Set to yes if linker adds runtime paths of dependent libraries -+# to runtime path list. -+inherit_rpath=$inherit_rpath -+ -+# Whether libtool must link a program against all its dependency libraries. -+link_all_deplibs=$link_all_deplibs -+ -+# 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 -+ -+# 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 -+ -+# Commands necessary for linking programs (against libraries) with templates. -+prelink_cmds=$lt_prelink_cmds -+ -+# Commands necessary for finishing linking programs. -+postlink_cmds=$lt_postlink_cmds -+ -+# Specify filename containing input files. -+file_list_spec=$lt_file_list_spec -+ -+# How to hardcode a shared library path into an executable. -+hardcode_action=$hardcode_action -+ -+# ### END LIBTOOL CONFIG -+ -+_LT_EOF -+ -+ case $host_os in -+ aix3*) -+ cat <<\_LT_EOF >> "$cfgfile" -+# AIX sometimes has problems with the GCC collect2 program. For some -+# reason, if we set the COLLECT_NAMES environment variable, the problems -+# vanish in a puff of smoke. -+if test "X${COLLECT_NAMES+set}" != Xset; then -+ COLLECT_NAMES= -+ export COLLECT_NAMES -+fi -+_LT_EOF -+ ;; -+ esac -+ -+ -+ltmain="$ac_aux_dir/ltmain.sh" -+ -+ -+ # We use sed instead of cat because bash on DJGPP gets confused if -+ # if finds mixed CR/LF and LF-only lines. Since sed operates in -+ # text mode, it properly converts lines to CR/LF. This bash problem -+ # is reportedly fixed, but why not run on old versions too? -+ sed '$q' "$ltmain" >> "$cfgfile" \ -+ || (rm -f "$cfgfile"; exit 1) -+ -+ if test x"$xsi_shell" = xyes; then -+ sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -+func_dirname ()\ -+{\ -+\ case ${1} in\ -+\ */*) func_dirname_result="${1%/*}${2}" ;;\ -+\ * ) func_dirname_result="${3}" ;;\ -+\ esac\ -+} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_basename ()$/,/^} # func_basename /c\ -+func_basename ()\ -+{\ -+\ func_basename_result="${1##*/}"\ -+} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -+func_dirname_and_basename ()\ -+{\ -+\ case ${1} in\ -+\ */*) func_dirname_result="${1%/*}${2}" ;;\ -+\ * ) func_dirname_result="${3}" ;;\ -+\ esac\ -+\ func_basename_result="${1##*/}"\ -+} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -+func_stripname ()\ -+{\ -+\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -+\ # positional parameters, so assign one to ordinary parameter first.\ -+\ func_stripname_result=${3}\ -+\ func_stripname_result=${func_stripname_result#"${1}"}\ -+\ func_stripname_result=${func_stripname_result%"${2}"}\ -+} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -+func_split_long_opt ()\ -+{\ -+\ func_split_long_opt_name=${1%%=*}\ -+\ func_split_long_opt_arg=${1#*=}\ -+} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -+func_split_short_opt ()\ -+{\ -+\ func_split_short_opt_arg=${1#??}\ -+\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -+} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -+func_lo2o ()\ -+{\ -+\ case ${1} in\ -+\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -+\ *) func_lo2o_result=${1} ;;\ -+\ esac\ -+} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_xform ()$/,/^} # func_xform /c\ -+func_xform ()\ -+{\ -+ func_xform_result=${1%.*}.lo\ -+} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_arith ()$/,/^} # func_arith /c\ -+func_arith ()\ -+{\ -+ func_arith_result=$(( $* ))\ -+} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_len ()$/,/^} # func_len /c\ -+func_len ()\ -+{\ -+ func_len_result=${#1}\ -+} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+fi -+ -+if test x"$lt_shell_append" = xyes; then -+ sed -e '/^func_append ()$/,/^} # func_append /c\ -+func_append ()\ -+{\ -+ eval "${1}+=\\${2}"\ -+} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -+func_append_quoted ()\ -+{\ -+\ func_quote_for_eval "${2}"\ -+\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -+} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+ -+ -+ # Save a `func_append' function call where possible by direct use of '+=' -+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+ test 0 -eq $? || _lt_function_replace_fail=: -+else -+ # Save a `func_append' function call even when '+=' is not available -+ sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+ test 0 -eq $? || _lt_function_replace_fail=: -+fi -+ -+if test x"$_lt_function_replace_fail" = x":"; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -+$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -+fi -+ -+ -+ mv -f "$cfgfile" "$ofile" || -+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") -+ chmod +x "$ofile" -+ -+ ;; -+ -+ esac -+done # for ac_tag -+ -+ -+as_fn_exit 0 -+_ACEOF -+ac_clean_files=$ac_clean_files_save -+ -+test $ac_write_fail = 0 || -+ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 -+ -+ -+# configure is writing to config.log, and then calls config.status. -+# config.status does its own redirection, appending to config.log. -+# Unfortunately, on DOS this fails, as config.log is still kept open -+# by configure, so config.status won't be able to write to it; its -+# output is simply discarded. So we exec the FD to /dev/null, -+# effectively closing config.log, so it can be properly (re)opened and -+# appended to by config.status. When coming back to configure, we -+# need to make the FD available again. -+if test "$no_create" != yes; then -+ ac_cs_success=: -+ ac_config_status_args= -+ test "$silent" = yes && -+ ac_config_status_args="$ac_config_status_args --quiet" -+ exec 5>/dev/null -+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false -+ exec 5>>config.log -+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which -+ # would make configure fail if this is the last instruction. -+ $ac_cs_success || as_fn_exit 1 -+fi -+if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then -+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -+$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -+fi -+ -diff --git a/libclamav/libmspack-0.4alpha/configure.ac b/libclamav/libmspack-0.4alpha/configure.ac -new file mode 100644 -index 000000000000..55fb6ce5ee9d ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/configure.ac -@@ -0,0 +1,50 @@ -+# -*- Autoconf -*- -+# Process this file with autoconf to produce a configure script. -+AC_PREREQ(2.59) -+AC_INIT([libmspack],[0.4alpha],[kyzer@4u.net]) -+AC_CONFIG_MACRO_DIR([m4]) -+AM_INIT_AUTOMAKE -+AC_CONFIG_SRCDIR([mspack/mspack.h]) -+AC_CONFIG_HEADER([config.h]) -+ -+dnl Enable silent rules by default (if yet support in automake) -+dnl use 'make V=1' to look at verbose commandline -+m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])]) -+ -+# --enable-debug option -+AC_ARG_ENABLE(debug, -+ AS_HELP_STRING(--enable-debug,enable debugging), -+ enable_debug=$enableval, -+ enable_debug=no) -+if test x$enable_debug = xyes; then -+ AC_DEFINE(DEBUG, 1, [Turn debugging mode on?]) -+fi -+AM_CONDITIONAL(DEBUG, test x$enable_debug = 'xyes') -+ -+# Checks for programs. -+AC_PROG_CC -+AM_CONDITIONAL(GCC, test x$GCC = 'xyes') -+AC_PROG_INSTALL -+LT_INIT -+AC_EXEEXT -+ -+# Checks for header files. -+AC_HEADER_STDC -+AC_CHECK_HEADERS([ctype.h limits.h stdlib.h wctype.h]) -+ -+# Checks for typedefs, structures, and compiler characteristics. -+AC_C_CONST -+AC_C_INLINE -+AC_TYPE_MODE_T -+AC_TYPE_OFF_T -+AC_TYPE_SIZE_T -+AC_CHECK_SIZEOF([off_t]) -+AC_CHECK_FUNCS([tolower towlower]) -+ -+# largefile support -+AC_SYS_LARGEFILE -+AC_FUNC_FSEEKO -+ -+# Checks for library functions. -+AC_CONFIG_FILES([Makefile doc/Makefile doc/Doxyfile libmspack.pc]) -+AC_OUTPUT -diff --git a/libclamav/libmspack-0.4alpha/depcomp b/libclamav/libmspack-0.4alpha/depcomp -new file mode 100755 -index 000000000000..bd0ac089584a ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/depcomp -@@ -0,0 +1,688 @@ -+#! /bin/sh -+# depcomp - compile a program generating dependencies as side-effects -+ -+scriptversion=2011-12-04.11; # UTC -+ -+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009, 2010, -+# 2011 Free Software Foundation, Inc. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2, or (at your option) -+# any later version. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+# Originally written by Alexandre Oliva . -+ -+case $1 in -+ '') -+ echo "$0: No command. Try \`$0 --help' for more information." 1>&2 -+ exit 1; -+ ;; -+ -h | --h*) -+ cat <<\EOF -+Usage: depcomp [--help] [--version] PROGRAM [ARGS] -+ -+Run PROGRAMS ARGS to compile a file, generating dependencies -+as side-effects. -+ -+Environment variables: -+ depmode Dependency tracking mode. -+ source Source file read by `PROGRAMS ARGS'. -+ object Object file output by `PROGRAMS ARGS'. -+ DEPDIR directory where to store dependencies. -+ depfile Dependency file to output. -+ tmpdepfile Temporary file to use when outputting dependencies. -+ libtool Whether libtool is used (yes/no). -+ -+Report bugs to . -+EOF -+ exit $? -+ ;; -+ -v | --v*) -+ echo "depcomp $scriptversion" -+ exit $? -+ ;; -+esac -+ -+if test -z "$depmode" || test -z "$source" || test -z "$object"; then -+ echo "depcomp: Variables source, object and depmode must be set" 1>&2 -+ exit 1 -+fi -+ -+# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -+depfile=${depfile-`echo "$object" | -+ sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -+tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} -+ -+rm -f "$tmpdepfile" -+ -+# Some modes work just like other modes, but use different flags. We -+# parameterize here, but still list the modes in the big case below, -+# to make depend.m4 easier to write. Note that we *cannot* use a case -+# here, because this file can only contain one case statement. -+if test "$depmode" = hp; then -+ # HP compiler uses -M and no extra arg. -+ gccflag=-M -+ depmode=gcc -+fi -+ -+if test "$depmode" = dashXmstdout; then -+ # This is just like dashmstdout with a different argument. -+ dashmflag=-xM -+ depmode=dashmstdout -+fi -+ -+cygpath_u="cygpath -u -f -" -+if test "$depmode" = msvcmsys; then -+ # This is just like msvisualcpp but w/o cygpath translation. -+ # Just convert the backslash-escaped backslashes to single forward -+ # slashes to satisfy depend.m4 -+ cygpath_u='sed s,\\\\,/,g' -+ depmode=msvisualcpp -+fi -+ -+if test "$depmode" = msvc7msys; then -+ # This is just like msvc7 but w/o cygpath translation. -+ # Just convert the backslash-escaped backslashes to single forward -+ # slashes to satisfy depend.m4 -+ cygpath_u='sed s,\\\\,/,g' -+ depmode=msvc7 -+fi -+ -+case "$depmode" in -+gcc3) -+## gcc 3 implements dependency tracking that does exactly what -+## we want. Yay! Note: for some reason libtool 1.4 doesn't like -+## it if -MD -MP comes after the -MF stuff. Hmm. -+## Unfortunately, FreeBSD c89 acceptance of flags depends upon -+## the command line argument order; so add the flags where they -+## appear in depend2.am. Note that the slowdown incurred here -+## affects only configure: in makefiles, %FASTDEP% shortcuts this. -+ for arg -+ do -+ case $arg in -+ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; -+ *) set fnord "$@" "$arg" ;; -+ esac -+ shift # fnord -+ shift # $arg -+ done -+ "$@" -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ mv "$tmpdepfile" "$depfile" -+ ;; -+ -+gcc) -+## There are various ways to get dependency output from gcc. Here's -+## why we pick this rather obscure method: -+## - Don't want to use -MD because we'd like the dependencies to end -+## up in a subdir. Having to rename by hand is ugly. -+## (We might end up doing this anyway to support other compilers.) -+## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -+## -MM, not -M (despite what the docs say). -+## - Using -M directly means running the compiler twice (even worse -+## than renaming). -+ if test -z "$gccflag"; then -+ gccflag=-MD, -+ fi -+ "$@" -Wp,"$gccflag$tmpdepfile" -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ rm -f "$depfile" -+ echo "$object : \\" > "$depfile" -+ alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -+## The second -e expression handles DOS-style file names with drive letters. -+ sed -e 's/^[^:]*: / /' \ -+ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -+## This next piece of magic avoids the `deleted header file' problem. -+## The problem is that when a header file which appears in a .P file -+## is deleted, the dependency causes make to die (because there is -+## typically no way to rebuild the header). We avoid this by adding -+## dummy dependencies for each header file. Too bad gcc doesn't do -+## this for us directly. -+ tr ' ' ' -+' < "$tmpdepfile" | -+## Some versions of gcc put a space before the `:'. On the theory -+## that the space means something, we add a space to the output as -+## well. hp depmode also adds that space, but also prefixes the VPATH -+## to the object. Take care to not repeat it in the output. -+## Some versions of the HPUX 10.20 sed can't process this invocation -+## correctly. Breaking it into two sed invocations is a workaround. -+ sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ -+ | sed -e 's/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+hp) -+ # This case exists only to let depend.m4 do its work. It works by -+ # looking at the text of this script. This case will never be run, -+ # since it is checked for above. -+ exit 1 -+ ;; -+ -+sgi) -+ if test "$libtool" = yes; then -+ "$@" "-Wp,-MDupdate,$tmpdepfile" -+ else -+ "$@" -MDupdate "$tmpdepfile" -+ fi -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ rm -f "$depfile" -+ -+ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files -+ echo "$object : \\" > "$depfile" -+ -+ # Clip off the initial element (the dependent). Don't try to be -+ # clever and replace this with sed code, as IRIX sed won't handle -+ # lines with more than a fixed number of characters (4096 in -+ # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; -+ # the IRIX cc adds comments like `#:fec' to the end of the -+ # dependency line. -+ tr ' ' ' -+' < "$tmpdepfile" \ -+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ -+ tr ' -+' ' ' >> "$depfile" -+ echo >> "$depfile" -+ -+ # The second pass generates a dummy entry for each header file. -+ tr ' ' ' -+' < "$tmpdepfile" \ -+ | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ -+ >> "$depfile" -+ else -+ # The sourcefile does not contain any dependencies, so just -+ # store a dummy comment line, to avoid errors with the Makefile -+ # "include basename.Plo" scheme. -+ echo "#dummy" > "$depfile" -+ fi -+ rm -f "$tmpdepfile" -+ ;; -+ -+aix) -+ # The C for AIX Compiler uses -M and outputs the dependencies -+ # in a .u file. In older versions, this file always lives in the -+ # current directory. Also, the AIX compiler puts `$object:' at the -+ # start of each line; $object doesn't have directory information. -+ # Version 6 uses the directory in both cases. -+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` -+ test "x$dir" = "x$object" && dir= -+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` -+ if test "$libtool" = yes; then -+ tmpdepfile1=$dir$base.u -+ tmpdepfile2=$base.u -+ tmpdepfile3=$dir.libs/$base.u -+ "$@" -Wc,-M -+ else -+ tmpdepfile1=$dir$base.u -+ tmpdepfile2=$dir$base.u -+ tmpdepfile3=$dir$base.u -+ "$@" -M -+ fi -+ stat=$? -+ -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" -+ exit $stat -+ fi -+ -+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" -+ do -+ test -f "$tmpdepfile" && break -+ done -+ if test -f "$tmpdepfile"; then -+ # Each line is of the form `foo.o: dependent.h'. -+ # Do two passes, one to just change these to -+ # `$object: dependent.h' and one to simply `dependent.h:'. -+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" -+ # That's a tab and a space in the []. -+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" -+ else -+ # The sourcefile does not contain any dependencies, so just -+ # store a dummy comment line, to avoid errors with the Makefile -+ # "include basename.Plo" scheme. -+ echo "#dummy" > "$depfile" -+ fi -+ rm -f "$tmpdepfile" -+ ;; -+ -+icc) -+ # Intel's C compiler understands `-MD -MF file'. However on -+ # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c -+ # ICC 7.0 will fill foo.d with something like -+ # foo.o: sub/foo.c -+ # foo.o: sub/foo.h -+ # which is wrong. We want: -+ # sub/foo.o: sub/foo.c -+ # sub/foo.o: sub/foo.h -+ # sub/foo.c: -+ # sub/foo.h: -+ # ICC 7.1 will output -+ # foo.o: sub/foo.c sub/foo.h -+ # and will wrap long lines using \ : -+ # foo.o: sub/foo.c ... \ -+ # sub/foo.h ... \ -+ # ... -+ -+ "$@" -MD -MF "$tmpdepfile" -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ rm -f "$depfile" -+ # Each line is of the form `foo.o: dependent.h', -+ # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. -+ # Do two passes, one to just change these to -+ # `$object: dependent.h' and one to simply `dependent.h:'. -+ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" -+ # Some versions of the HPUX 10.20 sed can't process this invocation -+ # correctly. Breaking it into two sed invocations is a workaround. -+ sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | -+ sed -e 's/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+hp2) -+ # The "hp" stanza above does not work with aCC (C++) and HP's ia64 -+ # compilers, which have integrated preprocessors. The correct option -+ # to use with these is +Maked; it writes dependencies to a file named -+ # 'foo.d', which lands next to the object file, wherever that -+ # happens to be. -+ # Much of this is similar to the tru64 case; see comments there. -+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` -+ test "x$dir" = "x$object" && dir= -+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` -+ if test "$libtool" = yes; then -+ tmpdepfile1=$dir$base.d -+ tmpdepfile2=$dir.libs/$base.d -+ "$@" -Wc,+Maked -+ else -+ tmpdepfile1=$dir$base.d -+ tmpdepfile2=$dir$base.d -+ "$@" +Maked -+ fi -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile1" "$tmpdepfile2" -+ exit $stat -+ fi -+ -+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" -+ do -+ test -f "$tmpdepfile" && break -+ done -+ if test -f "$tmpdepfile"; then -+ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" -+ # Add `dependent.h:' lines. -+ sed -ne '2,${ -+ s/^ *// -+ s/ \\*$// -+ s/$/:/ -+ p -+ }' "$tmpdepfile" >> "$depfile" -+ else -+ echo "#dummy" > "$depfile" -+ fi -+ rm -f "$tmpdepfile" "$tmpdepfile2" -+ ;; -+ -+tru64) -+ # The Tru64 compiler uses -MD to generate dependencies as a side -+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. -+ # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put -+ # dependencies in `foo.d' instead, so we check for that too. -+ # Subdirectories are respected. -+ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` -+ test "x$dir" = "x$object" && dir= -+ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` -+ -+ if test "$libtool" = yes; then -+ # With Tru64 cc, shared objects can also be used to make a -+ # static library. This mechanism is used in libtool 1.4 series to -+ # handle both shared and static libraries in a single compilation. -+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. -+ # -+ # With libtool 1.5 this exception was removed, and libtool now -+ # generates 2 separate objects for the 2 libraries. These two -+ # compilations output dependencies in $dir.libs/$base.o.d and -+ # in $dir$base.o.d. We have to check for both files, because -+ # one of the two compilations can be disabled. We should prefer -+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is -+ # automatically cleaned when .libs/ is deleted, while ignoring -+ # the former would cause a distcleancheck panic. -+ tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 -+ tmpdepfile2=$dir$base.o.d # libtool 1.5 -+ tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 -+ tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 -+ "$@" -Wc,-MD -+ else -+ tmpdepfile1=$dir$base.o.d -+ tmpdepfile2=$dir$base.d -+ tmpdepfile3=$dir$base.d -+ tmpdepfile4=$dir$base.d -+ "$@" -MD -+ fi -+ -+ stat=$? -+ if test $stat -eq 0; then : -+ else -+ rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" -+ exit $stat -+ fi -+ -+ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" -+ do -+ test -f "$tmpdepfile" && break -+ done -+ if test -f "$tmpdepfile"; then -+ sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" -+ # That's a tab and a space in the []. -+ sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" -+ else -+ echo "#dummy" > "$depfile" -+ fi -+ rm -f "$tmpdepfile" -+ ;; -+ -+msvc7) -+ if test "$libtool" = yes; then -+ showIncludes=-Wc,-showIncludes -+ else -+ showIncludes=-showIncludes -+ fi -+ "$@" $showIncludes > "$tmpdepfile" -+ stat=$? -+ grep -v '^Note: including file: ' "$tmpdepfile" -+ if test "$stat" = 0; then : -+ else -+ rm -f "$tmpdepfile" -+ exit $stat -+ fi -+ rm -f "$depfile" -+ echo "$object : \\" > "$depfile" -+ # The first sed program below extracts the file names and escapes -+ # backslashes for cygpath. The second sed program outputs the file -+ # name when reading, but also accumulates all include files in the -+ # hold buffer in order to output them again at the end. This only -+ # works with sed implementations that can handle large buffers. -+ sed < "$tmpdepfile" -n ' -+/^Note: including file: *\(.*\)/ { -+ s//\1/ -+ s/\\/\\\\/g -+ p -+}' | $cygpath_u | sort -u | sed -n ' -+s/ /\\ /g -+s/\(.*\)/ \1 \\/p -+s/.\(.*\) \\/\1:/ -+H -+$ { -+ s/.*/ / -+ G -+ p -+}' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+msvc7msys) -+ # This case exists only to let depend.m4 do its work. It works by -+ # looking at the text of this script. This case will never be run, -+ # since it is checked for above. -+ exit 1 -+ ;; -+ -+#nosideeffect) -+ # This comment above is used by automake to tell side-effect -+ # dependency tracking mechanisms from slower ones. -+ -+dashmstdout) -+ # Important note: in order to support this mode, a compiler *must* -+ # always write the preprocessed file to stdout, regardless of -o. -+ "$@" || exit $? -+ -+ # Remove the call to Libtool. -+ if test "$libtool" = yes; then -+ while test "X$1" != 'X--mode=compile'; do -+ shift -+ done -+ shift -+ fi -+ -+ # Remove `-o $object'. -+ IFS=" " -+ for arg -+ do -+ case $arg in -+ -o) -+ shift -+ ;; -+ $object) -+ shift -+ ;; -+ *) -+ set fnord "$@" "$arg" -+ shift # fnord -+ shift # $arg -+ ;; -+ esac -+ done -+ -+ test -z "$dashmflag" && dashmflag=-M -+ # Require at least two characters before searching for `:' -+ # in the target name. This is to cope with DOS-style filenames: -+ # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. -+ "$@" $dashmflag | -+ sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" -+ rm -f "$depfile" -+ cat < "$tmpdepfile" > "$depfile" -+ tr ' ' ' -+' < "$tmpdepfile" | \ -+## Some versions of the HPUX 10.20 sed can't process this invocation -+## correctly. Breaking it into two sed invocations is a workaround. -+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+dashXmstdout) -+ # This case only exists to satisfy depend.m4. It is never actually -+ # run, as this mode is specially recognized in the preamble. -+ exit 1 -+ ;; -+ -+makedepend) -+ "$@" || exit $? -+ # Remove any Libtool call -+ if test "$libtool" = yes; then -+ while test "X$1" != 'X--mode=compile'; do -+ shift -+ done -+ shift -+ fi -+ # X makedepend -+ shift -+ cleared=no eat=no -+ for arg -+ do -+ case $cleared in -+ no) -+ set ""; shift -+ cleared=yes ;; -+ esac -+ if test $eat = yes; then -+ eat=no -+ continue -+ fi -+ case "$arg" in -+ -D*|-I*) -+ set fnord "$@" "$arg"; shift ;; -+ # Strip any option that makedepend may not understand. Remove -+ # the object too, otherwise makedepend will parse it as a source file. -+ -arch) -+ eat=yes ;; -+ -*|$object) -+ ;; -+ *) -+ set fnord "$@" "$arg"; shift ;; -+ esac -+ done -+ obj_suffix=`echo "$object" | sed 's/^.*\././'` -+ touch "$tmpdepfile" -+ ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" -+ rm -f "$depfile" -+ # makedepend may prepend the VPATH from the source file name to the object. -+ # No need to regex-escape $object, excess matching of '.' is harmless. -+ sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" -+ sed '1,2d' "$tmpdepfile" | tr ' ' ' -+' | \ -+## Some versions of the HPUX 10.20 sed can't process this invocation -+## correctly. Breaking it into two sed invocations is a workaround. -+ sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" "$tmpdepfile".bak -+ ;; -+ -+cpp) -+ # Important note: in order to support this mode, a compiler *must* -+ # always write the preprocessed file to stdout. -+ "$@" || exit $? -+ -+ # Remove the call to Libtool. -+ if test "$libtool" = yes; then -+ while test "X$1" != 'X--mode=compile'; do -+ shift -+ done -+ shift -+ fi -+ -+ # Remove `-o $object'. -+ IFS=" " -+ for arg -+ do -+ case $arg in -+ -o) -+ shift -+ ;; -+ $object) -+ shift -+ ;; -+ *) -+ set fnord "$@" "$arg" -+ shift # fnord -+ shift # $arg -+ ;; -+ esac -+ done -+ -+ "$@" -E | -+ sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ -+ -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | -+ sed '$ s: \\$::' > "$tmpdepfile" -+ rm -f "$depfile" -+ echo "$object : \\" > "$depfile" -+ cat < "$tmpdepfile" >> "$depfile" -+ sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+msvisualcpp) -+ # Important note: in order to support this mode, a compiler *must* -+ # always write the preprocessed file to stdout. -+ "$@" || exit $? -+ -+ # Remove the call to Libtool. -+ if test "$libtool" = yes; then -+ while test "X$1" != 'X--mode=compile'; do -+ shift -+ done -+ shift -+ fi -+ -+ IFS=" " -+ for arg -+ do -+ case "$arg" in -+ -o) -+ shift -+ ;; -+ $object) -+ shift -+ ;; -+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") -+ set fnord "$@" -+ shift -+ shift -+ ;; -+ *) -+ set fnord "$@" "$arg" -+ shift -+ shift -+ ;; -+ esac -+ done -+ "$@" -E 2>/dev/null | -+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" -+ rm -f "$depfile" -+ echo "$object : \\" > "$depfile" -+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" -+ echo " " >> "$depfile" -+ sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" -+ rm -f "$tmpdepfile" -+ ;; -+ -+msvcmsys) -+ # This case exists only to let depend.m4 do its work. It works by -+ # looking at the text of this script. This case will never be run, -+ # since it is checked for above. -+ exit 1 -+ ;; -+ -+none) -+ exec "$@" -+ ;; -+ -+*) -+ echo "Unknown depmode $depmode" 1>&2 -+ exit 1 -+ ;; -+esac -+ -+exit 0 -+ -+# Local Variables: -+# mode: shell-script -+# sh-indentation: 2 -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "scriptversion=" -+# time-stamp-format: "%:y-%02m-%02d.%02H" -+# time-stamp-time-zone: "UTC" -+# time-stamp-end: "; # UTC" -+# End: -diff --git a/libclamav/libmspack-0.4alpha/install-sh b/libclamav/libmspack-0.4alpha/install-sh -new file mode 100755 -index 000000000000..6781b987bdbc ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/install-sh -@@ -0,0 +1,520 @@ -+#!/bin/sh -+# install - install a program, script, or datafile -+ -+scriptversion=2009-04-28.21; # UTC -+ -+# This originates from X11R5 (mit/util/scripts/install.sh), which was -+# later released in X11R6 (xc/config/util/install.sh) with the -+# following copyright and license. -+# -+# Copyright (C) 1994 X Consortium -+# -+# Permission is hereby granted, free of charge, to any person obtaining a copy -+# of this software and associated documentation files (the "Software"), to -+# deal in the Software without restriction, including without limitation the -+# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -+# sell copies of the Software, and to permit persons to whom the Software is -+# furnished to do so, subject to the following conditions: -+# -+# The above copyright notice and this permission notice shall be included in -+# all copies or substantial portions of the Software. -+# -+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -+# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -+# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -+# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -+# -+# Except as contained in this notice, the name of the X Consortium shall not -+# be used in advertising or otherwise to promote the sale, use or other deal- -+# ings in this Software without prior written authorization from the X Consor- -+# tium. -+# -+# -+# FSF changes to this file are in the public domain. -+# -+# Calling this script install-sh is preferred over install.sh, to prevent -+# `make' implicit rules from creating a file called install from it -+# when there is no Makefile. -+# -+# This script is compatible with the BSD install script, but was written -+# from scratch. -+ -+nl=' -+' -+IFS=" "" $nl" -+ -+# set DOITPROG to echo to test this script -+ -+# Don't use :- since 4.3BSD and earlier shells don't like it. -+doit=${DOITPROG-} -+if test -z "$doit"; then -+ doit_exec=exec -+else -+ doit_exec=$doit -+fi -+ -+# Put in absolute file names if you don't have them in your path; -+# or use environment vars. -+ -+chgrpprog=${CHGRPPROG-chgrp} -+chmodprog=${CHMODPROG-chmod} -+chownprog=${CHOWNPROG-chown} -+cmpprog=${CMPPROG-cmp} -+cpprog=${CPPROG-cp} -+mkdirprog=${MKDIRPROG-mkdir} -+mvprog=${MVPROG-mv} -+rmprog=${RMPROG-rm} -+stripprog=${STRIPPROG-strip} -+ -+posix_glob='?' -+initialize_posix_glob=' -+ test "$posix_glob" != "?" || { -+ if (set -f) 2>/dev/null; then -+ posix_glob= -+ else -+ posix_glob=: -+ fi -+ } -+' -+ -+posix_mkdir= -+ -+# Desired mode of installed file. -+mode=0755 -+ -+chgrpcmd= -+chmodcmd=$chmodprog -+chowncmd= -+mvcmd=$mvprog -+rmcmd="$rmprog -f" -+stripcmd= -+ -+src= -+dst= -+dir_arg= -+dst_arg= -+ -+copy_on_change=false -+no_target_directory= -+ -+usage="\ -+Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE -+ or: $0 [OPTION]... SRCFILES... DIRECTORY -+ or: $0 [OPTION]... -t DIRECTORY SRCFILES... -+ or: $0 [OPTION]... -d DIRECTORIES... -+ -+In the 1st form, copy SRCFILE to DSTFILE. -+In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -+In the 4th, create DIRECTORIES. -+ -+Options: -+ --help display this help and exit. -+ --version display version info and exit. -+ -+ -c (ignored) -+ -C install only if different (preserve the last data modification time) -+ -d create directories instead of installing files. -+ -g GROUP $chgrpprog installed files to GROUP. -+ -m MODE $chmodprog installed files to MODE. -+ -o USER $chownprog installed files to USER. -+ -s $stripprog installed files. -+ -t DIRECTORY install into DIRECTORY. -+ -T report an error if DSTFILE is a directory. -+ -+Environment variables override the default commands: -+ CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG -+ RMPROG STRIPPROG -+" -+ -+while test $# -ne 0; do -+ case $1 in -+ -c) ;; -+ -+ -C) copy_on_change=true;; -+ -+ -d) dir_arg=true;; -+ -+ -g) chgrpcmd="$chgrpprog $2" -+ shift;; -+ -+ --help) echo "$usage"; exit $?;; -+ -+ -m) mode=$2 -+ case $mode in -+ *' '* | *' '* | *' -+'* | *'*'* | *'?'* | *'['*) -+ echo "$0: invalid mode: $mode" >&2 -+ exit 1;; -+ esac -+ shift;; -+ -+ -o) chowncmd="$chownprog $2" -+ shift;; -+ -+ -s) stripcmd=$stripprog;; -+ -+ -t) dst_arg=$2 -+ shift;; -+ -+ -T) no_target_directory=true;; -+ -+ --version) echo "$0 $scriptversion"; exit $?;; -+ -+ --) shift -+ break;; -+ -+ -*) echo "$0: invalid option: $1" >&2 -+ exit 1;; -+ -+ *) break;; -+ esac -+ shift -+done -+ -+if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then -+ # When -d is used, all remaining arguments are directories to create. -+ # When -t is used, the destination is already specified. -+ # Otherwise, the last argument is the destination. Remove it from $@. -+ for arg -+ do -+ if test -n "$dst_arg"; then -+ # $@ is not empty: it contains at least $arg. -+ set fnord "$@" "$dst_arg" -+ shift # fnord -+ fi -+ shift # arg -+ dst_arg=$arg -+ done -+fi -+ -+if test $# -eq 0; then -+ if test -z "$dir_arg"; then -+ echo "$0: no input file specified." >&2 -+ exit 1 -+ fi -+ # It's OK to call `install-sh -d' without argument. -+ # This can happen when creating conditional directories. -+ exit 0 -+fi -+ -+if test -z "$dir_arg"; then -+ trap '(exit $?); exit' 1 2 13 15 -+ -+ # Set umask so as not to create temps with too-generous modes. -+ # However, 'strip' requires both read and write access to temps. -+ case $mode in -+ # Optimize common cases. -+ *644) cp_umask=133;; -+ *755) cp_umask=22;; -+ -+ *[0-7]) -+ if test -z "$stripcmd"; then -+ u_plus_rw= -+ else -+ u_plus_rw='% 200' -+ fi -+ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; -+ *) -+ if test -z "$stripcmd"; then -+ u_plus_rw= -+ else -+ u_plus_rw=,u+rw -+ fi -+ cp_umask=$mode$u_plus_rw;; -+ esac -+fi -+ -+for src -+do -+ # Protect names starting with `-'. -+ case $src in -+ -*) src=./$src;; -+ esac -+ -+ if test -n "$dir_arg"; then -+ dst=$src -+ dstdir=$dst -+ test -d "$dstdir" -+ dstdir_status=$? -+ else -+ -+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command -+ # might cause directories to be created, which would be especially bad -+ # if $src (and thus $dsttmp) contains '*'. -+ if test ! -f "$src" && test ! -d "$src"; then -+ echo "$0: $src does not exist." >&2 -+ exit 1 -+ fi -+ -+ if test -z "$dst_arg"; then -+ echo "$0: no destination specified." >&2 -+ exit 1 -+ fi -+ -+ dst=$dst_arg -+ # Protect names starting with `-'. -+ case $dst in -+ -*) dst=./$dst;; -+ esac -+ -+ # If destination is a directory, append the input filename; won't work -+ # if double slashes aren't ignored. -+ if test -d "$dst"; then -+ if test -n "$no_target_directory"; then -+ echo "$0: $dst_arg: Is a directory" >&2 -+ exit 1 -+ fi -+ dstdir=$dst -+ dst=$dstdir/`basename "$src"` -+ dstdir_status=0 -+ else -+ # Prefer dirname, but fall back on a substitute if dirname fails. -+ dstdir=` -+ (dirname "$dst") 2>/dev/null || -+ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ -+ X"$dst" : 'X\(//\)[^/]' \| \ -+ X"$dst" : 'X\(//\)$' \| \ -+ X"$dst" : 'X\(/\)' \| . 2>/dev/null || -+ echo X"$dst" | -+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)[^/].*/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\/\)$/{ -+ s//\1/ -+ q -+ } -+ /^X\(\/\).*/{ -+ s//\1/ -+ q -+ } -+ s/.*/./; q' -+ ` -+ -+ test -d "$dstdir" -+ dstdir_status=$? -+ fi -+ fi -+ -+ obsolete_mkdir_used=false -+ -+ if test $dstdir_status != 0; then -+ case $posix_mkdir in -+ '') -+ # Create intermediate dirs using mode 755 as modified by the umask. -+ # This is like FreeBSD 'install' as of 1997-10-28. -+ umask=`umask` -+ case $stripcmd.$umask in -+ # Optimize common cases. -+ *[2367][2367]) mkdir_umask=$umask;; -+ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; -+ -+ *[0-7]) -+ mkdir_umask=`expr $umask + 22 \ -+ - $umask % 100 % 40 + $umask % 20 \ -+ - $umask % 10 % 4 + $umask % 2 -+ `;; -+ *) mkdir_umask=$umask,go-w;; -+ esac -+ -+ # With -d, create the new directory with the user-specified mode. -+ # Otherwise, rely on $mkdir_umask. -+ if test -n "$dir_arg"; then -+ mkdir_mode=-m$mode -+ else -+ mkdir_mode= -+ fi -+ -+ posix_mkdir=false -+ case $umask in -+ *[123567][0-7][0-7]) -+ # POSIX mkdir -p sets u+wx bits regardless of umask, which -+ # is incompatible with FreeBSD 'install' when (umask & 300) != 0. -+ ;; -+ *) -+ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ -+ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 -+ -+ if (umask $mkdir_umask && -+ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 -+ then -+ if test -z "$dir_arg" || { -+ # Check for POSIX incompatibilities with -m. -+ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or -+ # other-writeable bit of parent directory when it shouldn't. -+ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. -+ ls_ld_tmpdir=`ls -ld "$tmpdir"` -+ case $ls_ld_tmpdir in -+ d????-?r-*) different_mode=700;; -+ d????-?--*) different_mode=755;; -+ *) false;; -+ esac && -+ $mkdirprog -m$different_mode -p -- "$tmpdir" && { -+ ls_ld_tmpdir_1=`ls -ld "$tmpdir"` -+ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" -+ } -+ } -+ then posix_mkdir=: -+ fi -+ rmdir "$tmpdir/d" "$tmpdir" -+ else -+ # Remove any dirs left behind by ancient mkdir implementations. -+ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null -+ fi -+ trap '' 0;; -+ esac;; -+ esac -+ -+ if -+ $posix_mkdir && ( -+ umask $mkdir_umask && -+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" -+ ) -+ then : -+ else -+ -+ # The umask is ridiculous, or mkdir does not conform to POSIX, -+ # or it failed possibly due to a race condition. Create the -+ # directory the slow way, step by step, checking for races as we go. -+ -+ case $dstdir in -+ /*) prefix='/';; -+ -*) prefix='./';; -+ *) prefix='';; -+ esac -+ -+ eval "$initialize_posix_glob" -+ -+ oIFS=$IFS -+ IFS=/ -+ $posix_glob set -f -+ set fnord $dstdir -+ shift -+ $posix_glob set +f -+ IFS=$oIFS -+ -+ prefixes= -+ -+ for d -+ do -+ test -z "$d" && continue -+ -+ prefix=$prefix$d -+ if test -d "$prefix"; then -+ prefixes= -+ else -+ if $posix_mkdir; then -+ (umask=$mkdir_umask && -+ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break -+ # Don't fail if two instances are running concurrently. -+ test -d "$prefix" || exit 1 -+ else -+ case $prefix in -+ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; -+ *) qprefix=$prefix;; -+ esac -+ prefixes="$prefixes '$qprefix'" -+ fi -+ fi -+ prefix=$prefix/ -+ done -+ -+ if test -n "$prefixes"; then -+ # Don't fail if two instances are running concurrently. -+ (umask $mkdir_umask && -+ eval "\$doit_exec \$mkdirprog $prefixes") || -+ test -d "$dstdir" || exit 1 -+ obsolete_mkdir_used=true -+ fi -+ fi -+ fi -+ -+ if test -n "$dir_arg"; then -+ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && -+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && -+ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || -+ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 -+ else -+ -+ # Make a couple of temp file names in the proper directory. -+ dsttmp=$dstdir/_inst.$$_ -+ rmtmp=$dstdir/_rm.$$_ -+ -+ # Trap to clean up those temp files at exit. -+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 -+ -+ # Copy the file name to the temp name. -+ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && -+ -+ # and set any options; do chmod last to preserve setuid bits. -+ # -+ # If any of these fail, we abort the whole thing. If we want to -+ # ignore errors from any of these, just make sure not to ignore -+ # errors from the above "$doit $cpprog $src $dsttmp" command. -+ # -+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && -+ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && -+ { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && -+ { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && -+ -+ # If -C, don't bother to copy if it wouldn't change the file. -+ if $copy_on_change && -+ old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && -+ new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && -+ -+ eval "$initialize_posix_glob" && -+ $posix_glob set -f && -+ set X $old && old=:$2:$4:$5:$6 && -+ set X $new && new=:$2:$4:$5:$6 && -+ $posix_glob set +f && -+ -+ test "$old" = "$new" && -+ $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 -+ then -+ rm -f "$dsttmp" -+ else -+ # Rename the file to the real destination. -+ $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || -+ -+ # The rename failed, perhaps because mv can't rename something else -+ # to itself, or perhaps because mv is so ancient that it does not -+ # support -f. -+ { -+ # Now remove or move aside any old file at destination location. -+ # We try this two ways since rm can't unlink itself on some -+ # systems and the destination file might be busy for other -+ # reasons. In this case, the final cleanup might fail but the new -+ # file should still install successfully. -+ { -+ test ! -f "$dst" || -+ $doit $rmcmd -f "$dst" 2>/dev/null || -+ { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && -+ { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } -+ } || -+ { echo "$0: cannot unlink or rename $dst" >&2 -+ (exit 1); exit 1 -+ } -+ } && -+ -+ # Now rename the file to the real destination. -+ $doit $mvcmd "$dsttmp" "$dst" -+ } -+ fi || exit 1 -+ -+ trap '' 0 -+ fi -+done -+ -+# Local variables: -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "scriptversion=" -+# time-stamp-format: "%:y-%02m-%02d.%02H" -+# time-stamp-time-zone: "UTC" -+# time-stamp-end: "; # UTC" -+# End: -diff --git a/libclamav/libmspack-0.4alpha/libmspack.pc.in b/libclamav/libmspack-0.4alpha/libmspack.pc.in -new file mode 100644 -index 000000000000..44b09f350580 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/libmspack.pc.in -@@ -0,0 +1,10 @@ -+prefix=@prefix@ -+exec_prefix=@exec_prefix@ -+libdir=@libdir@ -+includedir=@includedir@ -+ -+Name: @PACKAGE@ -+Description: Compressors and decompressors for Microsoft formats -+Version: @VERSION@ -+Libs: -L${libdir} -lmspack -+Cflags: -I${includedir} -diff --git a/libclamav/libmspack-0.4alpha/ltmain.sh b/libclamav/libmspack-0.4alpha/ltmain.sh -new file mode 100644 -index 000000000000..c2852d856135 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/ltmain.sh -@@ -0,0 +1,9661 @@ -+ -+# libtool (GNU libtool) 2.4.2 -+# Written by Gordon Matzigkeit , 1996 -+ -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -+# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. -+# This is free software; see the source for copying conditions. There is NO -+# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -+ -+# GNU Libtool is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2 of the License, or -+# (at your option) any later version. -+# -+# As a special exception to the GNU General Public License, -+# if you distribute this file as part of a program or library that -+# is built using GNU Libtool, you may include this file under the -+# same distribution terms that you use for the rest of that program. -+# -+# GNU Libtool is distributed in the hope that it will be useful, but -+# WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+# General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with GNU Libtool; see the file COPYING. If not, a copy -+# can be downloaded from http://www.gnu.org/licenses/gpl.html, -+# or obtained by writing to the Free Software Foundation, Inc., -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+ -+# Usage: $progname [OPTION]... [MODE-ARG]... -+# -+# Provide generalized library-building support services. -+# -+# --config show all configuration variables -+# --debug enable verbose shell tracing -+# -n, --dry-run display commands without modifying any files -+# --features display basic configuration information and exit -+# --mode=MODE use operation mode MODE -+# --preserve-dup-deps don't remove duplicate dependency libraries -+# --quiet, --silent don't print informational messages -+# --no-quiet, --no-silent -+# print informational messages (default) -+# --no-warn don't display warning messages -+# --tag=TAG use configuration variables from tag TAG -+# -v, --verbose print more informational messages than default -+# --no-verbose don't print the extra informational messages -+# --version print version information -+# -h, --help, --help-all print short, long, or detailed help message -+# -+# MODE must be one of the following: -+# -+# clean remove files from the build directory -+# compile compile a source file into a libtool object -+# execute automatically set library path, then run a program -+# finish complete the installation of libtool libraries -+# install install libraries or executables -+# link create a library or an executable -+# uninstall remove libraries from an installed directory -+# -+# MODE-ARGS vary depending on the MODE. When passed as first option, -+# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -+# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -+# -+# When reporting a bug, please describe a test case to reproduce it and -+# include the following information: -+# -+# host-triplet: $host -+# shell: $SHELL -+# compiler: $LTCC -+# compiler flags: $LTCFLAGS -+# linker: $LD (gnu? $with_gnu_ld) -+# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1 -+# automake: $automake_version -+# autoconf: $autoconf_version -+# -+# Report bugs to . -+# GNU libtool home page: . -+# General help using GNU software: . -+ -+PROGRAM=libtool -+PACKAGE=libtool -+VERSION="2.4.2 Debian-2.4.2-1ubuntu1" -+TIMESTAMP="" -+package_revision=1.3337 -+ -+# Be Bourne compatible -+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '${1+"$@"}'='"$@"' -+ setopt NO_GLOB_SUBST -+else -+ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -+fi -+BIN_SH=xpg4; export BIN_SH # for Tru64 -+DUALCASE=1; export DUALCASE # for MKS sh -+ -+# A function that is used when there is no print builtin or printf. -+func_fallback_echo () -+{ -+ eval 'cat <<_LTECHO_EOF -+$1 -+_LTECHO_EOF' -+} -+ -+# NLS nuisances: We save the old values to restore during execute mode. -+lt_user_locale= -+lt_safe_locale= -+for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -+do -+ eval "if test \"\${$lt_var+set}\" = set; then -+ save_$lt_var=\$$lt_var -+ $lt_var=C -+ export $lt_var -+ lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" -+ lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" -+ fi" -+done -+LC_ALL=C -+LANGUAGE=C -+export LANGUAGE LC_ALL -+ -+$lt_unset CDPATH -+ -+ -+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -+# is ksh but when the shell is invoked as "sh" and the current value of -+# the _XPG environment variable is not equal to 1 (one), the special -+# positional parameter $0, within a function call, is the name of the -+# function. -+progpath="$0" -+ -+ -+ -+: ${CP="cp -f"} -+test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -+: ${MAKE="make"} -+: ${MKDIR="mkdir"} -+: ${MV="mv -f"} -+: ${RM="rm -f"} -+: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -+: ${Xsed="$SED -e 1s/^X//"} -+ -+# Global variables: -+EXIT_SUCCESS=0 -+EXIT_FAILURE=1 -+EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -+EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. -+ -+exit_status=$EXIT_SUCCESS -+ -+# Make sure IFS has a sensible default -+lt_nl=' -+' -+IFS=" $lt_nl" -+ -+dirname="s,/[^/]*$,," -+basename="s,^.*/,," -+ -+# func_dirname file append nondir_replacement -+# Compute the dirname of FILE. If nonempty, add APPEND to the result, -+# otherwise set result to NONDIR_REPLACEMENT. -+func_dirname () -+{ -+ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` -+ if test "X$func_dirname_result" = "X${1}"; then -+ func_dirname_result="${3}" -+ else -+ func_dirname_result="$func_dirname_result${2}" -+ fi -+} # func_dirname may be replaced by extended shell implementation -+ -+ -+# func_basename file -+func_basename () -+{ -+ func_basename_result=`$ECHO "${1}" | $SED "$basename"` -+} # func_basename may be replaced by extended shell implementation -+ -+ -+# func_dirname_and_basename file append nondir_replacement -+# perform func_basename and func_dirname in a single function -+# call: -+# dirname: Compute the dirname of FILE. If nonempty, -+# add APPEND to the result, otherwise set result -+# to NONDIR_REPLACEMENT. -+# value returned in "$func_dirname_result" -+# basename: Compute filename of FILE. -+# value retuned in "$func_basename_result" -+# Implementation must be kept synchronized with func_dirname -+# and func_basename. For efficiency, we do not delegate to -+# those functions but instead duplicate the functionality here. -+func_dirname_and_basename () -+{ -+ # Extract subdirectory from the argument. -+ func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` -+ if test "X$func_dirname_result" = "X${1}"; then -+ func_dirname_result="${3}" -+ else -+ func_dirname_result="$func_dirname_result${2}" -+ fi -+ func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -+} # func_dirname_and_basename may be replaced by extended shell implementation -+ -+ -+# func_stripname prefix suffix name -+# strip PREFIX and SUFFIX off of NAME. -+# PREFIX and SUFFIX must not contain globbing or regex special -+# characters, hashes, percent signs, but SUFFIX may contain a leading -+# dot (in which case that matches only a dot). -+# func_strip_suffix prefix name -+func_stripname () -+{ -+ case ${2} in -+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; -+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; -+ esac -+} # func_stripname may be replaced by extended shell implementation -+ -+ -+# These SED scripts presuppose an absolute path with a trailing slash. -+pathcar='s,^/\([^/]*\).*$,\1,' -+pathcdr='s,^/[^/]*,,' -+removedotparts=':dotsl -+ s@/\./@/@g -+ t dotsl -+ s,/\.$,/,' -+collapseslashes='s@/\{1,\}@/@g' -+finalslash='s,/*$,/,' -+ -+# func_normal_abspath PATH -+# Remove doubled-up and trailing slashes, "." path components, -+# and cancel out any ".." path components in PATH after making -+# it an absolute path. -+# value returned in "$func_normal_abspath_result" -+func_normal_abspath () -+{ -+ # Start from root dir and reassemble the path. -+ func_normal_abspath_result= -+ func_normal_abspath_tpath=$1 -+ func_normal_abspath_altnamespace= -+ case $func_normal_abspath_tpath in -+ "") -+ # Empty path, that just means $cwd. -+ func_stripname '' '/' "`pwd`" -+ func_normal_abspath_result=$func_stripname_result -+ return -+ ;; -+ # The next three entries are used to spot a run of precisely -+ # two leading slashes without using negated character classes; -+ # we take advantage of case's first-match behaviour. -+ ///*) -+ # Unusual form of absolute path, do nothing. -+ ;; -+ //*) -+ # Not necessarily an ordinary path; POSIX reserves leading '//' -+ # and for example Cygwin uses it to access remote file shares -+ # over CIFS/SMB, so we conserve a leading double slash if found. -+ func_normal_abspath_altnamespace=/ -+ ;; -+ /*) -+ # Absolute path, do nothing. -+ ;; -+ *) -+ # Relative path, prepend $cwd. -+ func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath -+ ;; -+ esac -+ # Cancel out all the simple stuff to save iterations. We also want -+ # the path to end with a slash for ease of parsing, so make sure -+ # there is one (and only one) here. -+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -+ -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` -+ while :; do -+ # Processed it all yet? -+ if test "$func_normal_abspath_tpath" = / ; then -+ # If we ascended to the root using ".." the result may be empty now. -+ if test -z "$func_normal_abspath_result" ; then -+ func_normal_abspath_result=/ -+ fi -+ break -+ fi -+ func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ -+ -e "$pathcar"` -+ func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ -+ -e "$pathcdr"` -+ # Figure out what to do with it -+ case $func_normal_abspath_tcomponent in -+ "") -+ # Trailing empty path component, ignore it. -+ ;; -+ ..) -+ # Parent dir; strip last assembled component from result. -+ func_dirname "$func_normal_abspath_result" -+ func_normal_abspath_result=$func_dirname_result -+ ;; -+ *) -+ # Actual path component, append it. -+ func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent -+ ;; -+ esac -+ done -+ # Restore leading double-slash if one was found on entry. -+ func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -+} -+ -+# func_relative_path SRCDIR DSTDIR -+# generates a relative path from SRCDIR to DSTDIR, with a trailing -+# slash if non-empty, suitable for immediately appending a filename -+# without needing to append a separator. -+# value returned in "$func_relative_path_result" -+func_relative_path () -+{ -+ func_relative_path_result= -+ func_normal_abspath "$1" -+ func_relative_path_tlibdir=$func_normal_abspath_result -+ func_normal_abspath "$2" -+ func_relative_path_tbindir=$func_normal_abspath_result -+ -+ # Ascend the tree starting from libdir -+ while :; do -+ # check if we have found a prefix of bindir -+ case $func_relative_path_tbindir in -+ $func_relative_path_tlibdir) -+ # found an exact match -+ func_relative_path_tcancelled= -+ break -+ ;; -+ $func_relative_path_tlibdir*) -+ # found a matching prefix -+ func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" -+ func_relative_path_tcancelled=$func_stripname_result -+ if test -z "$func_relative_path_result"; then -+ func_relative_path_result=. -+ fi -+ break -+ ;; -+ *) -+ func_dirname $func_relative_path_tlibdir -+ func_relative_path_tlibdir=${func_dirname_result} -+ if test "x$func_relative_path_tlibdir" = x ; then -+ # Have to descend all the way to the root! -+ func_relative_path_result=../$func_relative_path_result -+ func_relative_path_tcancelled=$func_relative_path_tbindir -+ break -+ fi -+ func_relative_path_result=../$func_relative_path_result -+ ;; -+ esac -+ done -+ -+ # Now calculate path; take care to avoid doubling-up slashes. -+ func_stripname '' '/' "$func_relative_path_result" -+ func_relative_path_result=$func_stripname_result -+ func_stripname '/' '/' "$func_relative_path_tcancelled" -+ if test "x$func_stripname_result" != x ; then -+ func_relative_path_result=${func_relative_path_result}/${func_stripname_result} -+ fi -+ -+ # Normalisation. If bindir is libdir, return empty string, -+ # else relative path ending with a slash; either way, target -+ # file name can be directly appended. -+ if test ! -z "$func_relative_path_result"; then -+ func_stripname './' '' "$func_relative_path_result/" -+ func_relative_path_result=$func_stripname_result -+ fi -+} -+ -+# The name of this program: -+func_dirname_and_basename "$progpath" -+progname=$func_basename_result -+ -+# Make sure we have an absolute path for reexecution: -+case $progpath in -+ [\\/]*|[A-Za-z]:\\*) ;; -+ *[\\/]*) -+ progdir=$func_dirname_result -+ progdir=`cd "$progdir" && pwd` -+ progpath="$progdir/$progname" -+ ;; -+ *) -+ save_IFS="$IFS" -+ IFS=${PATH_SEPARATOR-:} -+ for progdir in $PATH; do -+ IFS="$save_IFS" -+ test -x "$progdir/$progname" && break -+ done -+ IFS="$save_IFS" -+ test -n "$progdir" || progdir=`pwd` -+ progpath="$progdir/$progname" -+ ;; -+esac -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+Xsed="${SED}"' -e 1s/^X//' -+sed_quote_subst='s/\([`"$\\]\)/\\\1/g' -+ -+# Same as above, but do not quote variable references. -+double_quote_subst='s/\(["`\\]\)/\\\1/g' -+ -+# Sed substitution that turns a string into a regex matching for the -+# string literally. -+sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' -+ -+# Sed substitution that converts a w32 file name or path -+# which contains forward slashes, into one that contains -+# (escaped) backslashes. A very naive implementation. -+lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' -+ -+# Re-`\' parameter expansions in output of double_quote_subst that were -+# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -+# in input to double_quote_subst, that '$' was protected from expansion. -+# Since each input `\' is now two `\'s, look for any number of runs of -+# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -+bs='\\' -+bs2='\\\\' -+bs4='\\\\\\\\' -+dollar='\$' -+sed_double_backslash="\ -+ s/$bs4/&\\ -+/g -+ s/^$bs2$dollar/$bs&/ -+ s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g -+ s/\n//g" -+ -+# Standard options: -+opt_dry_run=false -+opt_help=false -+opt_quiet=false -+opt_verbose=false -+opt_warning=: -+ -+# func_echo arg... -+# Echo program name prefixed message, along with the current mode -+# name if it has been set yet. -+func_echo () -+{ -+ $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -+} -+ -+# func_verbose arg... -+# Echo program name prefixed message in verbose mode only. -+func_verbose () -+{ -+ $opt_verbose && func_echo ${1+"$@"} -+ -+ # A bug in bash halts the script if the last line of a function -+ # fails when set -e is in force, so we need another command to -+ # work around that: -+ : -+} -+ -+# func_echo_all arg... -+# Invoke $ECHO with all args, space-separated. -+func_echo_all () -+{ -+ $ECHO "$*" -+} -+ -+# func_error arg... -+# Echo program name prefixed message to standard error. -+func_error () -+{ -+ $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -+} -+ -+# func_warning arg... -+# Echo program name prefixed warning message to standard error. -+func_warning () -+{ -+ $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 -+ -+ # bash bug again: -+ : -+} -+ -+# func_fatal_error arg... -+# Echo program name prefixed message to standard error, and exit. -+func_fatal_error () -+{ -+ func_error ${1+"$@"} -+ exit $EXIT_FAILURE -+} -+ -+# func_fatal_help arg... -+# Echo program name prefixed message to standard error, followed by -+# a help hint, and exit. -+func_fatal_help () -+{ -+ func_error ${1+"$@"} -+ func_fatal_error "$help" -+} -+help="Try \`$progname --help' for more information." ## default -+ -+ -+# func_grep expression filename -+# Check whether EXPRESSION matches any line of FILENAME, without output. -+func_grep () -+{ -+ $GREP "$1" "$2" >/dev/null 2>&1 -+} -+ -+ -+# func_mkdir_p directory-path -+# Make sure the entire path to DIRECTORY-PATH is available. -+func_mkdir_p () -+{ -+ my_directory_path="$1" -+ my_dir_list= -+ -+ if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then -+ -+ # Protect directory names starting with `-' -+ case $my_directory_path in -+ -*) my_directory_path="./$my_directory_path" ;; -+ esac -+ -+ # While some portion of DIR does not yet exist... -+ while test ! -d "$my_directory_path"; do -+ # ...make a list in topmost first order. Use a colon delimited -+ # list incase some portion of path contains whitespace. -+ my_dir_list="$my_directory_path:$my_dir_list" -+ -+ # If the last portion added has no slash in it, the list is done -+ case $my_directory_path in */*) ;; *) break ;; esac -+ -+ # ...otherwise throw away the child directory and loop -+ my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` -+ done -+ my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` -+ -+ save_mkdir_p_IFS="$IFS"; IFS=':' -+ for my_dir in $my_dir_list; do -+ IFS="$save_mkdir_p_IFS" -+ # mkdir can fail with a `File exist' error if two processes -+ # try to create one of the directories concurrently. Don't -+ # stop in that case! -+ $MKDIR "$my_dir" 2>/dev/null || : -+ done -+ IFS="$save_mkdir_p_IFS" -+ -+ # Bail out if we (or some other process) failed to create a directory. -+ test -d "$my_directory_path" || \ -+ func_fatal_error "Failed to create \`$1'" -+ fi -+} -+ -+ -+# func_mktempdir [string] -+# Make a temporary directory that won't clash with other running -+# libtool processes, and avoids race conditions if possible. If -+# given, STRING is the basename for that directory. -+func_mktempdir () -+{ -+ my_template="${TMPDIR-/tmp}/${1-$progname}" -+ -+ if test "$opt_dry_run" = ":"; then -+ # Return a directory name, but don't create it in dry-run mode -+ my_tmpdir="${my_template}-$$" -+ else -+ -+ # If mktemp works, use that first and foremost -+ my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` -+ -+ if test ! -d "$my_tmpdir"; then -+ # Failing that, at least try and use $RANDOM to avoid a race -+ my_tmpdir="${my_template}-${RANDOM-0}$$" -+ -+ save_mktempdir_umask=`umask` -+ umask 0077 -+ $MKDIR "$my_tmpdir" -+ umask $save_mktempdir_umask -+ fi -+ -+ # If we're not in dry-run mode, bomb out on failure -+ test -d "$my_tmpdir" || \ -+ func_fatal_error "cannot create temporary directory \`$my_tmpdir'" -+ fi -+ -+ $ECHO "$my_tmpdir" -+} -+ -+ -+# func_quote_for_eval arg -+# Aesthetically quote ARG to be evaled later. -+# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -+# is double-quoted, suitable for a subsequent eval, whereas -+# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -+# which are still active within double quotes backslashified. -+func_quote_for_eval () -+{ -+ case $1 in -+ *[\\\`\"\$]*) -+ func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; -+ *) -+ func_quote_for_eval_unquoted_result="$1" ;; -+ esac -+ -+ case $func_quote_for_eval_unquoted_result in -+ # Double-quote args containing shell metacharacters to delay -+ # word splitting, command substitution and and variable -+ # expansion for a subsequent eval. -+ # Many Bourne shells cannot handle close brackets correctly -+ # in scan sets, so we specify it separately. -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" -+ ;; -+ *) -+ func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" -+ esac -+} -+ -+ -+# func_quote_for_expand arg -+# Aesthetically quote ARG to be evaled later; same as above, -+# but do not quote variable references. -+func_quote_for_expand () -+{ -+ case $1 in -+ *[\\\`\"]*) -+ my_arg=`$ECHO "$1" | $SED \ -+ -e "$double_quote_subst" -e "$sed_double_backslash"` ;; -+ *) -+ my_arg="$1" ;; -+ esac -+ -+ case $my_arg in -+ # Double-quote args containing shell metacharacters to delay -+ # word splitting and command substitution for a subsequent eval. -+ # Many Bourne shells cannot handle close brackets correctly -+ # in scan sets, so we specify it separately. -+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") -+ my_arg="\"$my_arg\"" -+ ;; -+ esac -+ -+ func_quote_for_expand_result="$my_arg" -+} -+ -+ -+# func_show_eval cmd [fail_exp] -+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -+# is given, then evaluate it. -+func_show_eval () -+{ -+ my_cmd="$1" -+ my_fail_exp="${2-:}" -+ -+ ${opt_silent-false} || { -+ func_quote_for_expand "$my_cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ -+ if ${opt_dry_run-false}; then :; else -+ eval "$my_cmd" -+ my_status=$? -+ if test "$my_status" -eq 0; then :; else -+ eval "(exit $my_status); $my_fail_exp" -+ fi -+ fi -+} -+ -+ -+# func_show_eval_locale cmd [fail_exp] -+# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -+# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -+# is given, then evaluate it. Use the saved locale for evaluation. -+func_show_eval_locale () -+{ -+ my_cmd="$1" -+ my_fail_exp="${2-:}" -+ -+ ${opt_silent-false} || { -+ func_quote_for_expand "$my_cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ -+ if ${opt_dry_run-false}; then :; else -+ eval "$lt_user_locale -+ $my_cmd" -+ my_status=$? -+ eval "$lt_safe_locale" -+ if test "$my_status" -eq 0; then :; else -+ eval "(exit $my_status); $my_fail_exp" -+ fi -+ fi -+} -+ -+# func_tr_sh -+# Turn $1 into a string suitable for a shell variable name. -+# Result is stored in $func_tr_sh_result. All characters -+# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -+# if $1 begins with a digit, a '_' is prepended as well. -+func_tr_sh () -+{ -+ case $1 in -+ [0-9]* | *[!a-zA-Z0-9_]*) -+ func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` -+ ;; -+ * ) -+ func_tr_sh_result=$1 -+ ;; -+ esac -+} -+ -+ -+# func_version -+# Echo version message to standard output and exit. -+func_version () -+{ -+ $opt_debug -+ -+ $SED -n '/(C)/!b go -+ :more -+ /\./!{ -+ N -+ s/\n# / / -+ b more -+ } -+ :go -+ /^# '$PROGRAM' (GNU /,/# warranty; / { -+ s/^# // -+ s/^# *$// -+ s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ -+ p -+ }' < "$progpath" -+ exit $? -+} -+ -+# func_usage -+# Echo short help message to standard output and exit. -+func_usage () -+{ -+ $opt_debug -+ -+ $SED -n '/^# Usage:/,/^# *.*--help/ { -+ s/^# // -+ s/^# *$// -+ s/\$progname/'$progname'/ -+ p -+ }' < "$progpath" -+ echo -+ $ECHO "run \`$progname --help | more' for full usage" -+ exit $? -+} -+ -+# func_help [NOEXIT] -+# Echo long help message to standard output and exit, -+# unless 'noexit' is passed as argument. -+func_help () -+{ -+ $opt_debug -+ -+ $SED -n '/^# Usage:/,/# Report bugs to/ { -+ :print -+ s/^# // -+ s/^# *$// -+ s*\$progname*'$progname'* -+ s*\$host*'"$host"'* -+ s*\$SHELL*'"$SHELL"'* -+ s*\$LTCC*'"$LTCC"'* -+ s*\$LTCFLAGS*'"$LTCFLAGS"'* -+ s*\$LD*'"$LD"'* -+ s/\$with_gnu_ld/'"$with_gnu_ld"'/ -+ s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ -+ s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ -+ p -+ d -+ } -+ /^# .* home page:/b print -+ /^# General help using/b print -+ ' < "$progpath" -+ ret=$? -+ if test -z "$1"; then -+ exit $ret -+ fi -+} -+ -+# func_missing_arg argname -+# Echo program name prefixed message to standard error and set global -+# exit_cmd. -+func_missing_arg () -+{ -+ $opt_debug -+ -+ func_error "missing argument for $1." -+ exit_cmd=exit -+} -+ -+ -+# func_split_short_opt shortopt -+# Set func_split_short_opt_name and func_split_short_opt_arg shell -+# variables after splitting SHORTOPT after the 2nd character. -+func_split_short_opt () -+{ -+ my_sed_short_opt='1s/^\(..\).*$/\1/;q' -+ my_sed_short_rest='1s/^..\(.*\)$/\1/;q' -+ -+ func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` -+ func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -+} # func_split_short_opt may be replaced by extended shell implementation -+ -+ -+# func_split_long_opt longopt -+# Set func_split_long_opt_name and func_split_long_opt_arg shell -+# variables after splitting LONGOPT at the `=' sign. -+func_split_long_opt () -+{ -+ my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' -+ my_sed_long_arg='1s/^--[^=]*=//' -+ -+ func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` -+ func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -+} # func_split_long_opt may be replaced by extended shell implementation -+ -+exit_cmd=: -+ -+ -+ -+ -+ -+magic="%%%MAGIC variable%%%" -+magic_exe="%%%MAGIC EXE variable%%%" -+ -+# Global variables. -+nonopt= -+preserve_args= -+lo2o="s/\\.lo\$/.${objext}/" -+o2lo="s/\\.${objext}\$/.lo/" -+extracted_archives= -+extracted_serial=0 -+ -+# If this variable is set in any of the actions, the command in it -+# will be execed at the end. This prevents here-documents from being -+# left over by shells. -+exec_cmd= -+ -+# func_append var value -+# Append VALUE to the end of shell variable VAR. -+func_append () -+{ -+ eval "${1}=\$${1}\${2}" -+} # func_append may be replaced by extended shell implementation -+ -+# func_append_quoted var value -+# Quote VALUE and append to the end of shell variable VAR, separated -+# by a space. -+func_append_quoted () -+{ -+ func_quote_for_eval "${2}" -+ eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -+} # func_append_quoted may be replaced by extended shell implementation -+ -+ -+# func_arith arithmetic-term... -+func_arith () -+{ -+ func_arith_result=`expr "${@}"` -+} # func_arith may be replaced by extended shell implementation -+ -+ -+# func_len string -+# STRING may not start with a hyphen. -+func_len () -+{ -+ func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -+} # func_len may be replaced by extended shell implementation -+ -+ -+# func_lo2o object -+func_lo2o () -+{ -+ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -+} # func_lo2o may be replaced by extended shell implementation -+ -+ -+# func_xform libobj-or-source -+func_xform () -+{ -+ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -+} # func_xform may be replaced by extended shell implementation -+ -+ -+# func_fatal_configuration arg... -+# Echo program name prefixed message to standard error, followed by -+# a configuration failure hint, and exit. -+func_fatal_configuration () -+{ -+ func_error ${1+"$@"} -+ func_error "See the $PACKAGE documentation for more information." -+ func_fatal_error "Fatal configuration error." -+} -+ -+ -+# func_config -+# Display the configuration for all the tags in this script. -+func_config () -+{ -+ re_begincf='^# ### BEGIN LIBTOOL' -+ re_endcf='^# ### END LIBTOOL' -+ -+ # Default configuration. -+ $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" -+ -+ # Now print the configurations for the tags. -+ for tagname in $taglist; do -+ $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" -+ done -+ -+ exit $? -+} -+ -+# func_features -+# Display the features supported by this script. -+func_features () -+{ -+ echo "host: $host" -+ if test "$build_libtool_libs" = yes; then -+ echo "enable shared libraries" -+ else -+ echo "disable shared libraries" -+ fi -+ if test "$build_old_libs" = yes; then -+ echo "enable static libraries" -+ else -+ echo "disable static libraries" -+ fi -+ -+ exit $? -+} -+ -+# func_enable_tag tagname -+# Verify that TAGNAME is valid, and either flag an error and exit, or -+# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -+# variable here. -+func_enable_tag () -+{ -+ # Global variable: -+ tagname="$1" -+ -+ re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" -+ re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" -+ sed_extractcf="/$re_begincf/,/$re_endcf/p" -+ -+ # Validate tagname. -+ case $tagname in -+ *[!-_A-Za-z0-9,/]*) -+ func_fatal_error "invalid tag name: $tagname" -+ ;; -+ esac -+ -+ # Don't test for the "default" C tag, as we know it's -+ # there but not specially marked. -+ case $tagname in -+ CC) ;; -+ *) -+ if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then -+ taglist="$taglist $tagname" -+ -+ # Evaluate the configuration. Be careful to quote the path -+ # and the sed script, to avoid splitting on whitespace, but -+ # also don't use non-portable quotes within backquotes within -+ # quotes we have to do it in 2 steps: -+ extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` -+ eval "$extractedcf" -+ else -+ func_error "ignoring unknown tag $tagname" -+ fi -+ ;; -+ esac -+} -+ -+# func_check_version_match -+# Ensure that we are using m4 macros, and libtool script from the same -+# release of libtool. -+func_check_version_match () -+{ -+ if test "$package_revision" != "$macro_revision"; then -+ if test "$VERSION" != "$macro_version"; then -+ if test -z "$macro_version"; then -+ cat >&2 <<_LT_EOF -+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -+$progname: definition of this LT_INIT comes from an older release. -+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -+$progname: and run autoconf again. -+_LT_EOF -+ else -+ cat >&2 <<_LT_EOF -+$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -+$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -+$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -+$progname: and run autoconf again. -+_LT_EOF -+ fi -+ else -+ cat >&2 <<_LT_EOF -+$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -+$progname: but the definition of this LT_INIT comes from revision $macro_revision. -+$progname: You should recreate aclocal.m4 with macros from revision $package_revision -+$progname: of $PACKAGE $VERSION and run autoconf again. -+_LT_EOF -+ fi -+ -+ exit $EXIT_MISMATCH -+ fi -+} -+ -+ -+# Shorthand for --mode=foo, only valid as the first argument -+case $1 in -+clean|clea|cle|cl) -+ shift; set dummy --mode clean ${1+"$@"}; shift -+ ;; -+compile|compil|compi|comp|com|co|c) -+ shift; set dummy --mode compile ${1+"$@"}; shift -+ ;; -+execute|execut|execu|exec|exe|ex|e) -+ shift; set dummy --mode execute ${1+"$@"}; shift -+ ;; -+finish|finis|fini|fin|fi|f) -+ shift; set dummy --mode finish ${1+"$@"}; shift -+ ;; -+install|instal|insta|inst|ins|in|i) -+ shift; set dummy --mode install ${1+"$@"}; shift -+ ;; -+link|lin|li|l) -+ shift; set dummy --mode link ${1+"$@"}; shift -+ ;; -+uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) -+ shift; set dummy --mode uninstall ${1+"$@"}; shift -+ ;; -+esac -+ -+ -+ -+# Option defaults: -+opt_debug=: -+opt_dry_run=false -+opt_config=false -+opt_preserve_dup_deps=false -+opt_features=false -+opt_finish=false -+opt_help=false -+opt_help_all=false -+opt_silent=: -+opt_warning=: -+opt_verbose=: -+opt_silent=false -+opt_verbose=false -+ -+ -+# Parse options once, thoroughly. This comes as soon as possible in the -+# script to make things like `--version' happen as quickly as we can. -+{ -+ # this just eases exit handling -+ while test $# -gt 0; do -+ opt="$1" -+ shift -+ case $opt in -+ --debug|-x) opt_debug='set -x' -+ func_echo "enabling shell trace mode" -+ $opt_debug -+ ;; -+ --dry-run|--dryrun|-n) -+ opt_dry_run=: -+ ;; -+ --config) -+ opt_config=: -+func_config -+ ;; -+ --dlopen|-dlopen) -+ optarg="$1" -+ opt_dlopen="${opt_dlopen+$opt_dlopen -+}$optarg" -+ shift -+ ;; -+ --preserve-dup-deps) -+ opt_preserve_dup_deps=: -+ ;; -+ --features) -+ opt_features=: -+func_features -+ ;; -+ --finish) -+ opt_finish=: -+set dummy --mode finish ${1+"$@"}; shift -+ ;; -+ --help) -+ opt_help=: -+ ;; -+ --help-all) -+ opt_help_all=: -+opt_help=': help-all' -+ ;; -+ --mode) -+ test $# = 0 && func_missing_arg $opt && break -+ optarg="$1" -+ opt_mode="$optarg" -+case $optarg in -+ # Valid mode arguments: -+ clean|compile|execute|finish|install|link|relink|uninstall) ;; -+ -+ # Catch anything else as an error -+ *) func_error "invalid argument for $opt" -+ exit_cmd=exit -+ break -+ ;; -+esac -+ shift -+ ;; -+ --no-silent|--no-quiet) -+ opt_silent=false -+func_append preserve_args " $opt" -+ ;; -+ --no-warning|--no-warn) -+ opt_warning=false -+func_append preserve_args " $opt" -+ ;; -+ --no-verbose) -+ opt_verbose=false -+func_append preserve_args " $opt" -+ ;; -+ --silent|--quiet) -+ opt_silent=: -+func_append preserve_args " $opt" -+ opt_verbose=false -+ ;; -+ --verbose|-v) -+ opt_verbose=: -+func_append preserve_args " $opt" -+opt_silent=false -+ ;; -+ --tag) -+ test $# = 0 && func_missing_arg $opt && break -+ optarg="$1" -+ opt_tag="$optarg" -+func_append preserve_args " $opt $optarg" -+func_enable_tag "$optarg" -+ shift -+ ;; -+ -+ -\?|-h) func_usage ;; -+ --help) func_help ;; -+ --version) func_version ;; -+ -+ # Separate optargs to long options: -+ --*=*) -+ func_split_long_opt "$opt" -+ set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} -+ shift -+ ;; -+ -+ # Separate non-argument short options: -+ -\?*|-h*|-n*|-v*) -+ func_split_short_opt "$opt" -+ set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} -+ shift -+ ;; -+ -+ --) break ;; -+ -*) func_fatal_help "unrecognized option \`$opt'" ;; -+ *) set dummy "$opt" ${1+"$@"}; shift; break ;; -+ esac -+ done -+ -+ # Validate options: -+ -+ # save first non-option argument -+ if test "$#" -gt 0; then -+ nonopt="$opt" -+ shift -+ fi -+ -+ # preserve --debug -+ test "$opt_debug" = : || func_append preserve_args " --debug" -+ -+ case $host in -+ *cygwin* | *mingw* | *pw32* | *cegcc*) -+ # don't eliminate duplications in $postdeps and $predeps -+ opt_duplicate_compiler_generated_deps=: -+ ;; -+ *) -+ opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps -+ ;; -+ esac -+ -+ $opt_help || { -+ # Sanity checks first: -+ func_check_version_match -+ -+ if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then -+ func_fatal_configuration "not configured to build any kind of library" -+ fi -+ -+ # Darwin sucks -+ eval std_shrext=\"$shrext_cmds\" -+ -+ # Only execute mode is allowed to have -dlopen flags. -+ if test -n "$opt_dlopen" && test "$opt_mode" != execute; then -+ func_error "unrecognized option \`-dlopen'" -+ $ECHO "$help" 1>&2 -+ exit $EXIT_FAILURE -+ fi -+ -+ # Change the help message to a mode-specific one. -+ generic_help="$help" -+ help="Try \`$progname --help --mode=$opt_mode' for more information." -+ } -+ -+ -+ # Bail if the options were screwed -+ $exit_cmd $EXIT_FAILURE -+} -+ -+ -+ -+ -+## ----------- ## -+## Main. ## -+## ----------- ## -+ -+# func_lalib_p file -+# True iff FILE is a libtool `.la' library or `.lo' object file. -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_lalib_p () -+{ -+ test -f "$1" && -+ $SED -e 4q "$1" 2>/dev/null \ -+ | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -+} -+ -+# func_lalib_unsafe_p file -+# True iff FILE is a libtool `.la' library or `.lo' object file. -+# This function implements the same check as func_lalib_p without -+# resorting to external programs. To this end, it redirects stdin and -+# closes it afterwards, without saving the original file descriptor. -+# As a safety measure, use it only where a negative result would be -+# fatal anyway. Works if `file' does not exist. -+func_lalib_unsafe_p () -+{ -+ lalib_p=no -+ if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then -+ for lalib_p_l in 1 2 3 4 -+ do -+ read lalib_p_line -+ case "$lalib_p_line" in -+ \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; -+ esac -+ done -+ exec 0<&5 5<&- -+ fi -+ test "$lalib_p" = yes -+} -+ -+# func_ltwrapper_script_p file -+# True iff FILE is a libtool wrapper script -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_ltwrapper_script_p () -+{ -+ func_lalib_p "$1" -+} -+ -+# func_ltwrapper_executable_p file -+# True iff FILE is a libtool wrapper executable -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_ltwrapper_executable_p () -+{ -+ func_ltwrapper_exec_suffix= -+ case $1 in -+ *.exe) ;; -+ *) func_ltwrapper_exec_suffix=.exe ;; -+ esac -+ $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -+} -+ -+# func_ltwrapper_scriptname file -+# Assumes file is an ltwrapper_executable -+# uses $file to determine the appropriate filename for a -+# temporary ltwrapper_script. -+func_ltwrapper_scriptname () -+{ -+ func_dirname_and_basename "$1" "" "." -+ func_stripname '' '.exe' "$func_basename_result" -+ func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -+} -+ -+# func_ltwrapper_p file -+# True iff FILE is a libtool wrapper script or wrapper executable -+# This function is only a basic sanity check; it will hardly flush out -+# determined imposters. -+func_ltwrapper_p () -+{ -+ func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -+} -+ -+ -+# func_execute_cmds commands fail_cmd -+# Execute tilde-delimited COMMANDS. -+# If FAIL_CMD is given, eval that upon failure. -+# FAIL_CMD may read-access the current command in variable CMD! -+func_execute_cmds () -+{ -+ $opt_debug -+ save_ifs=$IFS; IFS='~' -+ for cmd in $1; do -+ IFS=$save_ifs -+ eval cmd=\"$cmd\" -+ func_show_eval "$cmd" "${2-:}" -+ done -+ IFS=$save_ifs -+} -+ -+ -+# func_source file -+# Source FILE, adding directory component if necessary. -+# Note that it is not necessary on cygwin/mingw to append a dot to -+# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -+# behavior happens only for exec(3), not for open(2)! Also, sourcing -+# `FILE.' does not work on cygwin managed mounts. -+func_source () -+{ -+ $opt_debug -+ case $1 in -+ */* | *\\*) . "$1" ;; -+ *) . "./$1" ;; -+ esac -+} -+ -+ -+# func_resolve_sysroot PATH -+# Replace a leading = in PATH with a sysroot. Store the result into -+# func_resolve_sysroot_result -+func_resolve_sysroot () -+{ -+ func_resolve_sysroot_result=$1 -+ case $func_resolve_sysroot_result in -+ =*) -+ func_stripname '=' '' "$func_resolve_sysroot_result" -+ func_resolve_sysroot_result=$lt_sysroot$func_stripname_result -+ ;; -+ esac -+} -+ -+# func_replace_sysroot PATH -+# If PATH begins with the sysroot, replace it with = and -+# store the result into func_replace_sysroot_result. -+func_replace_sysroot () -+{ -+ case "$lt_sysroot:$1" in -+ ?*:"$lt_sysroot"*) -+ func_stripname "$lt_sysroot" '' "$1" -+ func_replace_sysroot_result="=$func_stripname_result" -+ ;; -+ *) -+ # Including no sysroot. -+ func_replace_sysroot_result=$1 -+ ;; -+ esac -+} -+ -+# func_infer_tag arg -+# Infer tagged configuration to use if any are available and -+# if one wasn't chosen via the "--tag" command line option. -+# Only attempt this if the compiler in the base compile -+# command doesn't match the default compiler. -+# arg is usually of the form 'gcc ...' -+func_infer_tag () -+{ -+ $opt_debug -+ if test -n "$available_tags" && test -z "$tagname"; then -+ CC_quoted= -+ for arg in $CC; do -+ func_append_quoted CC_quoted "$arg" -+ done -+ CC_expanded=`func_echo_all $CC` -+ CC_quoted_expanded=`func_echo_all $CC_quoted` -+ case $@ in -+ # Blanks in the command may have been stripped by the calling shell, -+ # but not from the CC environment variable when configure was run. -+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ -+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; -+ # Blanks at the start of $base_compile will cause this to fail -+ # if we don't check for them as well. -+ *) -+ for z in $available_tags; do -+ if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then -+ # Evaluate the configuration. -+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" -+ CC_quoted= -+ for arg in $CC; do -+ # Double-quote args containing other shell metacharacters. -+ func_append_quoted CC_quoted "$arg" -+ done -+ CC_expanded=`func_echo_all $CC` -+ CC_quoted_expanded=`func_echo_all $CC_quoted` -+ case "$@ " in -+ " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ -+ " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) -+ # The compiler in the base compile command matches -+ # the one in the tagged configuration. -+ # Assume this is the tagged configuration we want. -+ tagname=$z -+ break -+ ;; -+ esac -+ fi -+ done -+ # If $tagname still isn't set, then no tagged configuration -+ # was found and let the user know that the "--tag" command -+ # line option must be used. -+ if test -z "$tagname"; then -+ func_echo "unable to infer tagged configuration" -+ func_fatal_error "specify a tag with \`--tag'" -+# else -+# func_verbose "using $tagname tagged configuration" -+ fi -+ ;; -+ esac -+ fi -+} -+ -+ -+ -+# func_write_libtool_object output_name pic_name nonpic_name -+# Create a libtool object file (analogous to a ".la" file), -+# but don't create it if we're doing a dry run. -+func_write_libtool_object () -+{ -+ write_libobj=${1} -+ if test "$build_libtool_libs" = yes; then -+ write_lobj=\'${2}\' -+ else -+ write_lobj=none -+ fi -+ -+ if test "$build_old_libs" = yes; then -+ write_oldobj=\'${3}\' -+ else -+ write_oldobj=none -+ fi -+ -+ $opt_dry_run || { -+ cat >${write_libobj}T </dev/null` -+ if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then -+ func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | -+ $SED -e "$lt_sed_naive_backslashify"` -+ else -+ func_convert_core_file_wine_to_w32_result= -+ fi -+ fi -+} -+# end: func_convert_core_file_wine_to_w32 -+ -+ -+# func_convert_core_path_wine_to_w32 ARG -+# Helper function used by path conversion functions when $build is *nix, and -+# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -+# configured wine environment available, with the winepath program in $build's -+# $PATH. Assumes ARG has no leading or trailing path separator characters. -+# -+# ARG is path to be converted from $build format to win32. -+# Result is available in $func_convert_core_path_wine_to_w32_result. -+# Unconvertible file (directory) names in ARG are skipped; if no directory names -+# are convertible, then the result may be empty. -+func_convert_core_path_wine_to_w32 () -+{ -+ $opt_debug -+ # unfortunately, winepath doesn't convert paths, only file names -+ func_convert_core_path_wine_to_w32_result="" -+ if test -n "$1"; then -+ oldIFS=$IFS -+ IFS=: -+ for func_convert_core_path_wine_to_w32_f in $1; do -+ IFS=$oldIFS -+ func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" -+ if test -n "$func_convert_core_file_wine_to_w32_result" ; then -+ if test -z "$func_convert_core_path_wine_to_w32_result"; then -+ func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" -+ else -+ func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" -+ fi -+ fi -+ done -+ IFS=$oldIFS -+ fi -+} -+# end: func_convert_core_path_wine_to_w32 -+ -+ -+# func_cygpath ARGS... -+# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -+# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -+# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -+# (2), returns the Cygwin file name or path in func_cygpath_result (input -+# file name or path is assumed to be in w32 format, as previously converted -+# from $build's *nix or MSYS format). In case (3), returns the w32 file name -+# or path in func_cygpath_result (input file name or path is assumed to be in -+# Cygwin format). Returns an empty string on error. -+# -+# ARGS are passed to cygpath, with the last one being the file name or path to -+# be converted. -+# -+# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -+# environment variable; do not put it in $PATH. -+func_cygpath () -+{ -+ $opt_debug -+ if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then -+ func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` -+ if test "$?" -ne 0; then -+ # on failure, ensure result is empty -+ func_cygpath_result= -+ fi -+ else -+ func_cygpath_result= -+ func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" -+ fi -+} -+#end: func_cygpath -+ -+ -+# func_convert_core_msys_to_w32 ARG -+# Convert file name or path ARG from MSYS format to w32 format. Return -+# result in func_convert_core_msys_to_w32_result. -+func_convert_core_msys_to_w32 () -+{ -+ $opt_debug -+ # awkward: cmd appends spaces to result -+ func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | -+ $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -+} -+#end: func_convert_core_msys_to_w32 -+ -+ -+# func_convert_file_check ARG1 ARG2 -+# Verify that ARG1 (a file name in $build format) was converted to $host -+# format in ARG2. Otherwise, emit an error message, but continue (resetting -+# func_to_host_file_result to ARG1). -+func_convert_file_check () -+{ -+ $opt_debug -+ if test -z "$2" && test -n "$1" ; then -+ func_error "Could not determine host file name corresponding to" -+ func_error " \`$1'" -+ func_error "Continuing, but uninstalled executables may not work." -+ # Fallback: -+ func_to_host_file_result="$1" -+ fi -+} -+# end func_convert_file_check -+ -+ -+# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -+# Verify that FROM_PATH (a path in $build format) was converted to $host -+# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -+# func_to_host_file_result to a simplistic fallback value (see below). -+func_convert_path_check () -+{ -+ $opt_debug -+ if test -z "$4" && test -n "$3"; then -+ func_error "Could not determine the host path corresponding to" -+ func_error " \`$3'" -+ func_error "Continuing, but uninstalled executables may not work." -+ # Fallback. This is a deliberately simplistic "conversion" and -+ # should not be "improved". See libtool.info. -+ if test "x$1" != "x$2"; then -+ lt_replace_pathsep_chars="s|$1|$2|g" -+ func_to_host_path_result=`echo "$3" | -+ $SED -e "$lt_replace_pathsep_chars"` -+ else -+ func_to_host_path_result="$3" -+ fi -+ fi -+} -+# end func_convert_path_check -+ -+ -+# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -+# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -+# and appending REPL if ORIG matches BACKPAT. -+func_convert_path_front_back_pathsep () -+{ -+ $opt_debug -+ case $4 in -+ $1 ) func_to_host_path_result="$3$func_to_host_path_result" -+ ;; -+ esac -+ case $4 in -+ $2 ) func_append func_to_host_path_result "$3" -+ ;; -+ esac -+} -+# end func_convert_path_front_back_pathsep -+ -+ -+################################################## -+# $build to $host FILE NAME CONVERSION FUNCTIONS # -+################################################## -+# invoked via `$to_host_file_cmd ARG' -+# -+# In each case, ARG is the path to be converted from $build to $host format. -+# Result will be available in $func_to_host_file_result. -+ -+ -+# func_to_host_file ARG -+# Converts the file name ARG from $build format to $host format. Return result -+# in func_to_host_file_result. -+func_to_host_file () -+{ -+ $opt_debug -+ $to_host_file_cmd "$1" -+} -+# end func_to_host_file -+ -+ -+# func_to_tool_file ARG LAZY -+# converts the file name ARG from $build format to toolchain format. Return -+# result in func_to_tool_file_result. If the conversion in use is listed -+# in (the comma separated) LAZY, no conversion takes place. -+func_to_tool_file () -+{ -+ $opt_debug -+ case ,$2, in -+ *,"$to_tool_file_cmd",*) -+ func_to_tool_file_result=$1 -+ ;; -+ *) -+ $to_tool_file_cmd "$1" -+ func_to_tool_file_result=$func_to_host_file_result -+ ;; -+ esac -+} -+# end func_to_tool_file -+ -+ -+# func_convert_file_noop ARG -+# Copy ARG to func_to_host_file_result. -+func_convert_file_noop () -+{ -+ func_to_host_file_result="$1" -+} -+# end func_convert_file_noop -+ -+ -+# func_convert_file_msys_to_w32 ARG -+# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -+# conversion to w32 is not available inside the cwrapper. Returns result in -+# func_to_host_file_result. -+func_convert_file_msys_to_w32 () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ func_convert_core_msys_to_w32 "$1" -+ func_to_host_file_result="$func_convert_core_msys_to_w32_result" -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_msys_to_w32 -+ -+ -+# func_convert_file_cygwin_to_w32 ARG -+# Convert file name ARG from Cygwin to w32 format. Returns result in -+# func_to_host_file_result. -+func_convert_file_cygwin_to_w32 () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ # because $build is cygwin, we call "the" cygpath in $PATH; no need to use -+ # LT_CYGPATH in this case. -+ func_to_host_file_result=`cygpath -m "$1"` -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_cygwin_to_w32 -+ -+ -+# func_convert_file_nix_to_w32 ARG -+# Convert file name ARG from *nix to w32 format. Requires a wine environment -+# and a working winepath. Returns result in func_to_host_file_result. -+func_convert_file_nix_to_w32 () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ func_convert_core_file_wine_to_w32 "$1" -+ func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_nix_to_w32 -+ -+ -+# func_convert_file_msys_to_cygwin ARG -+# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -+# Returns result in func_to_host_file_result. -+func_convert_file_msys_to_cygwin () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ func_convert_core_msys_to_w32 "$1" -+ func_cygpath -u "$func_convert_core_msys_to_w32_result" -+ func_to_host_file_result="$func_cygpath_result" -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_msys_to_cygwin -+ -+ -+# func_convert_file_nix_to_cygwin ARG -+# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -+# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -+# in func_to_host_file_result. -+func_convert_file_nix_to_cygwin () -+{ -+ $opt_debug -+ func_to_host_file_result="$1" -+ if test -n "$1"; then -+ # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. -+ func_convert_core_file_wine_to_w32 "$1" -+ func_cygpath -u "$func_convert_core_file_wine_to_w32_result" -+ func_to_host_file_result="$func_cygpath_result" -+ fi -+ func_convert_file_check "$1" "$func_to_host_file_result" -+} -+# end func_convert_file_nix_to_cygwin -+ -+ -+############################################# -+# $build to $host PATH CONVERSION FUNCTIONS # -+############################################# -+# invoked via `$to_host_path_cmd ARG' -+# -+# In each case, ARG is the path to be converted from $build to $host format. -+# The result will be available in $func_to_host_path_result. -+# -+# Path separators are also converted from $build format to $host format. If -+# ARG begins or ends with a path separator character, it is preserved (but -+# converted to $host format) on output. -+# -+# All path conversion functions are named using the following convention: -+# file name conversion function : func_convert_file_X_to_Y () -+# path conversion function : func_convert_path_X_to_Y () -+# where, for any given $build/$host combination the 'X_to_Y' value is the -+# same. If conversion functions are added for new $build/$host combinations, -+# the two new functions must follow this pattern, or func_init_to_host_path_cmd -+# will break. -+ -+ -+# func_init_to_host_path_cmd -+# Ensures that function "pointer" variable $to_host_path_cmd is set to the -+# appropriate value, based on the value of $to_host_file_cmd. -+to_host_path_cmd= -+func_init_to_host_path_cmd () -+{ -+ $opt_debug -+ if test -z "$to_host_path_cmd"; then -+ func_stripname 'func_convert_file_' '' "$to_host_file_cmd" -+ to_host_path_cmd="func_convert_path_${func_stripname_result}" -+ fi -+} -+ -+ -+# func_to_host_path ARG -+# Converts the path ARG from $build format to $host format. Return result -+# in func_to_host_path_result. -+func_to_host_path () -+{ -+ $opt_debug -+ func_init_to_host_path_cmd -+ $to_host_path_cmd "$1" -+} -+# end func_to_host_path -+ -+ -+# func_convert_path_noop ARG -+# Copy ARG to func_to_host_path_result. -+func_convert_path_noop () -+{ -+ func_to_host_path_result="$1" -+} -+# end func_convert_path_noop -+ -+ -+# func_convert_path_msys_to_w32 ARG -+# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -+# conversion to w32 is not available inside the cwrapper. Returns result in -+# func_to_host_path_result. -+func_convert_path_msys_to_w32 () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # Remove leading and trailing path separator characters from ARG. MSYS -+ # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; -+ # and winepath ignores them completely. -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" -+ func_to_host_path_result="$func_convert_core_msys_to_w32_result" -+ func_convert_path_check : ";" \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" -+ fi -+} -+# end func_convert_path_msys_to_w32 -+ -+ -+# func_convert_path_cygwin_to_w32 ARG -+# Convert path ARG from Cygwin to w32 format. Returns result in -+# func_to_host_file_result. -+func_convert_path_cygwin_to_w32 () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # See func_convert_path_msys_to_w32: -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` -+ func_convert_path_check : ";" \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" -+ fi -+} -+# end func_convert_path_cygwin_to_w32 -+ -+ -+# func_convert_path_nix_to_w32 ARG -+# Convert path ARG from *nix to w32 format. Requires a wine environment and -+# a working winepath. Returns result in func_to_host_file_result. -+func_convert_path_nix_to_w32 () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # See func_convert_path_msys_to_w32: -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" -+ func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" -+ func_convert_path_check : ";" \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" -+ fi -+} -+# end func_convert_path_nix_to_w32 -+ -+ -+# func_convert_path_msys_to_cygwin ARG -+# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -+# Returns result in func_to_host_file_result. -+func_convert_path_msys_to_cygwin () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # See func_convert_path_msys_to_w32: -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" -+ func_cygpath -u -p "$func_convert_core_msys_to_w32_result" -+ func_to_host_path_result="$func_cygpath_result" -+ func_convert_path_check : : \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" : "$1" -+ fi -+} -+# end func_convert_path_msys_to_cygwin -+ -+ -+# func_convert_path_nix_to_cygwin ARG -+# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -+# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -+# func_to_host_file_result. -+func_convert_path_nix_to_cygwin () -+{ -+ $opt_debug -+ func_to_host_path_result="$1" -+ if test -n "$1"; then -+ # Remove leading and trailing path separator characters from -+ # ARG. msys behavior is inconsistent here, cygpath turns them -+ # into '.;' and ';.', and winepath ignores them completely. -+ func_stripname : : "$1" -+ func_to_host_path_tmp1=$func_stripname_result -+ func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" -+ func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" -+ func_to_host_path_result="$func_cygpath_result" -+ func_convert_path_check : : \ -+ "$func_to_host_path_tmp1" "$func_to_host_path_result" -+ func_convert_path_front_back_pathsep ":*" "*:" : "$1" -+ fi -+} -+# end func_convert_path_nix_to_cygwin -+ -+ -+# func_mode_compile arg... -+func_mode_compile () -+{ -+ $opt_debug -+ # Get the compilation command and the source file. -+ base_compile= -+ srcfile="$nonopt" # always keep a non-empty value in "srcfile" -+ suppress_opt=yes -+ suppress_output= -+ arg_mode=normal -+ libobj= -+ later= -+ pie_flag= -+ -+ for arg -+ do -+ case $arg_mode in -+ arg ) -+ # do not "continue". Instead, add this to base_compile -+ lastarg="$arg" -+ arg_mode=normal -+ ;; -+ -+ target ) -+ libobj="$arg" -+ arg_mode=normal -+ continue -+ ;; -+ -+ normal ) -+ # Accept any command-line options. -+ case $arg in -+ -o) -+ test -n "$libobj" && \ -+ func_fatal_error "you cannot specify \`-o' more than once" -+ arg_mode=target -+ continue -+ ;; -+ -+ -pie | -fpie | -fPIE) -+ func_append pie_flag " $arg" -+ continue -+ ;; -+ -+ -shared | -static | -prefer-pic | -prefer-non-pic) -+ func_append later " $arg" -+ continue -+ ;; -+ -+ -no-suppress) -+ suppress_opt=no -+ continue -+ ;; -+ -+ -Xcompiler) -+ arg_mode=arg # the next one goes into the "base_compile" arg list -+ continue # The current "srcfile" will either be retained or -+ ;; # replaced later. I would guess that would be a bug. -+ -+ -Wc,*) -+ func_stripname '-Wc,' '' "$arg" -+ args=$func_stripname_result -+ lastarg= -+ save_ifs="$IFS"; IFS=',' -+ for arg in $args; do -+ IFS="$save_ifs" -+ func_append_quoted lastarg "$arg" -+ done -+ IFS="$save_ifs" -+ func_stripname ' ' '' "$lastarg" -+ lastarg=$func_stripname_result -+ -+ # Add the arguments to base_compile. -+ func_append base_compile " $lastarg" -+ continue -+ ;; -+ -+ *) -+ # Accept the current argument as the source file. -+ # The previous "srcfile" becomes the current argument. -+ # -+ lastarg="$srcfile" -+ srcfile="$arg" -+ ;; -+ esac # case $arg -+ ;; -+ esac # case $arg_mode -+ -+ # Aesthetically quote the previous argument. -+ func_append_quoted base_compile "$lastarg" -+ done # for arg -+ -+ case $arg_mode in -+ arg) -+ func_fatal_error "you must specify an argument for -Xcompile" -+ ;; -+ target) -+ func_fatal_error "you must specify a target with \`-o'" -+ ;; -+ *) -+ # Get the name of the library object. -+ test -z "$libobj" && { -+ func_basename "$srcfile" -+ libobj="$func_basename_result" -+ } -+ ;; -+ esac -+ -+ # Recognize several different file suffixes. -+ # If the user specifies -o file.o, it is replaced with file.lo -+ case $libobj in -+ *.[cCFSifmso] | \ -+ *.ada | *.adb | *.ads | *.asm | \ -+ *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ -+ *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) -+ func_xform "$libobj" -+ libobj=$func_xform_result -+ ;; -+ esac -+ -+ case $libobj in -+ *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; -+ *) -+ func_fatal_error "cannot determine name of library object from \`$libobj'" -+ ;; -+ esac -+ -+ func_infer_tag $base_compile -+ -+ for arg in $later; do -+ case $arg in -+ -shared) -+ test "$build_libtool_libs" != yes && \ -+ func_fatal_configuration "can not build a shared library" -+ build_old_libs=no -+ continue -+ ;; -+ -+ -static) -+ build_libtool_libs=no -+ build_old_libs=yes -+ continue -+ ;; -+ -+ -prefer-pic) -+ pic_mode=yes -+ continue -+ ;; -+ -+ -prefer-non-pic) -+ pic_mode=no -+ continue -+ ;; -+ esac -+ done -+ -+ func_quote_for_eval "$libobj" -+ test "X$libobj" != "X$func_quote_for_eval_result" \ -+ && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ -+ && func_warning "libobj name \`$libobj' may not contain shell special characters." -+ func_dirname_and_basename "$obj" "/" "" -+ objname="$func_basename_result" -+ xdir="$func_dirname_result" -+ lobj=${xdir}$objdir/$objname -+ -+ test -z "$base_compile" && \ -+ func_fatal_help "you must specify a compilation command" -+ -+ # Delete any leftover library objects. -+ if test "$build_old_libs" = yes; then -+ removelist="$obj $lobj $libobj ${libobj}T" -+ else -+ removelist="$lobj $libobj ${libobj}T" -+ fi -+ -+ # On Cygwin there's no "real" PIC flag so we must build both object types -+ case $host_os in -+ cygwin* | mingw* | pw32* | os2* | cegcc*) -+ pic_mode=default -+ ;; -+ esac -+ if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then -+ # non-PIC code in shared libraries is not supported -+ pic_mode=default -+ fi -+ -+ # Calculate the filename of the output object if compiler does -+ # not support -o with -c -+ if test "$compiler_c_o" = no; then -+ output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} -+ lockfile="$output_obj.lock" -+ else -+ output_obj= -+ need_locks=no -+ lockfile= -+ fi -+ -+ # Lock this critical section if it is needed -+ # We use this script file to make the link, it avoids creating a new file -+ if test "$need_locks" = yes; then -+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do -+ func_echo "Waiting for $lockfile to be removed" -+ sleep 2 -+ done -+ elif test "$need_locks" = warn; then -+ if test -f "$lockfile"; then -+ $ECHO "\ -+*** ERROR, $lockfile exists and contains: -+`cat $lockfile 2>/dev/null` -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $opt_dry_run || $RM $removelist -+ exit $EXIT_FAILURE -+ fi -+ func_append removelist " $output_obj" -+ $ECHO "$srcfile" > "$lockfile" -+ fi -+ -+ $opt_dry_run || $RM $removelist -+ func_append removelist " $lockfile" -+ trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 -+ -+ func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 -+ srcfile=$func_to_tool_file_result -+ func_quote_for_eval "$srcfile" -+ qsrcfile=$func_quote_for_eval_result -+ -+ # Only build a PIC object if we are building libtool libraries. -+ if test "$build_libtool_libs" = yes; then -+ # Without this assignment, base_compile gets emptied. -+ fbsd_hideous_sh_bug=$base_compile -+ -+ if test "$pic_mode" != no; then -+ command="$base_compile $qsrcfile $pic_flag" -+ else -+ # Don't build PIC code -+ command="$base_compile $qsrcfile" -+ fi -+ -+ func_mkdir_p "$xdir$objdir" -+ -+ if test -z "$output_obj"; then -+ # Place PIC objects in $objdir -+ func_append command " -o $lobj" -+ fi -+ -+ func_show_eval_locale "$command" \ -+ 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' -+ -+ if test "$need_locks" = warn && -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $ECHO "\ -+*** ERROR, $lockfile contains: -+`cat $lockfile 2>/dev/null` -+ -+but it should contain: -+$srcfile -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $opt_dry_run || $RM $removelist -+ exit $EXIT_FAILURE -+ fi -+ -+ # Just move the object if needed, then go on to compile the next one -+ if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then -+ func_show_eval '$MV "$output_obj" "$lobj"' \ -+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' -+ fi -+ -+ # Allow error messages only from the first compilation. -+ if test "$suppress_opt" = yes; then -+ suppress_output=' >/dev/null 2>&1' -+ fi -+ fi -+ -+ # Only build a position-dependent object if we build old libraries. -+ if test "$build_old_libs" = yes; then -+ if test "$pic_mode" != yes; then -+ # Don't build PIC code -+ command="$base_compile $qsrcfile$pie_flag" -+ else -+ command="$base_compile $qsrcfile $pic_flag" -+ fi -+ if test "$compiler_c_o" = yes; then -+ func_append command " -o $obj" -+ fi -+ -+ # Suppress compiler output if we already did a PIC compilation. -+ func_append command "$suppress_output" -+ func_show_eval_locale "$command" \ -+ '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' -+ -+ if test "$need_locks" = warn && -+ test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then -+ $ECHO "\ -+*** ERROR, $lockfile contains: -+`cat $lockfile 2>/dev/null` -+ -+but it should contain: -+$srcfile -+ -+This indicates that another process is trying to use the same -+temporary object file, and libtool could not work around it because -+your compiler does not support \`-c' and \`-o' together. If you -+repeat this compilation, it may succeed, by chance, but you had better -+avoid parallel builds (make -j) in this platform, or get a better -+compiler." -+ -+ $opt_dry_run || $RM $removelist -+ exit $EXIT_FAILURE -+ fi -+ -+ # Just move the object if needed -+ if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then -+ func_show_eval '$MV "$output_obj" "$obj"' \ -+ 'error=$?; $opt_dry_run || $RM $removelist; exit $error' -+ fi -+ fi -+ -+ $opt_dry_run || { -+ func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" -+ -+ # Unlock the critical section if it was locked -+ if test "$need_locks" != no; then -+ removelist=$lockfile -+ $RM "$lockfile" -+ fi -+ } -+ -+ exit $EXIT_SUCCESS -+} -+ -+$opt_help || { -+ test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -+} -+ -+func_mode_help () -+{ -+ # We need to display help for each of the modes. -+ case $opt_mode in -+ "") -+ # Generic help is extracted from the usage comments -+ # at the start of this file. -+ func_help -+ ;; -+ -+ clean) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... -+ -+Remove files from the build directory. -+ -+RM is the name of the program to use to delete files associated with each FILE -+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -+to RM. -+ -+If FILE is a libtool library, object or program, all the files associated -+with it are deleted. Otherwise, only FILE itself is deleted using RM." -+ ;; -+ -+ compile) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE -+ -+Compile a source file into a libtool library object. -+ -+This mode accepts the following additional options: -+ -+ -o OUTPUT-FILE set the output file name to OUTPUT-FILE -+ -no-suppress do not suppress compiler output for multiple passes -+ -prefer-pic try to build PIC objects only -+ -prefer-non-pic try to build non-PIC objects only -+ -shared do not build a \`.o' file suitable for static linking -+ -static only build a \`.o' file suitable for static linking -+ -Wc,FLAG pass FLAG directly to the compiler -+ -+COMPILE-COMMAND is a command to be used in creating a \`standard' object file -+from the given SOURCEFILE. -+ -+The output file name is determined by removing the directory component from -+SOURCEFILE, then substituting the C source code suffix \`.c' with the -+library object suffix, \`.lo'." -+ ;; -+ -+ execute) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... -+ -+Automatically set library path, then run a program. -+ -+This mode accepts the following additional options: -+ -+ -dlopen FILE add the directory containing FILE to the library path -+ -+This mode sets the library path environment variable according to \`-dlopen' -+flags. -+ -+If any of the ARGS are libtool executable wrappers, then they are translated -+into their corresponding uninstalled binary, and any of their required library -+directories are added to the library path. -+ -+Then, COMMAND is executed, with ARGS as arguments." -+ ;; -+ -+ finish) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... -+ -+Complete the installation of libtool libraries. -+ -+Each LIBDIR is a directory that contains libtool libraries. -+ -+The commands that this mode executes may require superuser privileges. Use -+the \`--dry-run' option if you just want to see what would be executed." -+ ;; -+ -+ install) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... -+ -+Install executables or libraries. -+ -+INSTALL-COMMAND is the installation command. The first component should be -+either the \`install' or \`cp' program. -+ -+The following components of INSTALL-COMMAND are treated specially: -+ -+ -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation -+ -+The rest of the components are interpreted as arguments to that command (only -+BSD-compatible install options are recognized)." -+ ;; -+ -+ link) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... -+ -+Link object files or libraries together to form another library, or to -+create an executable program. -+ -+LINK-COMMAND is a command using the C compiler that you would use to create -+a program from several object files. -+ -+The following components of LINK-COMMAND are treated specially: -+ -+ -all-static do not do any dynamic linking at all -+ -avoid-version do not add a version suffix if possible -+ -bindir BINDIR specify path to binaries directory (for systems where -+ libraries must be found in the PATH setting at runtime) -+ -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime -+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols -+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) -+ -export-symbols SYMFILE -+ try to export only the symbols listed in SYMFILE -+ -export-symbols-regex REGEX -+ try to export only the symbols matching REGEX -+ -LLIBDIR search LIBDIR for required installed libraries -+ -lNAME OUTPUT-FILE requires the installed library libNAME -+ -module build a library that can dlopened -+ -no-fast-install disable the fast-install mode -+ -no-install link a not-installable executable -+ -no-undefined declare that a library does not refer to external symbols -+ -o OUTPUT-FILE create OUTPUT-FILE from the specified objects -+ -objectlist FILE Use a list of object files found in FILE to specify objects -+ -precious-files-regex REGEX -+ don't remove output files matching REGEX -+ -release RELEASE specify package release information -+ -rpath LIBDIR the created library will eventually be installed in LIBDIR -+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries -+ -shared only do dynamic linking of libtool libraries -+ -shrext SUFFIX override the standard shared library file extension -+ -static do not do any dynamic linking of uninstalled libtool libraries -+ -static-libtool-libs -+ do not do any dynamic linking of libtool libraries -+ -version-info CURRENT[:REVISION[:AGE]] -+ specify library version info [each variable defaults to 0] -+ -weak LIBNAME declare that the target provides the LIBNAME interface -+ -Wc,FLAG -+ -Xcompiler FLAG pass linker-specific FLAG directly to the compiler -+ -Wl,FLAG -+ -Xlinker FLAG pass linker-specific FLAG directly to the linker -+ -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) -+ -+All other options (arguments beginning with \`-') are ignored. -+ -+Every other argument is treated as a filename. Files ending in \`.la' are -+treated as uninstalled libtool libraries, other files are standard or library -+object files. -+ -+If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -+only library objects (\`.lo' files) may be specified, and \`-rpath' is -+required, except when creating a convenience library. -+ -+If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -+using \`ar' and \`ranlib', or on Windows using \`lib'. -+ -+If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -+is created, otherwise an executable program is created." -+ ;; -+ -+ uninstall) -+ $ECHO \ -+"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... -+ -+Remove libraries from an installation directory. -+ -+RM is the name of the program to use to delete files associated with each FILE -+(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -+to RM. -+ -+If FILE is a libtool library, all the files associated with it are deleted. -+Otherwise, only FILE itself is deleted using RM." -+ ;; -+ -+ *) -+ func_fatal_help "invalid operation mode \`$opt_mode'" -+ ;; -+ esac -+ -+ echo -+ $ECHO "Try \`$progname --help' for more information about other modes." -+} -+ -+# Now that we've collected a possible --mode arg, show help if necessary -+if $opt_help; then -+ if test "$opt_help" = :; then -+ func_mode_help -+ else -+ { -+ func_help noexit -+ for opt_mode in compile link execute install finish uninstall clean; do -+ func_mode_help -+ done -+ } | sed -n '1p; 2,$s/^Usage:/ or: /p' -+ { -+ func_help noexit -+ for opt_mode in compile link execute install finish uninstall clean; do -+ echo -+ func_mode_help -+ done -+ } | -+ sed '1d -+ /^When reporting/,/^Report/{ -+ H -+ d -+ } -+ $x -+ /information about other modes/d -+ /more detailed .*MODE/d -+ s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' -+ fi -+ exit $? -+fi -+ -+ -+# func_mode_execute arg... -+func_mode_execute () -+{ -+ $opt_debug -+ # The first argument is the command name. -+ cmd="$nonopt" -+ test -z "$cmd" && \ -+ func_fatal_help "you must specify a COMMAND" -+ -+ # Handle -dlopen flags immediately. -+ for file in $opt_dlopen; do -+ test -f "$file" \ -+ || func_fatal_help "\`$file' is not a file" -+ -+ dir= -+ case $file in -+ *.la) -+ func_resolve_sysroot "$file" -+ file=$func_resolve_sysroot_result -+ -+ # Check to see that this really is a libtool archive. -+ func_lalib_unsafe_p "$file" \ -+ || func_fatal_help "\`$lib' is not a valid libtool archive" -+ -+ # Read the libtool library. -+ dlname= -+ library_names= -+ func_source "$file" -+ -+ # Skip this library if it cannot be dlopened. -+ if test -z "$dlname"; then -+ # Warn if it was a shared library. -+ test -n "$library_names" && \ -+ func_warning "\`$file' was not linked with \`-export-dynamic'" -+ continue -+ fi -+ -+ func_dirname "$file" "" "." -+ dir="$func_dirname_result" -+ -+ if test -f "$dir/$objdir/$dlname"; then -+ func_append dir "/$objdir" -+ else -+ if test ! -f "$dir/$dlname"; then -+ func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" -+ fi -+ fi -+ ;; -+ -+ *.lo) -+ # Just add the directory containing the .lo file. -+ func_dirname "$file" "" "." -+ dir="$func_dirname_result" -+ ;; -+ -+ *) -+ func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" -+ continue -+ ;; -+ esac -+ -+ # Get the absolute pathname. -+ absdir=`cd "$dir" && pwd` -+ test -n "$absdir" && dir="$absdir" -+ -+ # Now add the directory to shlibpath_var. -+ if eval "test -z \"\$$shlibpath_var\""; then -+ eval "$shlibpath_var=\"\$dir\"" -+ else -+ eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" -+ fi -+ done -+ -+ # This variable tells wrapper scripts just to set shlibpath_var -+ # rather than running their programs. -+ libtool_execute_magic="$magic" -+ -+ # Check if any of the arguments is a wrapper script. -+ args= -+ for file -+ do -+ case $file in -+ -* | *.la | *.lo ) ;; -+ *) -+ # Do a test to see if this is really a libtool program. -+ if func_ltwrapper_script_p "$file"; then -+ func_source "$file" -+ # Transform arg to wrapped name. -+ file="$progdir/$program" -+ elif func_ltwrapper_executable_p "$file"; then -+ func_ltwrapper_scriptname "$file" -+ func_source "$func_ltwrapper_scriptname_result" -+ # Transform arg to wrapped name. -+ file="$progdir/$program" -+ fi -+ ;; -+ esac -+ # Quote arguments (to preserve shell metacharacters). -+ func_append_quoted args "$file" -+ done -+ -+ if test "X$opt_dry_run" = Xfalse; then -+ if test -n "$shlibpath_var"; then -+ # Export the shlibpath_var. -+ eval "export $shlibpath_var" -+ fi -+ -+ # Restore saved environment variables -+ for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -+ do -+ eval "if test \"\${save_$lt_var+set}\" = set; then -+ $lt_var=\$save_$lt_var; export $lt_var -+ else -+ $lt_unset $lt_var -+ fi" -+ done -+ -+ # Now prepare to actually exec the command. -+ exec_cmd="\$cmd$args" -+ else -+ # Display what would be done. -+ if test -n "$shlibpath_var"; then -+ eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" -+ echo "export $shlibpath_var" -+ fi -+ $ECHO "$cmd$args" -+ exit $EXIT_SUCCESS -+ fi -+} -+ -+test "$opt_mode" = execute && func_mode_execute ${1+"$@"} -+ -+ -+# func_mode_finish arg... -+func_mode_finish () -+{ -+ $opt_debug -+ libs= -+ libdirs= -+ admincmds= -+ -+ for opt in "$nonopt" ${1+"$@"} -+ do -+ if test -d "$opt"; then -+ func_append libdirs " $opt" -+ -+ elif test -f "$opt"; then -+ if func_lalib_unsafe_p "$opt"; then -+ func_append libs " $opt" -+ else -+ func_warning "\`$opt' is not a valid libtool archive" -+ fi -+ -+ else -+ func_fatal_error "invalid argument \`$opt'" -+ fi -+ done -+ -+ if test -n "$libs"; then -+ if test -n "$lt_sysroot"; then -+ sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` -+ sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" -+ else -+ sysroot_cmd= -+ fi -+ -+ # Remove sysroot references -+ if $opt_dry_run; then -+ for lib in $libs; do -+ echo "removing references to $lt_sysroot and \`=' prefixes from $lib" -+ done -+ else -+ tmpdir=`func_mktempdir` -+ for lib in $libs; do -+ sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ -+ > $tmpdir/tmp-la -+ mv -f $tmpdir/tmp-la $lib -+ done -+ ${RM}r "$tmpdir" -+ fi -+ fi -+ -+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then -+ for libdir in $libdirs; do -+ if test -n "$finish_cmds"; then -+ # Do each command in the finish commands. -+ func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -+'"$cmd"'"' -+ fi -+ if test -n "$finish_eval"; then -+ # Do the single finish_eval. -+ eval cmds=\"$finish_eval\" -+ $opt_dry_run || eval "$cmds" || func_append admincmds " -+ $cmds" -+ fi -+ done -+ fi -+ -+ # Exit here if they wanted silent mode. -+ $opt_silent && exit $EXIT_SUCCESS -+ -+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then -+ echo "----------------------------------------------------------------------" -+ echo "Libraries have been installed in:" -+ for libdir in $libdirs; do -+ $ECHO " $libdir" -+ done -+ echo -+ echo "If you ever happen to want to link against installed libraries" -+ echo "in a given directory, LIBDIR, you must either use libtool, and" -+ echo "specify the full pathname of the library, or use the \`-LLIBDIR'" -+ echo "flag during linking and do at least one of the following:" -+ if test -n "$shlibpath_var"; then -+ echo " - add LIBDIR to the \`$shlibpath_var' environment variable" -+ echo " during execution" -+ fi -+ if test -n "$runpath_var"; then -+ echo " - add LIBDIR to the \`$runpath_var' environment variable" -+ echo " during linking" -+ fi -+ if test -n "$hardcode_libdir_flag_spec"; then -+ libdir=LIBDIR -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ -+ $ECHO " - use the \`$flag' linker flag" -+ fi -+ if test -n "$admincmds"; then -+ $ECHO " - have your system administrator run these commands:$admincmds" -+ fi -+ if test -f /etc/ld.so.conf; then -+ echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" -+ fi -+ echo -+ -+ echo "See any operating system documentation about shared libraries for" -+ case $host in -+ solaris2.[6789]|solaris2.1[0-9]) -+ echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" -+ echo "pages." -+ ;; -+ *) -+ echo "more information, such as the ld(1) and ld.so(8) manual pages." -+ ;; -+ esac -+ echo "----------------------------------------------------------------------" -+ fi -+ exit $EXIT_SUCCESS -+} -+ -+test "$opt_mode" = finish && func_mode_finish ${1+"$@"} -+ -+ -+# func_mode_install arg... -+func_mode_install () -+{ -+ $opt_debug -+ # There may be an optional sh(1) argument at the beginning of -+ # install_prog (especially on Windows NT). -+ if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || -+ # Allow the use of GNU shtool's install command. -+ case $nonopt in *shtool*) :;; *) false;; esac; then -+ # Aesthetically quote it. -+ func_quote_for_eval "$nonopt" -+ install_prog="$func_quote_for_eval_result " -+ arg=$1 -+ shift -+ else -+ install_prog= -+ arg=$nonopt -+ fi -+ -+ # The real first argument should be the name of the installation program. -+ # Aesthetically quote it. -+ func_quote_for_eval "$arg" -+ func_append install_prog "$func_quote_for_eval_result" -+ install_shared_prog=$install_prog -+ case " $install_prog " in -+ *[\\\ /]cp\ *) install_cp=: ;; -+ *) install_cp=false ;; -+ esac -+ -+ # We need to accept at least all the BSD install flags. -+ dest= -+ files= -+ opts= -+ prev= -+ install_type= -+ isdir=no -+ stripme= -+ no_mode=: -+ for arg -+ do -+ arg2= -+ if test -n "$dest"; then -+ func_append files " $dest" -+ dest=$arg -+ continue -+ fi -+ -+ case $arg in -+ -d) isdir=yes ;; -+ -f) -+ if $install_cp; then :; else -+ prev=$arg -+ fi -+ ;; -+ -g | -m | -o) -+ prev=$arg -+ ;; -+ -s) -+ stripme=" -s" -+ continue -+ ;; -+ -*) -+ ;; -+ *) -+ # If the previous option needed an argument, then skip it. -+ if test -n "$prev"; then -+ if test "x$prev" = x-m && test -n "$install_override_mode"; then -+ arg2=$install_override_mode -+ no_mode=false -+ fi -+ prev= -+ else -+ dest=$arg -+ continue -+ fi -+ ;; -+ esac -+ -+ # Aesthetically quote the argument. -+ func_quote_for_eval "$arg" -+ func_append install_prog " $func_quote_for_eval_result" -+ if test -n "$arg2"; then -+ func_quote_for_eval "$arg2" -+ fi -+ func_append install_shared_prog " $func_quote_for_eval_result" -+ done -+ -+ test -z "$install_prog" && \ -+ func_fatal_help "you must specify an install program" -+ -+ test -n "$prev" && \ -+ func_fatal_help "the \`$prev' option requires an argument" -+ -+ if test -n "$install_override_mode" && $no_mode; then -+ if $install_cp; then :; else -+ func_quote_for_eval "$install_override_mode" -+ func_append install_shared_prog " -m $func_quote_for_eval_result" -+ fi -+ fi -+ -+ if test -z "$files"; then -+ if test -z "$dest"; then -+ func_fatal_help "no file or destination specified" -+ else -+ func_fatal_help "you must specify a destination" -+ fi -+ fi -+ -+ # Strip any trailing slash from the destination. -+ func_stripname '' '/' "$dest" -+ dest=$func_stripname_result -+ -+ # Check to see that the destination is a directory. -+ test -d "$dest" && isdir=yes -+ if test "$isdir" = yes; then -+ destdir="$dest" -+ destname= -+ else -+ func_dirname_and_basename "$dest" "" "." -+ destdir="$func_dirname_result" -+ destname="$func_basename_result" -+ -+ # Not a directory, so check to see that there is only one file specified. -+ set dummy $files; shift -+ test "$#" -gt 1 && \ -+ func_fatal_help "\`$dest' is not a directory" -+ fi -+ case $destdir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ for file in $files; do -+ case $file in -+ *.lo) ;; -+ *) -+ func_fatal_help "\`$destdir' must be an absolute directory name" -+ ;; -+ esac -+ done -+ ;; -+ esac -+ -+ # This variable tells wrapper scripts just to set variables rather -+ # than running their programs. -+ libtool_install_magic="$magic" -+ -+ staticlibs= -+ future_libdirs= -+ current_libdirs= -+ for file in $files; do -+ -+ # Do each installation. -+ case $file in -+ *.$libext) -+ # Do the static libraries later. -+ func_append staticlibs " $file" -+ ;; -+ -+ *.la) -+ func_resolve_sysroot "$file" -+ file=$func_resolve_sysroot_result -+ -+ # Check to see that this really is a libtool archive. -+ func_lalib_unsafe_p "$file" \ -+ || func_fatal_help "\`$file' is not a valid libtool archive" -+ -+ library_names= -+ old_library= -+ relink_command= -+ func_source "$file" -+ -+ # Add the libdir to current_libdirs if it is the destination. -+ if test "X$destdir" = "X$libdir"; then -+ case "$current_libdirs " in -+ *" $libdir "*) ;; -+ *) func_append current_libdirs " $libdir" ;; -+ esac -+ else -+ # Note the libdir as a future libdir. -+ case "$future_libdirs " in -+ *" $libdir "*) ;; -+ *) func_append future_libdirs " $libdir" ;; -+ esac -+ fi -+ -+ func_dirname "$file" "/" "" -+ dir="$func_dirname_result" -+ func_append dir "$objdir" -+ -+ if test -n "$relink_command"; then -+ # Determine the prefix the user has applied to our future dir. -+ inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` -+ -+ # Don't allow the user to place us outside of our expected -+ # location b/c this prevents finding dependent libraries that -+ # are installed to the same prefix. -+ # At present, this check doesn't affect windows .dll's that -+ # are installed into $libdir/../bin (currently, that works fine) -+ # but it's something to keep an eye on. -+ test "$inst_prefix_dir" = "$destdir" && \ -+ func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" -+ -+ if test -n "$inst_prefix_dir"; then -+ # Stick the inst_prefix_dir data into the link command. -+ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` -+ else -+ relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` -+ fi -+ -+ func_warning "relinking \`$file'" -+ func_show_eval "$relink_command" \ -+ 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' -+ fi -+ -+ # See the names of the shared library. -+ set dummy $library_names; shift -+ if test -n "$1"; then -+ realname="$1" -+ shift -+ -+ srcname="$realname" -+ test -n "$relink_command" && srcname="$realname"T -+ -+ # Install the shared library and build the symlinks. -+ func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ -+ 'exit $?' -+ tstripme="$stripme" -+ case $host_os in -+ cygwin* | mingw* | pw32* | cegcc*) -+ case $realname in -+ *.dll.a) -+ tstripme="" -+ ;; -+ esac -+ ;; -+ esac -+ if test -n "$tstripme" && test -n "$striplib"; then -+ func_show_eval "$striplib $destdir/$realname" 'exit $?' -+ fi -+ -+ if test "$#" -gt 0; then -+ # Delete the old symlinks, and create new ones. -+ # Try `ln -sf' first, because the `ln' binary might depend on -+ # the symlink we replace! Solaris /bin/ln does not understand -f, -+ # so we also need to try rm && ln -s. -+ for linkname -+ do -+ test "$linkname" != "$realname" \ -+ && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" -+ done -+ fi -+ -+ # Do each command in the postinstall commands. -+ lib="$destdir/$realname" -+ func_execute_cmds "$postinstall_cmds" 'exit $?' -+ fi -+ -+ # Install the pseudo-library for information purposes. -+ func_basename "$file" -+ name="$func_basename_result" -+ instname="$dir/$name"i -+ func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' -+ -+ # Maybe install the static library, too. -+ test -n "$old_library" && func_append staticlibs " $dir/$old_library" -+ ;; -+ -+ *.lo) -+ # Install (i.e. copy) a libtool object. -+ -+ # Figure out destination file name, if it wasn't already specified. -+ if test -n "$destname"; then -+ destfile="$destdir/$destname" -+ else -+ func_basename "$file" -+ destfile="$func_basename_result" -+ destfile="$destdir/$destfile" -+ fi -+ -+ # Deduce the name of the destination old-style object file. -+ case $destfile in -+ *.lo) -+ func_lo2o "$destfile" -+ staticdest=$func_lo2o_result -+ ;; -+ *.$objext) -+ staticdest="$destfile" -+ destfile= -+ ;; -+ *) -+ func_fatal_help "cannot copy a libtool object to \`$destfile'" -+ ;; -+ esac -+ -+ # Install the libtool object if requested. -+ test -n "$destfile" && \ -+ func_show_eval "$install_prog $file $destfile" 'exit $?' -+ -+ # Install the old object if enabled. -+ if test "$build_old_libs" = yes; then -+ # Deduce the name of the old-style object file. -+ func_lo2o "$file" -+ staticobj=$func_lo2o_result -+ func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' -+ fi -+ exit $EXIT_SUCCESS -+ ;; -+ -+ *) -+ # Figure out destination file name, if it wasn't already specified. -+ if test -n "$destname"; then -+ destfile="$destdir/$destname" -+ else -+ func_basename "$file" -+ destfile="$func_basename_result" -+ destfile="$destdir/$destfile" -+ fi -+ -+ # If the file is missing, and there is a .exe on the end, strip it -+ # because it is most likely a libtool script we actually want to -+ # install -+ stripped_ext="" -+ case $file in -+ *.exe) -+ if test ! -f "$file"; then -+ func_stripname '' '.exe' "$file" -+ file=$func_stripname_result -+ stripped_ext=".exe" -+ fi -+ ;; -+ esac -+ -+ # Do a test to see if this is really a libtool program. -+ case $host in -+ *cygwin* | *mingw*) -+ if func_ltwrapper_executable_p "$file"; then -+ func_ltwrapper_scriptname "$file" -+ wrapper=$func_ltwrapper_scriptname_result -+ else -+ func_stripname '' '.exe' "$file" -+ wrapper=$func_stripname_result -+ fi -+ ;; -+ *) -+ wrapper=$file -+ ;; -+ esac -+ if func_ltwrapper_script_p "$wrapper"; then -+ notinst_deplibs= -+ relink_command= -+ -+ func_source "$wrapper" -+ -+ # Check the variables that should have been set. -+ test -z "$generated_by_libtool_version" && \ -+ func_fatal_error "invalid libtool wrapper script \`$wrapper'" -+ -+ finalize=yes -+ for lib in $notinst_deplibs; do -+ # Check to see that each library is installed. -+ libdir= -+ if test -f "$lib"; then -+ func_source "$lib" -+ fi -+ libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test -+ if test -n "$libdir" && test ! -f "$libfile"; then -+ func_warning "\`$lib' has not been installed in \`$libdir'" -+ finalize=no -+ fi -+ done -+ -+ relink_command= -+ func_source "$wrapper" -+ -+ outputname= -+ if test "$fast_install" = no && test -n "$relink_command"; then -+ $opt_dry_run || { -+ if test "$finalize" = yes; then -+ tmpdir=`func_mktempdir` -+ func_basename "$file$stripped_ext" -+ file="$func_basename_result" -+ outputname="$tmpdir/$file" -+ # Replace the output file specification. -+ relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` -+ -+ $opt_silent || { -+ func_quote_for_expand "$relink_command" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ if eval "$relink_command"; then : -+ else -+ func_error "error: relink \`$file' with the above command before installing it" -+ $opt_dry_run || ${RM}r "$tmpdir" -+ continue -+ fi -+ file="$outputname" -+ else -+ func_warning "cannot relink \`$file'" -+ fi -+ } -+ else -+ # Install the binary that we compiled earlier. -+ file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` -+ fi -+ fi -+ -+ # remove .exe since cygwin /usr/bin/install will append another -+ # one anyway -+ case $install_prog,$host in -+ */usr/bin/install*,*cygwin*) -+ case $file:$destfile in -+ *.exe:*.exe) -+ # this is ok -+ ;; -+ *.exe:*) -+ destfile=$destfile.exe -+ ;; -+ *:*.exe) -+ func_stripname '' '.exe' "$destfile" -+ destfile=$func_stripname_result -+ ;; -+ esac -+ ;; -+ esac -+ func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' -+ $opt_dry_run || if test -n "$outputname"; then -+ ${RM}r "$tmpdir" -+ fi -+ ;; -+ esac -+ done -+ -+ for file in $staticlibs; do -+ func_basename "$file" -+ name="$func_basename_result" -+ -+ # Set up the ranlib parameters. -+ oldlib="$destdir/$name" -+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 -+ tool_oldlib=$func_to_tool_file_result -+ -+ func_show_eval "$install_prog \$file \$oldlib" 'exit $?' -+ -+ if test -n "$stripme" && test -n "$old_striplib"; then -+ func_show_eval "$old_striplib $tool_oldlib" 'exit $?' -+ fi -+ -+ # Do each command in the postinstall commands. -+ func_execute_cmds "$old_postinstall_cmds" 'exit $?' -+ done -+ -+ test -n "$future_libdirs" && \ -+ func_warning "remember to run \`$progname --finish$future_libdirs'" -+ -+ if test -n "$current_libdirs"; then -+ # Maybe just do a dry run. -+ $opt_dry_run && current_libdirs=" -n$current_libdirs" -+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' -+ else -+ exit $EXIT_SUCCESS -+ fi -+} -+ -+test "$opt_mode" = install && func_mode_install ${1+"$@"} -+ -+ -+# func_generate_dlsyms outputname originator pic_p -+# Extract symbols from dlprefiles and create ${outputname}S.o with -+# a dlpreopen symbol table. -+func_generate_dlsyms () -+{ -+ $opt_debug -+ my_outputname="$1" -+ my_originator="$2" -+ my_pic_p="${3-no}" -+ my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` -+ my_dlsyms= -+ -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ if test -n "$NM" && test -n "$global_symbol_pipe"; then -+ my_dlsyms="${my_outputname}S.c" -+ else -+ func_error "not configured to extract global symbols from dlpreopened files" -+ fi -+ fi -+ -+ if test -n "$my_dlsyms"; then -+ case $my_dlsyms in -+ "") ;; -+ *.c) -+ # Discover the nlist of each of the dlfiles. -+ nlist="$output_objdir/${my_outputname}.nm" -+ -+ func_show_eval "$RM $nlist ${nlist}S ${nlist}T" -+ -+ # Parse the name list into a source file. -+ func_verbose "creating $output_objdir/$my_dlsyms" -+ -+ $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -+/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -+/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ -+ -+#ifdef __cplusplus -+extern \"C\" { -+#endif -+ -+#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -+#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -+#endif -+ -+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -+/* DATA imports from DLLs on WIN32 con't be const, because runtime -+ relocations are performed -- see ld's documentation on pseudo-relocs. */ -+# define LT_DLSYM_CONST -+#elif defined(__osf__) -+/* This system does not cope well with relocations in const data. */ -+# define LT_DLSYM_CONST -+#else -+# define LT_DLSYM_CONST const -+#endif -+ -+/* External symbol declarations for the compiler. */\ -+" -+ -+ if test "$dlself" = yes; then -+ func_verbose "generating symbol list for \`$output'" -+ -+ $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" -+ -+ # Add our own program objects to the symbol list. -+ progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` -+ for progfile in $progfiles; do -+ func_to_tool_file "$progfile" func_convert_file_msys_to_w32 -+ func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" -+ $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" -+ done -+ -+ if test -n "$exclude_expsyms"; then -+ $opt_dry_run || { -+ eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' -+ eval '$MV "$nlist"T "$nlist"' -+ } -+ fi -+ -+ if test -n "$export_symbols_regex"; then -+ $opt_dry_run || { -+ eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' -+ eval '$MV "$nlist"T "$nlist"' -+ } -+ fi -+ -+ # Prepare the list of exported symbols -+ if test -z "$export_symbols"; then -+ export_symbols="$output_objdir/$outputname.exp" -+ $opt_dry_run || { -+ $RM $export_symbols -+ eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac -+ } -+ else -+ $opt_dry_run || { -+ eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' -+ eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' -+ eval '$MV "$nlist"T "$nlist"' -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' -+ eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' -+ ;; -+ esac -+ } -+ fi -+ fi -+ -+ for dlprefile in $dlprefiles; do -+ func_verbose "extracting global C symbols from \`$dlprefile'" -+ func_basename "$dlprefile" -+ name="$func_basename_result" -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ # if an import library, we need to obtain dlname -+ if func_win32_import_lib_p "$dlprefile"; then -+ func_tr_sh "$dlprefile" -+ eval "curr_lafile=\$libfile_$func_tr_sh_result" -+ dlprefile_dlbasename="" -+ if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then -+ # Use subshell, to avoid clobbering current variable values -+ dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` -+ if test -n "$dlprefile_dlname" ; then -+ func_basename "$dlprefile_dlname" -+ dlprefile_dlbasename="$func_basename_result" -+ else -+ # no lafile. user explicitly requested -dlpreopen . -+ $sharedlib_from_linklib_cmd "$dlprefile" -+ dlprefile_dlbasename=$sharedlib_from_linklib_result -+ fi -+ fi -+ $opt_dry_run || { -+ if test -n "$dlprefile_dlbasename" ; then -+ eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' -+ else -+ func_warning "Could not compute DLL name from $name" -+ eval '$ECHO ": $name " >> "$nlist"' -+ fi -+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 -+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | -+ $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" -+ } -+ else # not an import lib -+ $opt_dry_run || { -+ eval '$ECHO ": $name " >> "$nlist"' -+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 -+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" -+ } -+ fi -+ ;; -+ *) -+ $opt_dry_run || { -+ eval '$ECHO ": $name " >> "$nlist"' -+ func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 -+ eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" -+ } -+ ;; -+ esac -+ done -+ -+ $opt_dry_run || { -+ # Make sure we have at least an empty file. -+ test -f "$nlist" || : > "$nlist" -+ -+ if test -n "$exclude_expsyms"; then -+ $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T -+ $MV "$nlist"T "$nlist" -+ fi -+ -+ # Try sorting and uniquifying the output. -+ if $GREP -v "^: " < "$nlist" | -+ if sort -k 3 /dev/null 2>&1; then -+ sort -k 3 -+ else -+ sort +2 -+ fi | -+ uniq > "$nlist"S; then -+ : -+ else -+ $GREP -v "^: " < "$nlist" > "$nlist"S -+ fi -+ -+ if test -f "$nlist"S; then -+ eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' -+ else -+ echo '/* NONE */' >> "$output_objdir/$my_dlsyms" -+ fi -+ -+ echo >> "$output_objdir/$my_dlsyms" "\ -+ -+/* The mapping between symbol names and symbols. */ -+typedef struct { -+ const char *name; -+ void *address; -+} lt_dlsymlist; -+extern LT_DLSYM_CONST lt_dlsymlist -+lt_${my_prefix}_LTX_preloaded_symbols[]; -+LT_DLSYM_CONST lt_dlsymlist -+lt_${my_prefix}_LTX_preloaded_symbols[] = -+{\ -+ { \"$my_originator\", (void *) 0 }," -+ -+ case $need_lib_prefix in -+ no) -+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" -+ ;; -+ *) -+ eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" -+ ;; -+ esac -+ echo >> "$output_objdir/$my_dlsyms" "\ -+ {0, (void *) 0} -+}; -+ -+/* This works around a problem in FreeBSD linker */ -+#ifdef FREEBSD_WORKAROUND -+static const void *lt_preloaded_setup() { -+ return lt_${my_prefix}_LTX_preloaded_symbols; -+} -+#endif -+ -+#ifdef __cplusplus -+} -+#endif\ -+" -+ } # !$opt_dry_run -+ -+ pic_flag_for_symtable= -+ case "$compile_command " in -+ *" -static "*) ;; -+ *) -+ case $host in -+ # compiling the symbol table file with pic_flag works around -+ # a FreeBSD bug that causes programs to crash when -lm is -+ # linked before any other PIC object. But we must not use -+ # pic_flag when linking with -static. The problem exists in -+ # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. -+ *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) -+ pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; -+ *-*-hpux*) -+ pic_flag_for_symtable=" $pic_flag" ;; -+ *) -+ if test "X$my_pic_p" != Xno; then -+ pic_flag_for_symtable=" $pic_flag" -+ fi -+ ;; -+ esac -+ ;; -+ esac -+ symtab_cflags= -+ for arg in $LTCFLAGS; do -+ case $arg in -+ -pie | -fpie | -fPIE) ;; -+ *) func_append symtab_cflags " $arg" ;; -+ esac -+ done -+ -+ # Now compile the dynamic symbol file. -+ func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' -+ -+ # Clean up the generated files. -+ func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' -+ -+ # Transform the symbol file into the correct name. -+ symfileobj="$output_objdir/${my_outputname}S.$objext" -+ case $host in -+ *cygwin* | *mingw* | *cegcc* ) -+ if test -f "$output_objdir/$my_outputname.def"; then -+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` -+ else -+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` -+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` -+ fi -+ ;; -+ *) -+ compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` -+ finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` -+ ;; -+ esac -+ ;; -+ *) -+ func_fatal_error "unknown suffix for \`$my_dlsyms'" -+ ;; -+ esac -+ else -+ # We keep going just in case the user didn't refer to -+ # lt_preloaded_symbols. The linker will fail if global_symbol_pipe -+ # really was required. -+ -+ # Nullify the symbol file. -+ compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` -+ finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` -+ fi -+} -+ -+# func_win32_libid arg -+# return the library type of file 'arg' -+# -+# Need a lot of goo to handle *both* DLLs and import libs -+# Has to be a shell function in order to 'eat' the argument -+# that is supplied when $file_magic_command is called. -+# Despite the name, also deal with 64 bit binaries. -+func_win32_libid () -+{ -+ $opt_debug -+ win32_libid_type="unknown" -+ win32_fileres=`file -L $1 2>/dev/null` -+ case $win32_fileres in -+ *ar\ archive\ import\ library*) # definitely import -+ win32_libid_type="x86 archive import" -+ ;; -+ *ar\ archive*) # could be an import, or static -+ # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. -+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | -+ $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then -+ func_to_tool_file "$1" func_convert_file_msys_to_w32 -+ win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | -+ $SED -n -e ' -+ 1,100{ -+ / I /{ -+ s,.*,import, -+ p -+ q -+ } -+ }'` -+ case $win32_nmres in -+ import*) win32_libid_type="x86 archive import";; -+ *) win32_libid_type="x86 archive static";; -+ esac -+ fi -+ ;; -+ *DLL*) -+ win32_libid_type="x86 DLL" -+ ;; -+ *executable*) # but shell scripts are "executable" too... -+ case $win32_fileres in -+ *MS\ Windows\ PE\ Intel*) -+ win32_libid_type="x86 DLL" -+ ;; -+ esac -+ ;; -+ esac -+ $ECHO "$win32_libid_type" -+} -+ -+# func_cygming_dll_for_implib ARG -+# -+# Platform-specific function to extract the -+# name of the DLL associated with the specified -+# import library ARG. -+# Invoked by eval'ing the libtool variable -+# $sharedlib_from_linklib_cmd -+# Result is available in the variable -+# $sharedlib_from_linklib_result -+func_cygming_dll_for_implib () -+{ -+ $opt_debug -+ sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -+} -+ -+# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -+# -+# The is the core of a fallback implementation of a -+# platform-specific function to extract the name of the -+# DLL associated with the specified import library LIBNAME. -+# -+# SECTION_NAME is either .idata$6 or .idata$7, depending -+# on the platform and compiler that created the implib. -+# -+# Echos the name of the DLL associated with the -+# specified import library. -+func_cygming_dll_for_implib_fallback_core () -+{ -+ $opt_debug -+ match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` -+ $OBJDUMP -s --section "$1" "$2" 2>/dev/null | -+ $SED '/^Contents of section '"$match_literal"':/{ -+ # Place marker at beginning of archive member dllname section -+ s/.*/====MARK====/ -+ p -+ d -+ } -+ # These lines can sometimes be longer than 43 characters, but -+ # are always uninteresting -+ /:[ ]*file format pe[i]\{,1\}-/d -+ /^In archive [^:]*:/d -+ # Ensure marker is printed -+ /^====MARK====/p -+ # Remove all lines with less than 43 characters -+ /^.\{43\}/!d -+ # From remaining lines, remove first 43 characters -+ s/^.\{43\}//' | -+ $SED -n ' -+ # Join marker and all lines until next marker into a single line -+ /^====MARK====/ b para -+ H -+ $ b para -+ b -+ :para -+ x -+ s/\n//g -+ # Remove the marker -+ s/^====MARK====// -+ # Remove trailing dots and whitespace -+ s/[\. \t]*$// -+ # Print -+ /./p' | -+ # we now have a list, one entry per line, of the stringified -+ # contents of the appropriate section of all members of the -+ # archive which possess that section. Heuristic: eliminate -+ # all those which have a first or second character that is -+ # a '.' (that is, objdump's representation of an unprintable -+ # character.) This should work for all archives with less than -+ # 0x302f exports -- but will fail for DLLs whose name actually -+ # begins with a literal '.' or a single character followed by -+ # a '.'. -+ # -+ # Of those that remain, print the first one. -+ $SED -e '/^\./d;/^.\./d;q' -+} -+ -+# func_cygming_gnu_implib_p ARG -+# This predicate returns with zero status (TRUE) if -+# ARG is a GNU/binutils-style import library. Returns -+# with nonzero status (FALSE) otherwise. -+func_cygming_gnu_implib_p () -+{ -+ $opt_debug -+ func_to_tool_file "$1" func_convert_file_msys_to_w32 -+ func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` -+ test -n "$func_cygming_gnu_implib_tmp" -+} -+ -+# func_cygming_ms_implib_p ARG -+# This predicate returns with zero status (TRUE) if -+# ARG is an MS-style import library. Returns -+# with nonzero status (FALSE) otherwise. -+func_cygming_ms_implib_p () -+{ -+ $opt_debug -+ func_to_tool_file "$1" func_convert_file_msys_to_w32 -+ func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` -+ test -n "$func_cygming_ms_implib_tmp" -+} -+ -+# func_cygming_dll_for_implib_fallback ARG -+# Platform-specific function to extract the -+# name of the DLL associated with the specified -+# import library ARG. -+# -+# This fallback implementation is for use when $DLLTOOL -+# does not support the --identify-strict option. -+# Invoked by eval'ing the libtool variable -+# $sharedlib_from_linklib_cmd -+# Result is available in the variable -+# $sharedlib_from_linklib_result -+func_cygming_dll_for_implib_fallback () -+{ -+ $opt_debug -+ if func_cygming_gnu_implib_p "$1" ; then -+ # binutils import library -+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` -+ elif func_cygming_ms_implib_p "$1" ; then -+ # ms-generated import library -+ sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` -+ else -+ # unknown -+ sharedlib_from_linklib_result="" -+ fi -+} -+ -+ -+# func_extract_an_archive dir oldlib -+func_extract_an_archive () -+{ -+ $opt_debug -+ f_ex_an_ar_dir="$1"; shift -+ f_ex_an_ar_oldlib="$1" -+ if test "$lock_old_archive_extraction" = yes; then -+ lockfile=$f_ex_an_ar_oldlib.lock -+ until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do -+ func_echo "Waiting for $lockfile to be removed" -+ sleep 2 -+ done -+ fi -+ func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ -+ 'stat=$?; rm -f "$lockfile"; exit $stat' -+ if test "$lock_old_archive_extraction" = yes; then -+ $opt_dry_run || rm -f "$lockfile" -+ fi -+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" -+ fi -+} -+ -+ -+# func_extract_archives gentop oldlib ... -+func_extract_archives () -+{ -+ $opt_debug -+ my_gentop="$1"; shift -+ my_oldlibs=${1+"$@"} -+ my_oldobjs="" -+ my_xlib="" -+ my_xabs="" -+ my_xdir="" -+ -+ for my_xlib in $my_oldlibs; do -+ # Extract the objects. -+ case $my_xlib in -+ [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; -+ *) my_xabs=`pwd`"/$my_xlib" ;; -+ esac -+ func_basename "$my_xlib" -+ my_xlib="$func_basename_result" -+ my_xlib_u=$my_xlib -+ while :; do -+ case " $extracted_archives " in -+ *" $my_xlib_u "*) -+ func_arith $extracted_serial + 1 -+ extracted_serial=$func_arith_result -+ my_xlib_u=lt$extracted_serial-$my_xlib ;; -+ *) break ;; -+ esac -+ done -+ extracted_archives="$extracted_archives $my_xlib_u" -+ my_xdir="$my_gentop/$my_xlib_u" -+ -+ func_mkdir_p "$my_xdir" -+ -+ case $host in -+ *-darwin*) -+ func_verbose "Extracting $my_xabs" -+ # Do not bother doing anything if just a dry run -+ $opt_dry_run || { -+ darwin_orig_dir=`pwd` -+ cd $my_xdir || exit $? -+ darwin_archive=$my_xabs -+ darwin_curdir=`pwd` -+ darwin_base_archive=`basename "$darwin_archive"` -+ darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` -+ if test -n "$darwin_arches"; then -+ darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` -+ darwin_arch= -+ func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" -+ for darwin_arch in $darwin_arches ; do -+ func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" -+ cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" -+ func_extract_an_archive "`pwd`" "${darwin_base_archive}" -+ cd "$darwin_curdir" -+ $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" -+ done # $darwin_arches -+ ## Okay now we've a bunch of thin objects, gotta fatten them up :) -+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` -+ darwin_file= -+ darwin_files= -+ for darwin_file in $darwin_filelist; do -+ darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` -+ $LIPO -create -output "$darwin_file" $darwin_files -+ done # $darwin_filelist -+ $RM -rf unfat-$$ -+ cd "$darwin_orig_dir" -+ else -+ cd $darwin_orig_dir -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ fi # $darwin_arches -+ } # !$opt_dry_run -+ ;; -+ *) -+ func_extract_an_archive "$my_xdir" "$my_xabs" -+ ;; -+ esac -+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` -+ done -+ -+ func_extract_archives_result="$my_oldobjs" -+} -+ -+ -+# func_emit_wrapper [arg=no] -+# -+# Emit a libtool wrapper script on stdout. -+# Don't directly open a file because we may want to -+# incorporate the script contents within a cygwin/mingw -+# wrapper executable. Must ONLY be called from within -+# func_mode_link because it depends on a number of variables -+# set therein. -+# -+# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -+# variable will take. If 'yes', then the emitted script -+# will assume that the directory in which it is stored is -+# the $objdir directory. This is a cygwin/mingw-specific -+# behavior. -+func_emit_wrapper () -+{ -+ func_emit_wrapper_arg1=${1-no} -+ -+ $ECHO "\ -+#! $SHELL -+ -+# $output - temporary wrapper script for $objdir/$outputname -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -+# -+# The $output program cannot be directly executed until all the libtool -+# libraries that it depends on are installed. -+# -+# This wrapper script should never be moved out of the build directory. -+# If it is, it will not operate correctly. -+ -+# Sed substitution that helps us do robust quoting. It backslashifies -+# metacharacters that are still active within double-quoted strings. -+sed_quote_subst='$sed_quote_subst' -+ -+# Be Bourne compatible -+if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then -+ emulate sh -+ NULLCMD=: -+ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which -+ # is contrary to our usage. Disable this feature. -+ alias -g '\${1+\"\$@\"}'='\"\$@\"' -+ setopt NO_GLOB_SUBST -+else -+ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -+fi -+BIN_SH=xpg4; export BIN_SH # for Tru64 -+DUALCASE=1; export DUALCASE # for MKS sh -+ -+# The HP-UX ksh and POSIX shell print the target directory to stdout -+# if CDPATH is set. -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+ -+relink_command=\"$relink_command\" -+ -+# This environment variable determines our operation mode. -+if test \"\$libtool_install_magic\" = \"$magic\"; then -+ # install mode needs the following variables: -+ generated_by_libtool_version='$macro_version' -+ notinst_deplibs='$notinst_deplibs' -+else -+ # When we are sourced in execute mode, \$file and \$ECHO are already set. -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ file=\"\$0\"" -+ -+ qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` -+ $ECHO "\ -+ -+# A function that is used when there is no print builtin or printf. -+func_fallback_echo () -+{ -+ eval 'cat <<_LTECHO_EOF -+\$1 -+_LTECHO_EOF' -+} -+ ECHO=\"$qECHO\" -+ fi -+ -+# Very basic option parsing. These options are (a) specific to -+# the libtool wrapper, (b) are identical between the wrapper -+# /script/ and the wrapper /executable/ which is used only on -+# windows platforms, and (c) all begin with the string "--lt-" -+# (application programs are unlikely to have options which match -+# this pattern). -+# -+# There are only two supported options: --lt-debug and -+# --lt-dump-script. There is, deliberately, no --lt-help. -+# -+# The first argument to this parsing function should be the -+# script's $0 value, followed by "$@". -+lt_option_debug= -+func_parse_lt_options () -+{ -+ lt_script_arg0=\$0 -+ shift -+ for lt_opt -+ do -+ case \"\$lt_opt\" in -+ --lt-debug) lt_option_debug=1 ;; -+ --lt-dump-script) -+ lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` -+ test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. -+ lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` -+ cat \"\$lt_dump_D/\$lt_dump_F\" -+ exit 0 -+ ;; -+ --lt-*) -+ \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 -+ exit 1 -+ ;; -+ esac -+ done -+ -+ # Print the debug banner immediately: -+ if test -n \"\$lt_option_debug\"; then -+ echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 -+ fi -+} -+ -+# Used when --lt-debug. Prints its arguments to stdout -+# (redirection is the responsibility of the caller) -+func_lt_dump_args () -+{ -+ lt_dump_args_N=1; -+ for lt_arg -+ do -+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" -+ lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` -+ done -+} -+ -+# Core function for launching the target application -+func_exec_program_core () -+{ -+" -+ case $host in -+ # Backslashes separate directories on plain windows -+ *-*-mingw | *-*-os2* | *-cegcc*) -+ $ECHO "\ -+ if test -n \"\$lt_option_debug\"; then -+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 -+ func_lt_dump_args \${1+\"\$@\"} 1>&2 -+ fi -+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -+" -+ ;; -+ -+ *) -+ $ECHO "\ -+ if test -n \"\$lt_option_debug\"; then -+ \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 -+ func_lt_dump_args \${1+\"\$@\"} 1>&2 -+ fi -+ exec \"\$progdir/\$program\" \${1+\"\$@\"} -+" -+ ;; -+ esac -+ $ECHO "\ -+ \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 -+ exit 1 -+} -+ -+# A function to encapsulate launching the target application -+# Strips options in the --lt-* namespace from \$@ and -+# launches target application with the remaining arguments. -+func_exec_program () -+{ -+ case \" \$* \" in -+ *\\ --lt-*) -+ for lt_wr_arg -+ do -+ case \$lt_wr_arg in -+ --lt-*) ;; -+ *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; -+ esac -+ shift -+ done ;; -+ esac -+ func_exec_program_core \${1+\"\$@\"} -+} -+ -+ # Parse options -+ func_parse_lt_options \"\$0\" \${1+\"\$@\"} -+ -+ # Find the directory that this script lives in. -+ thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` -+ test \"x\$thisdir\" = \"x\$file\" && thisdir=. -+ -+ # Follow symbolic links until we get to the real thisdir. -+ file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` -+ while test -n \"\$file\"; do -+ destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` -+ -+ # If there was a directory component, then change thisdir. -+ if test \"x\$destdir\" != \"x\$file\"; then -+ case \"\$destdir\" in -+ [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; -+ *) thisdir=\"\$thisdir/\$destdir\" ;; -+ esac -+ fi -+ -+ file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` -+ file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` -+ done -+ -+ # Usually 'no', except on cygwin/mingw when embedded into -+ # the cwrapper. -+ WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 -+ if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then -+ # special case for '.' -+ if test \"\$thisdir\" = \".\"; then -+ thisdir=\`pwd\` -+ fi -+ # remove .libs from thisdir -+ case \"\$thisdir\" in -+ *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; -+ $objdir ) thisdir=. ;; -+ esac -+ fi -+ -+ # Try to get the absolute directory name. -+ absdir=\`cd \"\$thisdir\" && pwd\` -+ test -n \"\$absdir\" && thisdir=\"\$absdir\" -+" -+ -+ if test "$fast_install" = yes; then -+ $ECHO "\ -+ program=lt-'$outputname'$exeext -+ progdir=\"\$thisdir/$objdir\" -+ -+ if test ! -f \"\$progdir/\$program\" || -+ { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ -+ test \"X\$file\" != \"X\$progdir/\$program\"; }; then -+ -+ file=\"\$\$-\$program\" -+ -+ if test ! -d \"\$progdir\"; then -+ $MKDIR \"\$progdir\" -+ else -+ $RM \"\$progdir/\$file\" -+ fi" -+ -+ $ECHO "\ -+ -+ # relink executable if necessary -+ if test -n \"\$relink_command\"; then -+ if relink_command_output=\`eval \$relink_command 2>&1\`; then : -+ else -+ $ECHO \"\$relink_command_output\" >&2 -+ $RM \"\$progdir/\$file\" -+ exit 1 -+ fi -+ fi -+ -+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || -+ { $RM \"\$progdir/\$program\"; -+ $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } -+ $RM \"\$progdir/\$file\" -+ fi" -+ else -+ $ECHO "\ -+ program='$outputname' -+ progdir=\"\$thisdir/$objdir\" -+" -+ fi -+ -+ $ECHO "\ -+ -+ if test -f \"\$progdir/\$program\"; then" -+ -+ # fixup the dll searchpath if we need to. -+ # -+ # Fix the DLL searchpath if we need to. Do this before prepending -+ # to shlibpath, because on Windows, both are PATH and uninstalled -+ # libraries must come first. -+ if test -n "$dllsearchpath"; then -+ $ECHO "\ -+ # Add the dll search path components to the executable PATH -+ PATH=$dllsearchpath:\$PATH -+" -+ fi -+ -+ # Export our shlibpath_var if we have one. -+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then -+ $ECHO "\ -+ # Add our own library path to $shlibpath_var -+ $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" -+ -+ # Some systems cannot cope with colon-terminated $shlibpath_var -+ # The second colon is a workaround for a bug in BeOS R4 sed -+ $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` -+ -+ export $shlibpath_var -+" -+ fi -+ -+ $ECHO "\ -+ if test \"\$libtool_execute_magic\" != \"$magic\"; then -+ # Run the actual program with our arguments. -+ func_exec_program \${1+\"\$@\"} -+ fi -+ else -+ # The program doesn't exist. -+ \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 -+ \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 -+ \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 -+ exit 1 -+ fi -+fi\ -+" -+} -+ -+ -+# func_emit_cwrapperexe_src -+# emit the source code for a wrapper executable on stdout -+# Must ONLY be called from within func_mode_link because -+# it depends on a number of variable set therein. -+func_emit_cwrapperexe_src () -+{ -+ cat < -+#include -+#ifdef _MSC_VER -+# include -+# include -+# include -+#else -+# include -+# include -+# ifdef __CYGWIN__ -+# include -+# endif -+#endif -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+/* declarations of non-ANSI functions */ -+#if defined(__MINGW32__) -+# ifdef __STRICT_ANSI__ -+int _putenv (const char *); -+# endif -+#elif defined(__CYGWIN__) -+# ifdef __STRICT_ANSI__ -+char *realpath (const char *, char *); -+int putenv (char *); -+int setenv (const char *, const char *, int); -+# endif -+/* #elif defined (other platforms) ... */ -+#endif -+ -+/* portability defines, excluding path handling macros */ -+#if defined(_MSC_VER) -+# define setmode _setmode -+# define stat _stat -+# define chmod _chmod -+# define getcwd _getcwd -+# define putenv _putenv -+# define S_IXUSR _S_IEXEC -+# ifndef _INTPTR_T_DEFINED -+# define _INTPTR_T_DEFINED -+# define intptr_t int -+# endif -+#elif defined(__MINGW32__) -+# define setmode _setmode -+# define stat _stat -+# define chmod _chmod -+# define getcwd _getcwd -+# define putenv _putenv -+#elif defined(__CYGWIN__) -+# define HAVE_SETENV -+# define FOPEN_WB "wb" -+/* #elif defined (other platforms) ... */ -+#endif -+ -+#if defined(PATH_MAX) -+# define LT_PATHMAX PATH_MAX -+#elif defined(MAXPATHLEN) -+# define LT_PATHMAX MAXPATHLEN -+#else -+# define LT_PATHMAX 1024 -+#endif -+ -+#ifndef S_IXOTH -+# define S_IXOTH 0 -+#endif -+#ifndef S_IXGRP -+# define S_IXGRP 0 -+#endif -+ -+/* path handling portability macros */ -+#ifndef DIR_SEPARATOR -+# define DIR_SEPARATOR '/' -+# define PATH_SEPARATOR ':' -+#endif -+ -+#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ -+ defined (__OS2__) -+# define HAVE_DOS_BASED_FILE_SYSTEM -+# define FOPEN_WB "wb" -+# ifndef DIR_SEPARATOR_2 -+# define DIR_SEPARATOR_2 '\\' -+# endif -+# ifndef PATH_SEPARATOR_2 -+# define PATH_SEPARATOR_2 ';' -+# endif -+#endif -+ -+#ifndef DIR_SEPARATOR_2 -+# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -+#else /* DIR_SEPARATOR_2 */ -+# define IS_DIR_SEPARATOR(ch) \ -+ (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -+#endif /* DIR_SEPARATOR_2 */ -+ -+#ifndef PATH_SEPARATOR_2 -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -+#else /* PATH_SEPARATOR_2 */ -+# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -+#endif /* PATH_SEPARATOR_2 */ -+ -+#ifndef FOPEN_WB -+# define FOPEN_WB "w" -+#endif -+#ifndef _O_BINARY -+# define _O_BINARY 0 -+#endif -+ -+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -+#define XFREE(stale) do { \ -+ if (stale) { free ((void *) stale); stale = 0; } \ -+} while (0) -+ -+#if defined(LT_DEBUGWRAPPER) -+static int lt_debug = 1; -+#else -+static int lt_debug = 0; -+#endif -+ -+const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ -+ -+void *xmalloc (size_t num); -+char *xstrdup (const char *string); -+const char *base_name (const char *name); -+char *find_executable (const char *wrapper); -+char *chase_symlinks (const char *pathspec); -+int make_executable (const char *path); -+int check_executable (const char *path); -+char *strendzap (char *str, const char *pat); -+void lt_debugprintf (const char *file, int line, const char *fmt, ...); -+void lt_fatal (const char *file, int line, const char *message, ...); -+static const char *nonnull (const char *s); -+static const char *nonempty (const char *s); -+void lt_setenv (const char *name, const char *value); -+char *lt_extend_str (const char *orig_value, const char *add, int to_end); -+void lt_update_exe_path (const char *name, const char *value); -+void lt_update_lib_path (const char *name, const char *value); -+char **prepare_spawn (char **argv); -+void lt_dump_script (FILE *f); -+EOF -+ -+ cat <= 0) -+ && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) -+ return 1; -+ else -+ return 0; -+} -+ -+int -+make_executable (const char *path) -+{ -+ int rval = 0; -+ struct stat st; -+ -+ lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", -+ nonempty (path)); -+ if ((!path) || (!*path)) -+ return 0; -+ -+ if (stat (path, &st) >= 0) -+ { -+ rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); -+ } -+ return rval; -+} -+ -+/* Searches for the full path of the wrapper. Returns -+ newly allocated full path name if found, NULL otherwise -+ Does not chase symlinks, even on platforms that support them. -+*/ -+char * -+find_executable (const char *wrapper) -+{ -+ int has_slash = 0; -+ const char *p; -+ const char *p_next; -+ /* static buffer for getcwd */ -+ char tmp[LT_PATHMAX + 1]; -+ int tmp_len; -+ char *concat_name; -+ -+ lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", -+ nonempty (wrapper)); -+ -+ if ((wrapper == NULL) || (*wrapper == '\0')) -+ return NULL; -+ -+ /* Absolute path? */ -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ } -+ else -+ { -+#endif -+ if (IS_DIR_SEPARATOR (wrapper[0])) -+ { -+ concat_name = xstrdup (wrapper); -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ } -+#if defined (HAVE_DOS_BASED_FILE_SYSTEM) -+ } -+#endif -+ -+ for (p = wrapper; *p; p++) -+ if (*p == '/') -+ { -+ has_slash = 1; -+ break; -+ } -+ if (!has_slash) -+ { -+ /* no slashes; search PATH */ -+ const char *path = getenv ("PATH"); -+ if (path != NULL) -+ { -+ for (p = path; *p; p = p_next) -+ { -+ const char *q; -+ size_t p_len; -+ for (q = p; *q; q++) -+ if (IS_PATH_SEPARATOR (*q)) -+ break; -+ p_len = q - p; -+ p_next = (*q == '\0' ? q : q + 1); -+ if (p_len == 0) -+ { -+ /* empty path: current directory */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", -+ nonnull (strerror (errno))); -+ tmp_len = strlen (tmp); -+ concat_name = -+ XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ } -+ else -+ { -+ concat_name = -+ XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); -+ memcpy (concat_name, p, p_len); -+ concat_name[p_len] = '/'; -+ strcpy (concat_name + p_len + 1, wrapper); -+ } -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ } -+ } -+ /* not found in PATH; assume curdir */ -+ } -+ /* Relative path | not found in path: prepend cwd */ -+ if (getcwd (tmp, LT_PATHMAX) == NULL) -+ lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", -+ nonnull (strerror (errno))); -+ tmp_len = strlen (tmp); -+ concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); -+ memcpy (concat_name, tmp, tmp_len); -+ concat_name[tmp_len] = '/'; -+ strcpy (concat_name + tmp_len + 1, wrapper); -+ -+ if (check_executable (concat_name)) -+ return concat_name; -+ XFREE (concat_name); -+ return NULL; -+} -+ -+char * -+chase_symlinks (const char *pathspec) -+{ -+#ifndef S_ISLNK -+ return xstrdup (pathspec); -+#else -+ char buf[LT_PATHMAX]; -+ struct stat s; -+ char *tmp_pathspec = xstrdup (pathspec); -+ char *p; -+ int has_symlinks = 0; -+ while (strlen (tmp_pathspec) && !has_symlinks) -+ { -+ lt_debugprintf (__FILE__, __LINE__, -+ "checking path component for symlinks: %s\n", -+ tmp_pathspec); -+ if (lstat (tmp_pathspec, &s) == 0) -+ { -+ if (S_ISLNK (s.st_mode) != 0) -+ { -+ has_symlinks = 1; -+ break; -+ } -+ -+ /* search backwards for last DIR_SEPARATOR */ -+ p = tmp_pathspec + strlen (tmp_pathspec) - 1; -+ while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) -+ p--; -+ if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) -+ { -+ /* no more DIR_SEPARATORS left */ -+ break; -+ } -+ *p = '\0'; -+ } -+ else -+ { -+ lt_fatal (__FILE__, __LINE__, -+ "error accessing file \"%s\": %s", -+ tmp_pathspec, nonnull (strerror (errno))); -+ } -+ } -+ XFREE (tmp_pathspec); -+ -+ if (!has_symlinks) -+ { -+ return xstrdup (pathspec); -+ } -+ -+ tmp_pathspec = realpath (pathspec, buf); -+ if (tmp_pathspec == 0) -+ { -+ lt_fatal (__FILE__, __LINE__, -+ "could not follow symlinks for %s", pathspec); -+ } -+ return xstrdup (tmp_pathspec); -+#endif -+} -+ -+char * -+strendzap (char *str, const char *pat) -+{ -+ size_t len, patlen; -+ -+ assert (str != NULL); -+ assert (pat != NULL); -+ -+ len = strlen (str); -+ patlen = strlen (pat); -+ -+ if (patlen <= len) -+ { -+ str += len - patlen; -+ if (strcmp (str, pat) == 0) -+ *str = '\0'; -+ } -+ return str; -+} -+ -+void -+lt_debugprintf (const char *file, int line, const char *fmt, ...) -+{ -+ va_list args; -+ if (lt_debug) -+ { -+ (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); -+ va_start (args, fmt); -+ (void) vfprintf (stderr, fmt, args); -+ va_end (args); -+ } -+} -+ -+static void -+lt_error_core (int exit_status, const char *file, -+ int line, const char *mode, -+ const char *message, va_list ap) -+{ -+ fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); -+ vfprintf (stderr, message, ap); -+ fprintf (stderr, ".\n"); -+ -+ if (exit_status >= 0) -+ exit (exit_status); -+} -+ -+void -+lt_fatal (const char *file, int line, const char *message, ...) -+{ -+ va_list ap; -+ va_start (ap, message); -+ lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); -+ va_end (ap); -+} -+ -+static const char * -+nonnull (const char *s) -+{ -+ return s ? s : "(null)"; -+} -+ -+static const char * -+nonempty (const char *s) -+{ -+ return (s && !*s) ? "(empty)" : nonnull (s); -+} -+ -+void -+lt_setenv (const char *name, const char *value) -+{ -+ lt_debugprintf (__FILE__, __LINE__, -+ "(lt_setenv) setting '%s' to '%s'\n", -+ nonnull (name), nonnull (value)); -+ { -+#ifdef HAVE_SETENV -+ /* always make a copy, for consistency with !HAVE_SETENV */ -+ char *str = xstrdup (value); -+ setenv (name, str, 1); -+#else -+ int len = strlen (name) + 1 + strlen (value) + 1; -+ char *str = XMALLOC (char, len); -+ sprintf (str, "%s=%s", name, value); -+ if (putenv (str) != EXIT_SUCCESS) -+ { -+ XFREE (str); -+ } -+#endif -+ } -+} -+ -+char * -+lt_extend_str (const char *orig_value, const char *add, int to_end) -+{ -+ char *new_value; -+ if (orig_value && *orig_value) -+ { -+ int orig_value_len = strlen (orig_value); -+ int add_len = strlen (add); -+ new_value = XMALLOC (char, add_len + orig_value_len + 1); -+ if (to_end) -+ { -+ strcpy (new_value, orig_value); -+ strcpy (new_value + orig_value_len, add); -+ } -+ else -+ { -+ strcpy (new_value, add); -+ strcpy (new_value + add_len, orig_value); -+ } -+ } -+ else -+ { -+ new_value = xstrdup (add); -+ } -+ return new_value; -+} -+ -+void -+lt_update_exe_path (const char *name, const char *value) -+{ -+ lt_debugprintf (__FILE__, __LINE__, -+ "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", -+ nonnull (name), nonnull (value)); -+ -+ if (name && *name && value && *value) -+ { -+ char *new_value = lt_extend_str (getenv (name), value, 0); -+ /* some systems can't cope with a ':'-terminated path #' */ -+ int len = strlen (new_value); -+ while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) -+ { -+ new_value[len-1] = '\0'; -+ } -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ } -+} -+ -+void -+lt_update_lib_path (const char *name, const char *value) -+{ -+ lt_debugprintf (__FILE__, __LINE__, -+ "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", -+ nonnull (name), nonnull (value)); -+ -+ if (name && *name && value && *value) -+ { -+ char *new_value = lt_extend_str (getenv (name), value, 0); -+ lt_setenv (name, new_value); -+ XFREE (new_value); -+ } -+} -+ -+EOF -+ case $host_os in -+ mingw*) -+ cat <<"EOF" -+ -+/* Prepares an argument vector before calling spawn(). -+ Note that spawn() does not by itself call the command interpreter -+ (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : -+ ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); -+ GetVersionEx(&v); -+ v.dwPlatformId == VER_PLATFORM_WIN32_NT; -+ }) ? "cmd.exe" : "command.com"). -+ Instead it simply concatenates the arguments, separated by ' ', and calls -+ CreateProcess(). We must quote the arguments since Win32 CreateProcess() -+ interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a -+ special way: -+ - Space and tab are interpreted as delimiters. They are not treated as -+ delimiters if they are surrounded by double quotes: "...". -+ - Unescaped double quotes are removed from the input. Their only effect is -+ that within double quotes, space and tab are treated like normal -+ characters. -+ - Backslashes not followed by double quotes are not special. -+ - But 2*n+1 backslashes followed by a double quote become -+ n backslashes followed by a double quote (n >= 0): -+ \" -> " -+ \\\" -> \" -+ \\\\\" -> \\" -+ */ -+#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -+#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -+char ** -+prepare_spawn (char **argv) -+{ -+ size_t argc; -+ char **new_argv; -+ size_t i; -+ -+ /* Count number of arguments. */ -+ for (argc = 0; argv[argc] != NULL; argc++) -+ ; -+ -+ /* Allocate new argument vector. */ -+ new_argv = XMALLOC (char *, argc + 1); -+ -+ /* Put quoted arguments into the new argument vector. */ -+ for (i = 0; i < argc; i++) -+ { -+ const char *string = argv[i]; -+ -+ if (string[0] == '\0') -+ new_argv[i] = xstrdup ("\"\""); -+ else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) -+ { -+ int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); -+ size_t length; -+ unsigned int backslashes; -+ const char *s; -+ char *quoted_string; -+ char *p; -+ -+ length = 0; -+ backslashes = 0; -+ if (quote_around) -+ length++; -+ for (s = string; *s != '\0'; s++) -+ { -+ char c = *s; -+ if (c == '"') -+ length += backslashes + 1; -+ length++; -+ if (c == '\\') -+ backslashes++; -+ else -+ backslashes = 0; -+ } -+ if (quote_around) -+ length += backslashes + 1; -+ -+ quoted_string = XMALLOC (char, length + 1); -+ -+ p = quoted_string; -+ backslashes = 0; -+ if (quote_around) -+ *p++ = '"'; -+ for (s = string; *s != '\0'; s++) -+ { -+ char c = *s; -+ if (c == '"') -+ { -+ unsigned int j; -+ for (j = backslashes + 1; j > 0; j--) -+ *p++ = '\\'; -+ } -+ *p++ = c; -+ if (c == '\\') -+ backslashes++; -+ else -+ backslashes = 0; -+ } -+ if (quote_around) -+ { -+ unsigned int j; -+ for (j = backslashes; j > 0; j--) -+ *p++ = '\\'; -+ *p++ = '"'; -+ } -+ *p = '\0'; -+ -+ new_argv[i] = quoted_string; -+ } -+ else -+ new_argv[i] = (char *) string; -+ } -+ new_argv[argc] = NULL; -+ -+ return new_argv; -+} -+EOF -+ ;; -+ esac -+ -+ cat <<"EOF" -+void lt_dump_script (FILE* f) -+{ -+EOF -+ func_emit_wrapper yes | -+ $SED -n -e ' -+s/^\(.\{79\}\)\(..*\)/\1\ -+\2/ -+h -+s/\([\\"]\)/\\\1/g -+s/$/\\n/ -+s/\([^\n]*\).*/ fputs ("\1", f);/p -+g -+D' -+ cat <<"EOF" -+} -+EOF -+} -+# end: func_emit_cwrapperexe_src -+ -+# func_win32_import_lib_p ARG -+# True if ARG is an import lib, as indicated by $file_magic_cmd -+func_win32_import_lib_p () -+{ -+ $opt_debug -+ case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in -+ *import*) : ;; -+ *) false ;; -+ esac -+} -+ -+# func_mode_link arg... -+func_mode_link () -+{ -+ $opt_debug -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -+ # It is impossible to link a dll without this setting, and -+ # we shouldn't force the makefile maintainer to figure out -+ # which system we are compiling for in order to pass an extra -+ # flag for every libtool invocation. -+ # allow_undefined=no -+ -+ # FIXME: Unfortunately, there are problems with the above when trying -+ # to make a dll which has undefined symbols, in which case not -+ # even a static library is built. For now, we need to specify -+ # -no-undefined on the libtool link line when we can be certain -+ # that all symbols are satisfied, otherwise we get a static library. -+ allow_undefined=yes -+ ;; -+ *) -+ allow_undefined=yes -+ ;; -+ esac -+ libtool_args=$nonopt -+ base_compile="$nonopt $@" -+ compile_command=$nonopt -+ finalize_command=$nonopt -+ -+ compile_rpath= -+ finalize_rpath= -+ compile_shlibpath= -+ finalize_shlibpath= -+ convenience= -+ old_convenience= -+ deplibs= -+ old_deplibs= -+ compiler_flags= -+ linker_flags= -+ dllsearchpath= -+ lib_search_path=`pwd` -+ inst_prefix_dir= -+ new_inherited_linker_flags= -+ -+ avoid_version=no -+ bindir= -+ dlfiles= -+ dlprefiles= -+ dlself=no -+ export_dynamic=no -+ export_symbols= -+ export_symbols_regex= -+ generated= -+ libobjs= -+ ltlibs= -+ module=no -+ no_install=no -+ objs= -+ non_pic_objects= -+ precious_files_regex= -+ prefer_static_libs=no -+ preload=no -+ prev= -+ prevarg= -+ release= -+ rpath= -+ xrpath= -+ perm_rpath= -+ temp_rpath= -+ thread_safe=no -+ vinfo= -+ vinfo_number=no -+ weak_libs= -+ single_module="${wl}-single_module" -+ func_infer_tag $base_compile -+ -+ # We need to know -static, to get the right output filenames. -+ for arg -+ do -+ case $arg in -+ -shared) -+ test "$build_libtool_libs" != yes && \ -+ func_fatal_configuration "can not build a shared library" -+ build_old_libs=no -+ break -+ ;; -+ -all-static | -static | -static-libtool-libs) -+ case $arg in -+ -all-static) -+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then -+ func_warning "complete static linking is impossible in this configuration" -+ fi -+ if test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=yes -+ ;; -+ -static) -+ if test -z "$pic_flag" && test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=built -+ ;; -+ -static-libtool-libs) -+ if test -z "$pic_flag" && test -n "$link_static_flag"; then -+ dlopen_self=$dlopen_self_static -+ fi -+ prefer_static_libs=yes -+ ;; -+ esac -+ build_libtool_libs=no -+ build_old_libs=yes -+ break -+ ;; -+ esac -+ done -+ -+ # See if our shared archives depend on static archives. -+ test -n "$old_archive_from_new_cmds" && build_old_libs=yes -+ -+ # Go through the arguments, transforming them on the way. -+ while test "$#" -gt 0; do -+ arg="$1" -+ shift -+ func_quote_for_eval "$arg" -+ qarg=$func_quote_for_eval_unquoted_result -+ func_append libtool_args " $func_quote_for_eval_result" -+ -+ # If the previous option needs an argument, assign it. -+ if test -n "$prev"; then -+ case $prev in -+ output) -+ func_append compile_command " @OUTPUT@" -+ func_append finalize_command " @OUTPUT@" -+ ;; -+ esac -+ -+ case $prev in -+ bindir) -+ bindir="$arg" -+ prev= -+ continue -+ ;; -+ dlfiles|dlprefiles) -+ if test "$preload" = no; then -+ # Add the symbol object into the linking commands. -+ func_append compile_command " @SYMFILE@" -+ func_append finalize_command " @SYMFILE@" -+ preload=yes -+ fi -+ case $arg in -+ *.la | *.lo) ;; # We handle these cases below. -+ force) -+ if test "$dlself" = no; then -+ dlself=needless -+ export_dynamic=yes -+ fi -+ prev= -+ continue -+ ;; -+ self) -+ if test "$prev" = dlprefiles; then -+ dlself=yes -+ elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then -+ dlself=yes -+ else -+ dlself=needless -+ export_dynamic=yes -+ fi -+ prev= -+ continue -+ ;; -+ *) -+ if test "$prev" = dlfiles; then -+ func_append dlfiles " $arg" -+ else -+ func_append dlprefiles " $arg" -+ fi -+ prev= -+ continue -+ ;; -+ esac -+ ;; -+ expsyms) -+ export_symbols="$arg" -+ test -f "$arg" \ -+ || func_fatal_error "symbol file \`$arg' does not exist" -+ prev= -+ continue -+ ;; -+ expsyms_regex) -+ export_symbols_regex="$arg" -+ prev= -+ continue -+ ;; -+ framework) -+ case $host in -+ *-*-darwin*) -+ case "$deplibs " in -+ *" $qarg.ltframework "*) ;; -+ *) func_append deplibs " $qarg.ltframework" # this is fixed later -+ ;; -+ esac -+ ;; -+ esac -+ prev= -+ continue -+ ;; -+ inst_prefix) -+ inst_prefix_dir="$arg" -+ prev= -+ continue -+ ;; -+ objectlist) -+ if test -f "$arg"; then -+ save_arg=$arg -+ moreargs= -+ for fil in `cat "$save_arg"` -+ do -+# func_append moreargs " $fil" -+ arg=$fil -+ # A libtool-controlled object. -+ -+ # Check to see that this really is a libtool object. -+ if func_lalib_unsafe_p "$arg"; then -+ pic_object= -+ non_pic_object= -+ -+ # Read the .lo file -+ func_source "$arg" -+ -+ if test -z "$pic_object" || -+ test -z "$non_pic_object" || -+ test "$pic_object" = none && -+ test "$non_pic_object" = none; then -+ func_fatal_error "cannot find name of object for \`$arg'" -+ fi -+ -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ if test "$pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ pic_object="$xdir$pic_object" -+ -+ if test "$prev" = dlfiles; then -+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -+ func_append dlfiles " $pic_object" -+ prev= -+ continue -+ else -+ # If libtool objects are unsupported, then we need to preload. -+ prev=dlprefiles -+ fi -+ fi -+ -+ # CHECK ME: I think I busted this. -Ossama -+ if test "$prev" = dlprefiles; then -+ # Preload the old-style object. -+ func_append dlprefiles " $pic_object" -+ prev= -+ fi -+ -+ # A PIC object. -+ func_append libobjs " $pic_object" -+ arg="$pic_object" -+ fi -+ -+ # Non-PIC object. -+ if test "$non_pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ non_pic_object="$xdir$non_pic_object" -+ -+ # A standard non-PIC object -+ func_append non_pic_objects " $non_pic_object" -+ if test -z "$pic_object" || test "$pic_object" = none ; then -+ arg="$non_pic_object" -+ fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ fi -+ else -+ # Only an error if not doing a dry-run. -+ if $opt_dry_run; then -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ func_lo2o "$arg" -+ pic_object=$xdir$objdir/$func_lo2o_result -+ non_pic_object=$xdir$func_lo2o_result -+ func_append libobjs " $pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ else -+ func_fatal_error "\`$arg' is not a valid libtool object" -+ fi -+ fi -+ done -+ else -+ func_fatal_error "link input file \`$arg' does not exist" -+ fi -+ arg=$save_arg -+ prev= -+ continue -+ ;; -+ precious_regex) -+ precious_files_regex="$arg" -+ prev= -+ continue -+ ;; -+ release) -+ release="-$arg" -+ prev= -+ continue -+ ;; -+ rpath | xrpath) -+ # We need an absolute path. -+ case $arg in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ func_fatal_error "only absolute run-paths are allowed" -+ ;; -+ esac -+ if test "$prev" = rpath; then -+ case "$rpath " in -+ *" $arg "*) ;; -+ *) func_append rpath " $arg" ;; -+ esac -+ else -+ case "$xrpath " in -+ *" $arg "*) ;; -+ *) func_append xrpath " $arg" ;; -+ esac -+ fi -+ prev= -+ continue -+ ;; -+ shrext) -+ shrext_cmds="$arg" -+ prev= -+ continue -+ ;; -+ weak) -+ func_append weak_libs " $arg" -+ prev= -+ continue -+ ;; -+ xcclinker) -+ func_append linker_flags " $qarg" -+ func_append compiler_flags " $qarg" -+ prev= -+ func_append compile_command " $qarg" -+ func_append finalize_command " $qarg" -+ continue -+ ;; -+ xcompiler) -+ func_append compiler_flags " $qarg" -+ prev= -+ func_append compile_command " $qarg" -+ func_append finalize_command " $qarg" -+ continue -+ ;; -+ xlinker) -+ func_append linker_flags " $qarg" -+ func_append compiler_flags " $wl$qarg" -+ prev= -+ func_append compile_command " $wl$qarg" -+ func_append finalize_command " $wl$qarg" -+ continue -+ ;; -+ *) -+ eval "$prev=\"\$arg\"" -+ prev= -+ continue -+ ;; -+ esac -+ fi # test -n "$prev" -+ -+ prevarg="$arg" -+ -+ case $arg in -+ -all-static) -+ if test -n "$link_static_flag"; then -+ # See comment for -static flag below, for more details. -+ func_append compile_command " $link_static_flag" -+ func_append finalize_command " $link_static_flag" -+ fi -+ continue -+ ;; -+ -+ -allow-undefined) -+ # FIXME: remove this flag sometime in the future. -+ func_fatal_error "\`-allow-undefined' must not be used because it is the default" -+ ;; -+ -+ -avoid-version) -+ avoid_version=yes -+ continue -+ ;; -+ -+ -bindir) -+ prev=bindir -+ continue -+ ;; -+ -+ -dlopen) -+ prev=dlfiles -+ continue -+ ;; -+ -+ -dlpreopen) -+ prev=dlprefiles -+ continue -+ ;; -+ -+ -export-dynamic) -+ export_dynamic=yes -+ continue -+ ;; -+ -+ -export-symbols | -export-symbols-regex) -+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then -+ func_fatal_error "more than one -exported-symbols argument is not allowed" -+ fi -+ if test "X$arg" = "X-export-symbols"; then -+ prev=expsyms -+ else -+ prev=expsyms_regex -+ fi -+ continue -+ ;; -+ -+ -framework) -+ prev=framework -+ continue -+ ;; -+ -+ -inst-prefix-dir) -+ prev=inst_prefix -+ continue -+ ;; -+ -+ # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* -+ # so, if we see these flags be careful not to treat them like -L -+ -L[A-Z][A-Z]*:*) -+ case $with_gcc/$host in -+ no/*-*-irix* | /*-*-irix*) -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ ;; -+ esac -+ continue -+ ;; -+ -+ -L*) -+ func_stripname "-L" '' "$arg" -+ if test -z "$func_stripname_result"; then -+ if test "$#" -gt 0; then -+ func_fatal_error "require no space between \`-L' and \`$1'" -+ else -+ func_fatal_error "need path for \`-L' option" -+ fi -+ fi -+ func_resolve_sysroot "$func_stripname_result" -+ dir=$func_resolve_sysroot_result -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ *) -+ absdir=`cd "$dir" && pwd` -+ test -z "$absdir" && \ -+ func_fatal_error "cannot determine absolute directory name of \`$dir'" -+ dir="$absdir" -+ ;; -+ esac -+ case "$deplibs " in -+ *" -L$dir "* | *" $arg "*) -+ # Will only happen for absolute or sysroot arguments -+ ;; -+ *) -+ # Preserve sysroot, but never include relative directories -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; -+ *) func_append deplibs " -L$dir" ;; -+ esac -+ func_append lib_search_path " $dir" -+ ;; -+ esac -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -+ testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` -+ case :$dllsearchpath: in -+ *":$dir:"*) ;; -+ ::) dllsearchpath=$dir;; -+ *) func_append dllsearchpath ":$dir";; -+ esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ ::) dllsearchpath=$testbindir;; -+ *) func_append dllsearchpath ":$testbindir";; -+ esac -+ ;; -+ esac -+ continue -+ ;; -+ -+ -l*) -+ if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) -+ # These systems don't actually have a C or math library (as such) -+ continue -+ ;; -+ *-*-os2*) -+ # These systems don't actually have a C library (as such) -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc due to us having libc/libc_r. -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C and math libraries are in the System framework -+ func_append deplibs " System.ltframework" -+ continue -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ test "X$arg" = "X-lc" && continue -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work -+ test "X$arg" = "X-lc" && continue -+ ;; -+ esac -+ elif test "X$arg" = "X-lc_r"; then -+ case $host in -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc_r directly, use -pthread flag. -+ continue -+ ;; -+ esac -+ fi -+ func_append deplibs " $arg" -+ continue -+ ;; -+ -+ -module) -+ module=yes -+ continue -+ ;; -+ -+ # Tru64 UNIX uses -model [arg] to determine the layout of C++ -+ # classes, name mangling, and exception handling. -+ # Darwin uses the -arch flag to determine output architecture. -+ -model|-arch|-isysroot|--sysroot) -+ func_append compiler_flags " $arg" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ prev=xcompiler -+ continue -+ ;; -+ -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ -+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) -+ func_append compiler_flags " $arg" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ case "$new_inherited_linker_flags " in -+ *" $arg "*) ;; -+ * ) func_append new_inherited_linker_flags " $arg" ;; -+ esac -+ continue -+ ;; -+ -+ -multi_module) -+ single_module="${wl}-multi_module" -+ continue -+ ;; -+ -+ -no-fast-install) -+ fast_install=no -+ continue -+ ;; -+ -+ -no-install) -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) -+ # The PATH hackery in wrapper scripts is required on Windows -+ # and Darwin in order for the loader to find any dlls it needs. -+ func_warning "\`-no-install' is ignored for $host" -+ func_warning "assuming \`-no-fast-install' instead" -+ fast_install=no -+ ;; -+ *) no_install=yes ;; -+ esac -+ continue -+ ;; -+ -+ -no-undefined) -+ allow_undefined=no -+ continue -+ ;; -+ -+ -objectlist) -+ prev=objectlist -+ continue -+ ;; -+ -+ -o) prev=output ;; -+ -+ -precious-files-regex) -+ prev=precious_regex -+ continue -+ ;; -+ -+ -release) -+ prev=release -+ continue -+ ;; -+ -+ -rpath) -+ prev=rpath -+ continue -+ ;; -+ -+ -R) -+ prev=xrpath -+ continue -+ ;; -+ -+ -R*) -+ func_stripname '-R' '' "$arg" -+ dir=$func_stripname_result -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) ;; -+ =*) -+ func_stripname '=' '' "$dir" -+ dir=$lt_sysroot$func_stripname_result -+ ;; -+ *) -+ func_fatal_error "only absolute run-paths are allowed" -+ ;; -+ esac -+ case "$xrpath " in -+ *" $dir "*) ;; -+ *) func_append xrpath " $dir" ;; -+ esac -+ continue -+ ;; -+ -+ -shared) -+ # The effects of -shared are defined in a previous loop. -+ continue -+ ;; -+ -+ -shrext) -+ prev=shrext -+ continue -+ ;; -+ -+ -static | -static-libtool-libs) -+ # The effects of -static are defined in a previous loop. -+ # We used to do the same as -all-static on platforms that -+ # didn't have a PIC flag, but the assumption that the effects -+ # would be equivalent was wrong. It would break on at least -+ # Digital Unix and AIX. -+ continue -+ ;; -+ -+ -thread-safe) -+ thread_safe=yes -+ continue -+ ;; -+ -+ -version-info) -+ prev=vinfo -+ continue -+ ;; -+ -+ -version-number) -+ prev=vinfo -+ vinfo_number=yes -+ continue -+ ;; -+ -+ -weak) -+ prev=weak -+ continue -+ ;; -+ -+ -Wc,*) -+ func_stripname '-Wc,' '' "$arg" -+ args=$func_stripname_result -+ arg= -+ save_ifs="$IFS"; IFS=',' -+ for flag in $args; do -+ IFS="$save_ifs" -+ func_quote_for_eval "$flag" -+ func_append arg " $func_quote_for_eval_result" -+ func_append compiler_flags " $func_quote_for_eval_result" -+ done -+ IFS="$save_ifs" -+ func_stripname ' ' '' "$arg" -+ arg=$func_stripname_result -+ ;; -+ -+ -Wl,*) -+ func_stripname '-Wl,' '' "$arg" -+ args=$func_stripname_result -+ arg= -+ save_ifs="$IFS"; IFS=',' -+ for flag in $args; do -+ IFS="$save_ifs" -+ func_quote_for_eval "$flag" -+ func_append arg " $wl$func_quote_for_eval_result" -+ func_append compiler_flags " $wl$func_quote_for_eval_result" -+ func_append linker_flags " $func_quote_for_eval_result" -+ done -+ IFS="$save_ifs" -+ func_stripname ' ' '' "$arg" -+ arg=$func_stripname_result -+ ;; -+ -+ -Xcompiler) -+ prev=xcompiler -+ continue -+ ;; -+ -+ -Xlinker) -+ prev=xlinker -+ continue -+ ;; -+ -+ -XCClinker) -+ prev=xcclinker -+ continue -+ ;; -+ -+ # -msg_* for osf cc -+ -msg_*) -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ ;; -+ -+ # Flags to be passed through unchanged, with rationale: -+ # -64, -mips[0-9] enable 64-bit mode for the SGI compiler -+ # -r[0-9][0-9]* specify processor for the SGI compiler -+ # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler -+ # +DA*, +DD* enable 64-bit mode for the HP compiler -+ # -q* compiler args for the IBM compiler -+ # -m*, -t[45]*, -txscale* architecture-specific flags for GCC -+ # -F/path path to uninstalled frameworks, gcc on darwin -+ # -p, -pg, --coverage, -fprofile-* profiling flags for GCC -+ # @file GCC response files -+ # -tp=* Portland pgcc target processor selection -+ # --sysroot=* for sysroot support -+ # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization -+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ -+ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ -+ -O*|-flto*|-fwhopr*|-fuse-linker-plugin) -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ func_append compiler_flags " $arg" -+ continue -+ ;; -+ -+ # Some other compiler flag. -+ -* | +*) -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ ;; -+ -+ *.$objext) -+ # A standard object. -+ func_append objs " $arg" -+ ;; -+ -+ *.lo) -+ # A libtool-controlled object. -+ -+ # Check to see that this really is a libtool object. -+ if func_lalib_unsafe_p "$arg"; then -+ pic_object= -+ non_pic_object= -+ -+ # Read the .lo file -+ func_source "$arg" -+ -+ if test -z "$pic_object" || -+ test -z "$non_pic_object" || -+ test "$pic_object" = none && -+ test "$non_pic_object" = none; then -+ func_fatal_error "cannot find name of object for \`$arg'" -+ fi -+ -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ if test "$pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ pic_object="$xdir$pic_object" -+ -+ if test "$prev" = dlfiles; then -+ if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then -+ func_append dlfiles " $pic_object" -+ prev= -+ continue -+ else -+ # If libtool objects are unsupported, then we need to preload. -+ prev=dlprefiles -+ fi -+ fi -+ -+ # CHECK ME: I think I busted this. -Ossama -+ if test "$prev" = dlprefiles; then -+ # Preload the old-style object. -+ func_append dlprefiles " $pic_object" -+ prev= -+ fi -+ -+ # A PIC object. -+ func_append libobjs " $pic_object" -+ arg="$pic_object" -+ fi -+ -+ # Non-PIC object. -+ if test "$non_pic_object" != none; then -+ # Prepend the subdirectory the object is found in. -+ non_pic_object="$xdir$non_pic_object" -+ -+ # A standard non-PIC object -+ func_append non_pic_objects " $non_pic_object" -+ if test -z "$pic_object" || test "$pic_object" = none ; then -+ arg="$non_pic_object" -+ fi -+ else -+ # If the PIC object exists, use it instead. -+ # $xdir was prepended to $pic_object above. -+ non_pic_object="$pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ fi -+ else -+ # Only an error if not doing a dry-run. -+ if $opt_dry_run; then -+ # Extract subdirectory from the argument. -+ func_dirname "$arg" "/" "" -+ xdir="$func_dirname_result" -+ -+ func_lo2o "$arg" -+ pic_object=$xdir$objdir/$func_lo2o_result -+ non_pic_object=$xdir$func_lo2o_result -+ func_append libobjs " $pic_object" -+ func_append non_pic_objects " $non_pic_object" -+ else -+ func_fatal_error "\`$arg' is not a valid libtool object" -+ fi -+ fi -+ ;; -+ -+ *.$libext) -+ # An archive. -+ func_append deplibs " $arg" -+ func_append old_deplibs " $arg" -+ continue -+ ;; -+ -+ *.la) -+ # A libtool-controlled library. -+ -+ func_resolve_sysroot "$arg" -+ if test "$prev" = dlfiles; then -+ # This library was specified with -dlopen. -+ func_append dlfiles " $func_resolve_sysroot_result" -+ prev= -+ elif test "$prev" = dlprefiles; then -+ # The library was specified with -dlpreopen. -+ func_append dlprefiles " $func_resolve_sysroot_result" -+ prev= -+ else -+ func_append deplibs " $func_resolve_sysroot_result" -+ fi -+ continue -+ ;; -+ -+ # Some other compiler argument. -+ *) -+ # Unknown arguments in both finalize_command and compile_command need -+ # to be aesthetically quoted because they are evaled later. -+ func_quote_for_eval "$arg" -+ arg="$func_quote_for_eval_result" -+ ;; -+ esac # arg -+ -+ # Now actually substitute the argument into the commands. -+ if test -n "$arg"; then -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ fi -+ done # argument parsing loop -+ -+ test -n "$prev" && \ -+ func_fatal_help "the \`$prevarg' option requires an argument" -+ -+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then -+ eval arg=\"$export_dynamic_flag_spec\" -+ func_append compile_command " $arg" -+ func_append finalize_command " $arg" -+ fi -+ -+ oldlibs= -+ # calculate the name of the file, without its directory -+ func_basename "$output" -+ outputname="$func_basename_result" -+ libobjs_save="$libobjs" -+ -+ if test -n "$shlibpath_var"; then -+ # get the directories listed in $shlibpath_var -+ eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` -+ else -+ shlib_search_path= -+ fi -+ eval sys_lib_search_path=\"$sys_lib_search_path_spec\" -+ eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" -+ -+ func_dirname "$output" "/" "" -+ output_objdir="$func_dirname_result$objdir" -+ func_to_tool_file "$output_objdir/" -+ tool_output_objdir=$func_to_tool_file_result -+ # Create the object directory. -+ func_mkdir_p "$output_objdir" -+ -+ # Determine the type of output -+ case $output in -+ "") -+ func_fatal_help "you must specify an output file" -+ ;; -+ *.$libext) linkmode=oldlib ;; -+ *.lo | *.$objext) linkmode=obj ;; -+ *.la) linkmode=lib ;; -+ *) linkmode=prog ;; # Anything else should be a program. -+ esac -+ -+ specialdeplibs= -+ -+ libs= -+ # Find all interdependent deplibs by searching for libraries -+ # that are linked more than once (e.g. -la -lb -la) -+ for deplib in $deplibs; do -+ if $opt_preserve_dup_deps ; then -+ case "$libs " in -+ *" $deplib "*) func_append specialdeplibs " $deplib" ;; -+ esac -+ fi -+ func_append libs " $deplib" -+ done -+ -+ if test "$linkmode" = lib; then -+ libs="$predeps $libs $compiler_lib_search_path $postdeps" -+ -+ # Compute libraries that are listed more than once in $predeps -+ # $postdeps and mark them as special (i.e., whose duplicates are -+ # not to be eliminated). -+ pre_post_deps= -+ if $opt_duplicate_compiler_generated_deps; then -+ for pre_post_dep in $predeps $postdeps; do -+ case "$pre_post_deps " in -+ *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; -+ esac -+ func_append pre_post_deps " $pre_post_dep" -+ done -+ fi -+ pre_post_deps= -+ fi -+ -+ deplibs= -+ newdependency_libs= -+ newlib_search_path= -+ need_relink=no # whether we're linking any uninstalled libtool libraries -+ notinst_deplibs= # not-installed libtool libraries -+ notinst_path= # paths that contain not-installed libtool libraries -+ -+ case $linkmode in -+ lib) -+ passes="conv dlpreopen link" -+ for file in $dlfiles $dlprefiles; do -+ case $file in -+ *.la) ;; -+ *) -+ func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" -+ ;; -+ esac -+ done -+ ;; -+ prog) -+ compile_deplibs= -+ finalize_deplibs= -+ alldeplibs=no -+ newdlfiles= -+ newdlprefiles= -+ passes="conv scan dlopen dlpreopen link" -+ ;; -+ *) passes="conv" -+ ;; -+ esac -+ -+ for pass in $passes; do -+ # The preopen pass in lib mode reverses $deplibs; put it back here -+ # so that -L comes before libs that need it for instance... -+ if test "$linkmode,$pass" = "lib,link"; then -+ ## FIXME: Find the place where the list is rebuilt in the wrong -+ ## order, and fix it there properly -+ tmp_deplibs= -+ for deplib in $deplibs; do -+ tmp_deplibs="$deplib $tmp_deplibs" -+ done -+ deplibs="$tmp_deplibs" -+ fi -+ -+ if test "$linkmode,$pass" = "lib,link" || -+ test "$linkmode,$pass" = "prog,scan"; then -+ libs="$deplibs" -+ deplibs= -+ fi -+ if test "$linkmode" = prog; then -+ case $pass in -+ dlopen) libs="$dlfiles" ;; -+ dlpreopen) libs="$dlprefiles" ;; -+ link) -+ libs="$deplibs %DEPLIBS%" -+ test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" -+ ;; -+ esac -+ fi -+ if test "$linkmode,$pass" = "lib,dlpreopen"; then -+ # Collect and forward deplibs of preopened libtool libs -+ for lib in $dlprefiles; do -+ # Ignore non-libtool-libs -+ dependency_libs= -+ func_resolve_sysroot "$lib" -+ case $lib in -+ *.la) func_source "$func_resolve_sysroot_result" ;; -+ esac -+ -+ # Collect preopened libtool deplibs, except any this library -+ # has declared as weak libs -+ for deplib in $dependency_libs; do -+ func_basename "$deplib" -+ deplib_base=$func_basename_result -+ case " $weak_libs " in -+ *" $deplib_base "*) ;; -+ *) func_append deplibs " $deplib" ;; -+ esac -+ done -+ done -+ libs="$dlprefiles" -+ fi -+ if test "$pass" = dlopen; then -+ # Collect dlpreopened libraries -+ save_deplibs="$deplibs" -+ deplibs= -+ fi -+ -+ for deplib in $libs; do -+ lib= -+ found=no -+ case $deplib in -+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ -+ |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ func_append compiler_flags " $deplib" -+ if test "$linkmode" = lib ; then -+ case "$new_inherited_linker_flags " in -+ *" $deplib "*) ;; -+ * ) func_append new_inherited_linker_flags " $deplib" ;; -+ esac -+ fi -+ fi -+ continue -+ ;; -+ -l*) -+ if test "$linkmode" != lib && test "$linkmode" != prog; then -+ func_warning "\`-l' is ignored for archives/objects" -+ continue -+ fi -+ func_stripname '-l' '' "$deplib" -+ name=$func_stripname_result -+ if test "$linkmode" = lib; then -+ searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" -+ else -+ searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" -+ fi -+ for searchdir in $searchdirs; do -+ for search_ext in .la $std_shrext .so .a; do -+ # Search the libtool library -+ lib="$searchdir/lib${name}${search_ext}" -+ if test -f "$lib"; then -+ if test "$search_ext" = ".la"; then -+ found=yes -+ else -+ found=no -+ fi -+ break 2 -+ fi -+ done -+ done -+ if test "$found" != yes; then -+ # deplib doesn't seem to be a libtool library -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" -+ fi -+ continue -+ else # deplib is a libtool library -+ # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, -+ # We need to do some special things here, and not later. -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $deplib "*) -+ if func_lalib_p "$lib"; then -+ library_names= -+ old_library= -+ func_source "$lib" -+ for l in $old_library $library_names; do -+ ll="$l" -+ done -+ if test "X$ll" = "X$old_library" ; then # only static version available -+ found=no -+ func_dirname "$lib" "" "." -+ ladir="$func_dirname_result" -+ lib=$ladir/$old_library -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" -+ fi -+ continue -+ fi -+ fi -+ ;; -+ *) ;; -+ esac -+ fi -+ fi -+ ;; # -l -+ *.ltframework) -+ if test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ deplibs="$deplib $deplibs" -+ if test "$linkmode" = lib ; then -+ case "$new_inherited_linker_flags " in -+ *" $deplib "*) ;; -+ * ) func_append new_inherited_linker_flags " $deplib" ;; -+ esac -+ fi -+ fi -+ continue -+ ;; -+ -L*) -+ case $linkmode in -+ lib) -+ deplibs="$deplib $deplibs" -+ test "$pass" = conv && continue -+ newdependency_libs="$deplib $newdependency_libs" -+ func_stripname '-L' '' "$deplib" -+ func_resolve_sysroot "$func_stripname_result" -+ func_append newlib_search_path " $func_resolve_sysroot_result" -+ ;; -+ prog) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ continue -+ fi -+ if test "$pass" = scan; then -+ deplibs="$deplib $deplibs" -+ else -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ fi -+ func_stripname '-L' '' "$deplib" -+ func_resolve_sysroot "$func_stripname_result" -+ func_append newlib_search_path " $func_resolve_sysroot_result" -+ ;; -+ *) -+ func_warning "\`-L' is ignored for archives/objects" -+ ;; -+ esac # linkmode -+ continue -+ ;; # -L -+ -R*) -+ if test "$pass" = link; then -+ func_stripname '-R' '' "$deplib" -+ func_resolve_sysroot "$func_stripname_result" -+ dir=$func_resolve_sysroot_result -+ # Make sure the xrpath contains only unique directories. -+ case "$xrpath " in -+ *" $dir "*) ;; -+ *) func_append xrpath " $dir" ;; -+ esac -+ fi -+ deplibs="$deplib $deplibs" -+ continue -+ ;; -+ *.la) -+ func_resolve_sysroot "$deplib" -+ lib=$func_resolve_sysroot_result -+ ;; -+ *.$libext) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ continue -+ fi -+ case $linkmode in -+ lib) -+ # Linking convenience modules into shared libraries is allowed, -+ # but linking other static libraries is non-portable. -+ case " $dlpreconveniencelibs " in -+ *" $deplib "*) ;; -+ *) -+ valid_a_lib=no -+ case $deplibs_check_method in -+ match_pattern*) -+ set dummy $deplibs_check_method; shift -+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` -+ if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ -+ | $EGREP "$match_pattern_regex" > /dev/null; then -+ valid_a_lib=yes -+ fi -+ ;; -+ pass_all) -+ valid_a_lib=yes -+ ;; -+ esac -+ if test "$valid_a_lib" != yes; then -+ echo -+ $ECHO "*** Warning: Trying to link with static lib archive $deplib." -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which you do not appear to have" -+ echo "*** because the file extensions .$libext of this argument makes me believe" -+ echo "*** that it is just a static archive that I should not use here." -+ else -+ echo -+ $ECHO "*** Warning: Linking the shared library $output against the" -+ $ECHO "*** static library $deplib is not portable!" -+ deplibs="$deplib $deplibs" -+ fi -+ ;; -+ esac -+ continue -+ ;; -+ prog) -+ if test "$pass" != link; then -+ deplibs="$deplib $deplibs" -+ else -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ fi -+ continue -+ ;; -+ esac # linkmode -+ ;; # *.$libext -+ *.lo | *.$objext) -+ if test "$pass" = conv; then -+ deplibs="$deplib $deplibs" -+ elif test "$linkmode" = prog; then -+ if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then -+ # If there is no dlopen support or we're linking statically, -+ # we need to preload. -+ func_append newdlprefiles " $deplib" -+ compile_deplibs="$deplib $compile_deplibs" -+ finalize_deplibs="$deplib $finalize_deplibs" -+ else -+ func_append newdlfiles " $deplib" -+ fi -+ fi -+ continue -+ ;; -+ %DEPLIBS%) -+ alldeplibs=yes -+ continue -+ ;; -+ esac # case $deplib -+ -+ if test "$found" = yes || test -f "$lib"; then : -+ else -+ func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" -+ fi -+ -+ # Check to see that this really is a libtool archive. -+ func_lalib_unsafe_p "$lib" \ -+ || func_fatal_error "\`$lib' is not a valid libtool archive" -+ -+ func_dirname "$lib" "" "." -+ ladir="$func_dirname_result" -+ -+ dlname= -+ dlopen= -+ dlpreopen= -+ libdir= -+ library_names= -+ old_library= -+ inherited_linker_flags= -+ # If the library was installed with an old release of libtool, -+ # it will not redefine variables installed, or shouldnotlink -+ installed=yes -+ shouldnotlink=no -+ avoidtemprpath= -+ -+ -+ # Read the .la file -+ func_source "$lib" -+ -+ # Convert "-framework foo" to "foo.ltframework" -+ if test -n "$inherited_linker_flags"; then -+ tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` -+ for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do -+ case " $new_inherited_linker_flags " in -+ *" $tmp_inherited_linker_flag "*) ;; -+ *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; -+ esac -+ done -+ fi -+ dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ if test "$linkmode,$pass" = "lib,link" || -+ test "$linkmode,$pass" = "prog,scan" || -+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then -+ test -n "$dlopen" && func_append dlfiles " $dlopen" -+ test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" -+ fi -+ -+ if test "$pass" = conv; then -+ # Only check for convenience libraries -+ deplibs="$lib $deplibs" -+ if test -z "$libdir"; then -+ if test -z "$old_library"; then -+ func_fatal_error "cannot find name of link library for \`$lib'" -+ fi -+ # It is a libtool convenience library, so add in its objects. -+ func_append convenience " $ladir/$objdir/$old_library" -+ func_append old_convenience " $ladir/$objdir/$old_library" -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ deplibs="$deplib $deplibs" -+ if $opt_preserve_dup_deps ; then -+ case "$tmp_libs " in -+ *" $deplib "*) func_append specialdeplibs " $deplib" ;; -+ esac -+ fi -+ func_append tmp_libs " $deplib" -+ done -+ elif test "$linkmode" != prog && test "$linkmode" != lib; then -+ func_fatal_error "\`$lib' is not a convenience library" -+ fi -+ continue -+ fi # $pass = conv -+ -+ -+ # Get the name of the library we link against. -+ linklib= -+ if test -n "$old_library" && -+ { test "$prefer_static_libs" = yes || -+ test "$prefer_static_libs,$installed" = "built,no"; }; then -+ linklib=$old_library -+ else -+ for l in $old_library $library_names; do -+ linklib="$l" -+ done -+ fi -+ if test -z "$linklib"; then -+ func_fatal_error "cannot find name of link library for \`$lib'" -+ fi -+ -+ # This library was specified with -dlopen. -+ if test "$pass" = dlopen; then -+ if test -z "$libdir"; then -+ func_fatal_error "cannot -dlopen a convenience library: \`$lib'" -+ fi -+ if test -z "$dlname" || -+ test "$dlopen_support" != yes || -+ test "$build_libtool_libs" = no; then -+ # If there is no dlname, no dlopen support or we're linking -+ # statically, we need to preload. We also need to preload any -+ # dependent libraries so libltdl's deplib preloader doesn't -+ # bomb out in the load deplibs phase. -+ func_append dlprefiles " $lib $dependency_libs" -+ else -+ func_append newdlfiles " $lib" -+ fi -+ continue -+ fi # $pass = dlopen -+ -+ # We need an absolute path. -+ case $ladir in -+ [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; -+ *) -+ abs_ladir=`cd "$ladir" && pwd` -+ if test -z "$abs_ladir"; then -+ func_warning "cannot determine absolute directory name of \`$ladir'" -+ func_warning "passing it literally to the linker, although it might fail" -+ abs_ladir="$ladir" -+ fi -+ ;; -+ esac -+ func_basename "$lib" -+ laname="$func_basename_result" -+ -+ # Find the relevant object directory and library name. -+ if test "X$installed" = Xyes; then -+ if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ func_warning "library \`$lib' was moved." -+ dir="$ladir" -+ absdir="$abs_ladir" -+ libdir="$abs_ladir" -+ else -+ dir="$lt_sysroot$libdir" -+ absdir="$lt_sysroot$libdir" -+ fi -+ test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes -+ else -+ if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then -+ dir="$ladir" -+ absdir="$abs_ladir" -+ # Remove this search path later -+ func_append notinst_path " $abs_ladir" -+ else -+ dir="$ladir/$objdir" -+ absdir="$abs_ladir/$objdir" -+ # Remove this search path later -+ func_append notinst_path " $abs_ladir" -+ fi -+ fi # $installed = yes -+ func_stripname 'lib' '.la' "$laname" -+ name=$func_stripname_result -+ -+ # This library was specified with -dlpreopen. -+ if test "$pass" = dlpreopen; then -+ if test -z "$libdir" && test "$linkmode" = prog; then -+ func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" -+ fi -+ case "$host" in -+ # special handling for platforms with PE-DLLs. -+ *cygwin* | *mingw* | *cegcc* ) -+ # Linker will automatically link against shared library if both -+ # static and shared are present. Therefore, ensure we extract -+ # symbols from the import library if a shared library is present -+ # (otherwise, the dlopen module name will be incorrect). We do -+ # this by putting the import library name into $newdlprefiles. -+ # We recover the dlopen module name by 'saving' the la file -+ # name in a special purpose variable, and (later) extracting the -+ # dlname from the la file. -+ if test -n "$dlname"; then -+ func_tr_sh "$dir/$linklib" -+ eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" -+ func_append newdlprefiles " $dir/$linklib" -+ else -+ func_append newdlprefiles " $dir/$old_library" -+ # Keep a list of preopened convenience libraries to check -+ # that they are being used correctly in the link pass. -+ test -z "$libdir" && \ -+ func_append dlpreconveniencelibs " $dir/$old_library" -+ fi -+ ;; -+ * ) -+ # Prefer using a static library (so that no silly _DYNAMIC symbols -+ # are required to link). -+ if test -n "$old_library"; then -+ func_append newdlprefiles " $dir/$old_library" -+ # Keep a list of preopened convenience libraries to check -+ # that they are being used correctly in the link pass. -+ test -z "$libdir" && \ -+ func_append dlpreconveniencelibs " $dir/$old_library" -+ # Otherwise, use the dlname, so that lt_dlopen finds it. -+ elif test -n "$dlname"; then -+ func_append newdlprefiles " $dir/$dlname" -+ else -+ func_append newdlprefiles " $dir/$linklib" -+ fi -+ ;; -+ esac -+ fi # $pass = dlpreopen -+ -+ if test -z "$libdir"; then -+ # Link the convenience library -+ if test "$linkmode" = lib; then -+ deplibs="$dir/$old_library $deplibs" -+ elif test "$linkmode,$pass" = "prog,link"; then -+ compile_deplibs="$dir/$old_library $compile_deplibs" -+ finalize_deplibs="$dir/$old_library $finalize_deplibs" -+ else -+ deplibs="$lib $deplibs" # used for prog,scan pass -+ fi -+ continue -+ fi -+ -+ -+ if test "$linkmode" = prog && test "$pass" != link; then -+ func_append newlib_search_path " $ladir" -+ deplibs="$lib $deplibs" -+ -+ linkalldeplibs=no -+ if test "$link_all_deplibs" != no || test -z "$library_names" || -+ test "$build_libtool_libs" = no; then -+ linkalldeplibs=yes -+ fi -+ -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ case $deplib in -+ -L*) func_stripname '-L' '' "$deplib" -+ func_resolve_sysroot "$func_stripname_result" -+ func_append newlib_search_path " $func_resolve_sysroot_result" -+ ;; -+ esac -+ # Need to link against all dependency_libs? -+ if test "$linkalldeplibs" = yes; then -+ deplibs="$deplib $deplibs" -+ else -+ # Need to hardcode shared library paths -+ # or/and link against static libraries -+ newdependency_libs="$deplib $newdependency_libs" -+ fi -+ if $opt_preserve_dup_deps ; then -+ case "$tmp_libs " in -+ *" $deplib "*) func_append specialdeplibs " $deplib" ;; -+ esac -+ fi -+ func_append tmp_libs " $deplib" -+ done # for deplib -+ continue -+ fi # $linkmode = prog... -+ -+ if test "$linkmode,$pass" = "prog,link"; then -+ if test -n "$library_names" && -+ { { test "$prefer_static_libs" = no || -+ test "$prefer_static_libs,$installed" = "built,yes"; } || -+ test -z "$old_library"; }; then -+ # We need to hardcode the library path -+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then -+ # Make sure the rpath contains only unique directories. -+ case "$temp_rpath:" in -+ *"$absdir:"*) ;; -+ *) func_append temp_rpath "$absdir:" ;; -+ esac -+ fi -+ -+ # Hardcode the library path. -+ # Skip directories that are in the system default run-time -+ # search path. -+ case " $sys_lib_dlsearch_path " in -+ *" $absdir "*) ;; -+ *) -+ case "$compile_rpath " in -+ *" $absdir "*) ;; -+ *) func_append compile_rpath " $absdir" ;; -+ esac -+ ;; -+ esac -+ case " $sys_lib_dlsearch_path " in -+ *" $libdir "*) ;; -+ *) -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) func_append finalize_rpath " $libdir" ;; -+ esac -+ ;; -+ esac -+ fi # $linkmode,$pass = prog,link... -+ -+ if test "$alldeplibs" = yes && -+ { test "$deplibs_check_method" = pass_all || -+ { test "$build_libtool_libs" = yes && -+ test -n "$library_names"; }; }; then -+ # We only need to search for static libraries -+ continue -+ fi -+ fi -+ -+ link_static=no # Whether the deplib will be linked statically -+ use_static_libs=$prefer_static_libs -+ if test "$use_static_libs" = built && test "$installed" = yes; then -+ use_static_libs=no -+ fi -+ if test -n "$library_names" && -+ { test "$use_static_libs" = no || test -z "$old_library"; }; then -+ case $host in -+ *cygwin* | *mingw* | *cegcc*) -+ # No point in relinking DLLs because paths are not encoded -+ func_append notinst_deplibs " $lib" -+ need_relink=no -+ ;; -+ *) -+ if test "$installed" = no; then -+ func_append notinst_deplibs " $lib" -+ need_relink=yes -+ fi -+ ;; -+ esac -+ # This is a shared library -+ -+ # Warn about portability, can't link against -module's on some -+ # systems (darwin). Don't bleat about dlopened modules though! -+ dlopenmodule="" -+ for dlpremoduletest in $dlprefiles; do -+ if test "X$dlpremoduletest" = "X$lib"; then -+ dlopenmodule="$dlpremoduletest" -+ break -+ fi -+ done -+ if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then -+ echo -+ if test "$linkmode" = prog; then -+ $ECHO "*** Warning: Linking the executable $output against the loadable module" -+ else -+ $ECHO "*** Warning: Linking the shared library $output against the loadable module" -+ fi -+ $ECHO "*** $linklib is not portable!" -+ fi -+ if test "$linkmode" = lib && -+ test "$hardcode_into_libs" = yes; then -+ # Hardcode the library path. -+ # Skip directories that are in the system default run-time -+ # search path. -+ case " $sys_lib_dlsearch_path " in -+ *" $absdir "*) ;; -+ *) -+ case "$compile_rpath " in -+ *" $absdir "*) ;; -+ *) func_append compile_rpath " $absdir" ;; -+ esac -+ ;; -+ esac -+ case " $sys_lib_dlsearch_path " in -+ *" $libdir "*) ;; -+ *) -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) func_append finalize_rpath " $libdir" ;; -+ esac -+ ;; -+ esac -+ fi -+ -+ if test -n "$old_archive_from_expsyms_cmds"; then -+ # figure out the soname -+ set dummy $library_names -+ shift -+ realname="$1" -+ shift -+ libname=`eval "\\$ECHO \"$libname_spec\""` -+ # use dlname if we got it. it's perfectly good, no? -+ if test -n "$dlname"; then -+ soname="$dlname" -+ elif test -n "$soname_spec"; then -+ # bleh windows -+ case $host in -+ *cygwin* | mingw* | *cegcc*) -+ func_arith $current - $age -+ major=$func_arith_result -+ versuffix="-$major" -+ ;; -+ esac -+ eval soname=\"$soname_spec\" -+ else -+ soname="$realname" -+ fi -+ -+ # Make a new name for the extract_expsyms_cmds to use -+ soroot="$soname" -+ func_basename "$soroot" -+ soname="$func_basename_result" -+ func_stripname 'lib' '.dll' "$soname" -+ newlib=libimp-$func_stripname_result.a -+ -+ # If the library has no export list, then create one now -+ if test -f "$output_objdir/$soname-def"; then : -+ else -+ func_verbose "extracting exported symbol list from \`$soname'" -+ func_execute_cmds "$extract_expsyms_cmds" 'exit $?' -+ fi -+ -+ # Create $newlib -+ if test -f "$output_objdir/$newlib"; then :; else -+ func_verbose "generating import library for \`$soname'" -+ func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' -+ fi -+ # make sure the library variables are pointing to the new library -+ dir=$output_objdir -+ linklib=$newlib -+ fi # test -n "$old_archive_from_expsyms_cmds" -+ -+ if test "$linkmode" = prog || test "$opt_mode" != relink; then -+ add_shlibpath= -+ add_dir= -+ add= -+ lib_linked=yes -+ case $hardcode_action in -+ immediate | unsupported) -+ if test "$hardcode_direct" = no; then -+ add="$dir/$linklib" -+ case $host in -+ *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; -+ *-*-sysv4*uw2*) add_dir="-L$dir" ;; -+ *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ -+ *-*-unixware7*) add_dir="-L$dir" ;; -+ *-*-darwin* ) -+ # if the lib is a (non-dlopened) module then we can not -+ # link against it, someone is ignoring the earlier warnings -+ if /usr/bin/file -L $add 2> /dev/null | -+ $GREP ": [^:]* bundle" >/dev/null ; then -+ if test "X$dlopenmodule" != "X$lib"; then -+ $ECHO "*** Warning: lib $linklib is a module, not a shared library" -+ if test -z "$old_library" ; then -+ echo -+ echo "*** And there doesn't seem to be a static archive available" -+ echo "*** The link will probably fail, sorry" -+ else -+ add="$dir/$old_library" -+ fi -+ elif test -n "$old_library"; then -+ add="$dir/$old_library" -+ fi -+ fi -+ esac -+ elif test "$hardcode_minus_L" = no; then -+ case $host in -+ *-*-sunos*) add_shlibpath="$dir" ;; -+ esac -+ add_dir="-L$dir" -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = no; then -+ add_shlibpath="$dir" -+ add="-l$name" -+ else -+ lib_linked=no -+ fi -+ ;; -+ relink) -+ if test "$hardcode_direct" = yes && -+ test "$hardcode_direct_absolute" = no; then -+ add="$dir/$linklib" -+ elif test "$hardcode_minus_L" = yes; then -+ add_dir="-L$absdir" -+ # Try looking first in the location we're being installed to. -+ if test -n "$inst_prefix_dir"; then -+ case $libdir in -+ [\\/]*) -+ func_append add_dir " -L$inst_prefix_dir$libdir" -+ ;; -+ esac -+ fi -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = yes; then -+ add_shlibpath="$dir" -+ add="-l$name" -+ else -+ lib_linked=no -+ fi -+ ;; -+ *) lib_linked=no ;; -+ esac -+ -+ if test "$lib_linked" != yes; then -+ func_fatal_configuration "unsupported hardcode properties" -+ fi -+ -+ if test -n "$add_shlibpath"; then -+ case :$compile_shlibpath: in -+ *":$add_shlibpath:"*) ;; -+ *) func_append compile_shlibpath "$add_shlibpath:" ;; -+ esac -+ fi -+ if test "$linkmode" = prog; then -+ test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" -+ test -n "$add" && compile_deplibs="$add $compile_deplibs" -+ else -+ test -n "$add_dir" && deplibs="$add_dir $deplibs" -+ test -n "$add" && deplibs="$add $deplibs" -+ if test "$hardcode_direct" != yes && -+ test "$hardcode_minus_L" != yes && -+ test "$hardcode_shlibpath_var" = yes; then -+ case :$finalize_shlibpath: in -+ *":$libdir:"*) ;; -+ *) func_append finalize_shlibpath "$libdir:" ;; -+ esac -+ fi -+ fi -+ fi -+ -+ if test "$linkmode" = prog || test "$opt_mode" = relink; then -+ add_shlibpath= -+ add_dir= -+ add= -+ # Finalize command for both is simple: just hardcode it. -+ if test "$hardcode_direct" = yes && -+ test "$hardcode_direct_absolute" = no; then -+ add="$libdir/$linklib" -+ elif test "$hardcode_minus_L" = yes; then -+ add_dir="-L$libdir" -+ add="-l$name" -+ elif test "$hardcode_shlibpath_var" = yes; then -+ case :$finalize_shlibpath: in -+ *":$libdir:"*) ;; -+ *) func_append finalize_shlibpath "$libdir:" ;; -+ esac -+ add="-l$name" -+ elif test "$hardcode_automatic" = yes; then -+ if test -n "$inst_prefix_dir" && -+ test -f "$inst_prefix_dir$libdir/$linklib" ; then -+ add="$inst_prefix_dir$libdir/$linklib" -+ else -+ add="$libdir/$linklib" -+ fi -+ else -+ # We cannot seem to hardcode it, guess we'll fake it. -+ add_dir="-L$libdir" -+ # Try looking first in the location we're being installed to. -+ if test -n "$inst_prefix_dir"; then -+ case $libdir in -+ [\\/]*) -+ func_append add_dir " -L$inst_prefix_dir$libdir" -+ ;; -+ esac -+ fi -+ add="-l$name" -+ fi -+ -+ if test "$linkmode" = prog; then -+ test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" -+ test -n "$add" && finalize_deplibs="$add $finalize_deplibs" -+ else -+ test -n "$add_dir" && deplibs="$add_dir $deplibs" -+ test -n "$add" && deplibs="$add $deplibs" -+ fi -+ fi -+ elif test "$linkmode" = prog; then -+ # Here we assume that one of hardcode_direct or hardcode_minus_L -+ # is not unsupported. This is valid on all known static and -+ # shared platforms. -+ if test "$hardcode_direct" != unsupported; then -+ test -n "$old_library" && linklib="$old_library" -+ compile_deplibs="$dir/$linklib $compile_deplibs" -+ finalize_deplibs="$dir/$linklib $finalize_deplibs" -+ else -+ compile_deplibs="-l$name -L$dir $compile_deplibs" -+ finalize_deplibs="-l$name -L$dir $finalize_deplibs" -+ fi -+ elif test "$build_libtool_libs" = yes; then -+ # Not a shared library -+ if test "$deplibs_check_method" != pass_all; then -+ # We're trying link a shared library against a static one -+ # but the system doesn't support it. -+ -+ # Just print a warning and add the library to dependency_libs so -+ # that the program can be linked against the static library. -+ echo -+ $ECHO "*** Warning: This system can not link to static lib archive $lib." -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which you do not appear to have." -+ if test "$module" = yes; then -+ echo "*** But as you try to build a module library, libtool will still create " -+ echo "*** a static module, that should work as long as the dlopening application" -+ echo "*** is linked with the -dlopen flag to resolve symbols at runtime." -+ if test -z "$global_symbol_pipe"; then -+ echo -+ echo "*** However, this would only work if libtool was able to extract symbol" -+ echo "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ echo "*** not find such a program. So, this module is probably useless." -+ echo "*** \`nm' from GNU binutils and a full rebuild may help." -+ fi -+ if test "$build_old_libs" = no; then -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ fi -+ else -+ deplibs="$dir/$old_library $deplibs" -+ link_static=yes -+ fi -+ fi # link shared/static library? -+ -+ if test "$linkmode" = lib; then -+ if test -n "$dependency_libs" && -+ { test "$hardcode_into_libs" != yes || -+ test "$build_old_libs" = yes || -+ test "$link_static" = yes; }; then -+ # Extract -R from dependency_libs -+ temp_deplibs= -+ for libdir in $dependency_libs; do -+ case $libdir in -+ -R*) func_stripname '-R' '' "$libdir" -+ temp_xrpath=$func_stripname_result -+ case " $xrpath " in -+ *" $temp_xrpath "*) ;; -+ *) func_append xrpath " $temp_xrpath";; -+ esac;; -+ *) func_append temp_deplibs " $libdir";; -+ esac -+ done -+ dependency_libs="$temp_deplibs" -+ fi -+ -+ func_append newlib_search_path " $absdir" -+ # Link against this library -+ test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" -+ # ... and its dependency_libs -+ tmp_libs= -+ for deplib in $dependency_libs; do -+ newdependency_libs="$deplib $newdependency_libs" -+ case $deplib in -+ -L*) func_stripname '-L' '' "$deplib" -+ func_resolve_sysroot "$func_stripname_result";; -+ *) func_resolve_sysroot "$deplib" ;; -+ esac -+ if $opt_preserve_dup_deps ; then -+ case "$tmp_libs " in -+ *" $func_resolve_sysroot_result "*) -+ func_append specialdeplibs " $func_resolve_sysroot_result" ;; -+ esac -+ fi -+ func_append tmp_libs " $func_resolve_sysroot_result" -+ done -+ -+ if test "$link_all_deplibs" != no; then -+ # Add the search paths of all dependency libraries -+ for deplib in $dependency_libs; do -+ path= -+ case $deplib in -+ -L*) path="$deplib" ;; -+ *.la) -+ func_resolve_sysroot "$deplib" -+ deplib=$func_resolve_sysroot_result -+ func_dirname "$deplib" "" "." -+ dir=$func_dirname_result -+ # We need an absolute path. -+ case $dir in -+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; -+ *) -+ absdir=`cd "$dir" && pwd` -+ if test -z "$absdir"; then -+ func_warning "cannot determine absolute directory name of \`$dir'" -+ absdir="$dir" -+ fi -+ ;; -+ esac -+ if $GREP "^installed=no" $deplib > /dev/null; then -+ case $host in -+ *-*-darwin*) -+ depdepl= -+ eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` -+ if test -n "$deplibrary_names" ; then -+ for tmp in $deplibrary_names ; do -+ depdepl=$tmp -+ done -+ if test -f "$absdir/$objdir/$depdepl" ; then -+ depdepl="$absdir/$objdir/$depdepl" -+ darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` -+ if test -z "$darwin_install_name"; then -+ darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` -+ fi -+ func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" -+ func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" -+ path= -+ fi -+ fi -+ ;; -+ *) -+ path="-L$absdir/$objdir" -+ ;; -+ esac -+ else -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$deplib' is not a valid libtool archive" -+ test "$absdir" != "$libdir" && \ -+ func_warning "\`$deplib' seems to be moved" -+ -+ path="-L$absdir" -+ fi -+ ;; -+ esac -+ case " $deplibs " in -+ *" $path "*) ;; -+ *) deplibs="$path $deplibs" ;; -+ esac -+ done -+ fi # link_all_deplibs != no -+ fi # linkmode = lib -+ done # for deplib in $libs -+ if test "$pass" = link; then -+ if test "$linkmode" = "prog"; then -+ compile_deplibs="$new_inherited_linker_flags $compile_deplibs" -+ finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" -+ else -+ compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ fi -+ fi -+ dependency_libs="$newdependency_libs" -+ if test "$pass" = dlpreopen; then -+ # Link the dlpreopened libraries before other libraries -+ for deplib in $save_deplibs; do -+ deplibs="$deplib $deplibs" -+ done -+ fi -+ if test "$pass" != dlopen; then -+ if test "$pass" != conv; then -+ # Make sure lib_search_path contains only unique directories. -+ lib_search_path= -+ for dir in $newlib_search_path; do -+ case "$lib_search_path " in -+ *" $dir "*) ;; -+ *) func_append lib_search_path " $dir" ;; -+ esac -+ done -+ newlib_search_path= -+ fi -+ -+ if test "$linkmode,$pass" != "prog,link"; then -+ vars="deplibs" -+ else -+ vars="compile_deplibs finalize_deplibs" -+ fi -+ for var in $vars dependency_libs; do -+ # Add libraries to $var in reverse order -+ eval tmp_libs=\"\$$var\" -+ new_libs= -+ for deplib in $tmp_libs; do -+ # FIXME: Pedantically, this is the right thing to do, so -+ # that some nasty dependency loop isn't accidentally -+ # broken: -+ #new_libs="$deplib $new_libs" -+ # Pragmatically, this seems to cause very few problems in -+ # practice: -+ case $deplib in -+ -L*) new_libs="$deplib $new_libs" ;; -+ -R*) ;; -+ *) -+ # And here is the reason: when a library appears more -+ # than once as an explicit dependence of a library, or -+ # is implicitly linked in more than once by the -+ # compiler, it is considered special, and multiple -+ # occurrences thereof are not removed. Compare this -+ # with having the same library being listed as a -+ # dependency of multiple other libraries: in this case, -+ # we know (pedantically, we assume) the library does not -+ # need to be listed more than once, so we keep only the -+ # last copy. This is not always right, but it is rare -+ # enough that we require users that really mean to play -+ # such unportable linking tricks to link the library -+ # using -Wl,-lname, so that libtool does not consider it -+ # for duplicate removal. -+ case " $specialdeplibs " in -+ *" $deplib "*) new_libs="$deplib $new_libs" ;; -+ *) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) new_libs="$deplib $new_libs" ;; -+ esac -+ ;; -+ esac -+ ;; -+ esac -+ done -+ tmp_libs= -+ for deplib in $new_libs; do -+ case $deplib in -+ -L*) -+ case " $tmp_libs " in -+ *" $deplib "*) ;; -+ *) func_append tmp_libs " $deplib" ;; -+ esac -+ ;; -+ *) func_append tmp_libs " $deplib" ;; -+ esac -+ done -+ eval $var=\"$tmp_libs\" -+ done # for var -+ fi -+ # Last step: remove runtime libs from dependency_libs -+ # (they stay in deplibs) -+ tmp_libs= -+ for i in $dependency_libs ; do -+ case " $predeps $postdeps $compiler_lib_search_path " in -+ *" $i "*) -+ i="" -+ ;; -+ esac -+ if test -n "$i" ; then -+ func_append tmp_libs " $i" -+ fi -+ done -+ dependency_libs=$tmp_libs -+ done # for pass -+ if test "$linkmode" = prog; then -+ dlfiles="$newdlfiles" -+ fi -+ if test "$linkmode" = prog || test "$linkmode" = lib; then -+ dlprefiles="$newdlprefiles" -+ fi -+ -+ case $linkmode in -+ oldlib) -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ func_warning "\`-dlopen' is ignored for archives" -+ fi -+ -+ case " $deplibs" in -+ *\ -l* | *\ -L*) -+ func_warning "\`-l' and \`-L' are ignored for archives" ;; -+ esac -+ -+ test -n "$rpath" && \ -+ func_warning "\`-rpath' is ignored for archives" -+ -+ test -n "$xrpath" && \ -+ func_warning "\`-R' is ignored for archives" -+ -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info/-version-number' is ignored for archives" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for archives" -+ -+ test -n "$export_symbols$export_symbols_regex" && \ -+ func_warning "\`-export-symbols' is ignored for archives" -+ -+ # Now set the variables for building old libraries. -+ build_libtool_libs=no -+ oldlibs="$output" -+ func_append objs "$old_deplibs" -+ ;; -+ -+ lib) -+ # Make sure we only generate libraries of the form `libNAME.la'. -+ case $outputname in -+ lib*) -+ func_stripname 'lib' '.la' "$outputname" -+ name=$func_stripname_result -+ eval shared_ext=\"$shrext_cmds\" -+ eval libname=\"$libname_spec\" -+ ;; -+ *) -+ test "$module" = no && \ -+ func_fatal_help "libtool library \`$output' must begin with \`lib'" -+ -+ if test "$need_lib_prefix" != no; then -+ # Add the "lib" prefix for modules if required -+ func_stripname '' '.la' "$outputname" -+ name=$func_stripname_result -+ eval shared_ext=\"$shrext_cmds\" -+ eval libname=\"$libname_spec\" -+ else -+ func_stripname '' '.la' "$outputname" -+ libname=$func_stripname_result -+ fi -+ ;; -+ esac -+ -+ if test -n "$objs"; then -+ if test "$deplibs_check_method" != pass_all; then -+ func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" -+ else -+ echo -+ $ECHO "*** Warning: Linking the shared library $output against the non-libtool" -+ $ECHO "*** objects $objs is not portable!" -+ func_append libobjs " $objs" -+ fi -+ fi -+ -+ test "$dlself" != no && \ -+ func_warning "\`-dlopen self' is ignored for libtool libraries" -+ -+ set dummy $rpath -+ shift -+ test "$#" -gt 1 && \ -+ func_warning "ignoring multiple \`-rpath's for a libtool library" -+ -+ install_libdir="$1" -+ -+ oldlibs= -+ if test -z "$rpath"; then -+ if test "$build_libtool_libs" = yes; then -+ # Building a libtool convenience library. -+ # Some compilers have problems with a `.al' extension so -+ # convenience libraries should have the same extension an -+ # archive normally would. -+ oldlibs="$output_objdir/$libname.$libext $oldlibs" -+ build_libtool_libs=convenience -+ build_old_libs=yes -+ fi -+ -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info/-version-number' is ignored for convenience libraries" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for convenience libraries" -+ else -+ -+ # Parse the version information argument. -+ save_ifs="$IFS"; IFS=':' -+ set dummy $vinfo 0 0 0 -+ shift -+ IFS="$save_ifs" -+ -+ test -n "$7" && \ -+ func_fatal_help "too many parameters to \`-version-info'" -+ -+ # convert absolute version numbers to libtool ages -+ # this retains compatibility with .la files and attempts -+ # to make the code below a bit more comprehensible -+ -+ case $vinfo_number in -+ yes) -+ number_major="$1" -+ number_minor="$2" -+ number_revision="$3" -+ # -+ # There are really only two kinds -- those that -+ # use the current revision as the major version -+ # and those that subtract age and use age as -+ # a minor version. But, then there is irix -+ # which has an extra 1 added just for fun -+ # -+ case $version_type in -+ # correct linux to gnu/linux during the next big refactor -+ darwin|linux|osf|windows|none) -+ func_arith $number_major + $number_minor -+ current=$func_arith_result -+ age="$number_minor" -+ revision="$number_revision" -+ ;; -+ freebsd-aout|freebsd-elf|qnx|sunos) -+ current="$number_major" -+ revision="$number_minor" -+ age="0" -+ ;; -+ irix|nonstopux) -+ func_arith $number_major + $number_minor -+ current=$func_arith_result -+ age="$number_minor" -+ revision="$number_minor" -+ lt_irix_increment=no -+ ;; -+ *) -+ func_fatal_configuration "$modename: unknown library version type \`$version_type'" -+ ;; -+ esac -+ ;; -+ no) -+ current="$1" -+ revision="$2" -+ age="$3" -+ ;; -+ esac -+ -+ # Check that each of the things are valid numbers. -+ case $current in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ func_error "CURRENT \`$current' must be a nonnegative integer" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ ;; -+ esac -+ -+ case $revision in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ func_error "REVISION \`$revision' must be a nonnegative integer" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ ;; -+ esac -+ -+ case $age in -+ 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; -+ *) -+ func_error "AGE \`$age' must be a nonnegative integer" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ ;; -+ esac -+ -+ if test "$age" -gt "$current"; then -+ func_error "AGE \`$age' is greater than the current interface number \`$current'" -+ func_fatal_error "\`$vinfo' is not valid version information" -+ fi -+ -+ # Calculate the version variables. -+ major= -+ versuffix= -+ verstring= -+ case $version_type in -+ none) ;; -+ -+ darwin) -+ # Like Linux, but with the current version available in -+ # verstring for coding it into the library header -+ func_arith $current - $age -+ major=.$func_arith_result -+ versuffix="$major.$age.$revision" -+ # Darwin ld doesn't like 0 for these options... -+ func_arith $current + 1 -+ minor_current=$func_arith_result -+ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" -+ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" -+ ;; -+ -+ freebsd-aout) -+ major=".$current" -+ versuffix=".$current.$revision"; -+ ;; -+ -+ freebsd-elf) -+ major=".$current" -+ versuffix=".$current" -+ ;; -+ -+ irix | nonstopux) -+ if test "X$lt_irix_increment" = "Xno"; then -+ func_arith $current - $age -+ else -+ func_arith $current - $age + 1 -+ fi -+ major=$func_arith_result -+ -+ case $version_type in -+ nonstopux) verstring_prefix=nonstopux ;; -+ *) verstring_prefix=sgi ;; -+ esac -+ verstring="$verstring_prefix$major.$revision" -+ -+ # Add in all the interfaces that we are compatible with. -+ loop=$revision -+ while test "$loop" -ne 0; do -+ func_arith $revision - $loop -+ iface=$func_arith_result -+ func_arith $loop - 1 -+ loop=$func_arith_result -+ verstring="$verstring_prefix$major.$iface:$verstring" -+ done -+ -+ # Before this point, $major must not contain `.'. -+ major=.$major -+ versuffix="$major.$revision" -+ ;; -+ -+ linux) # correct to gnu/linux during the next big refactor -+ func_arith $current - $age -+ major=.$func_arith_result -+ versuffix="$major.$age.$revision" -+ ;; -+ -+ osf) -+ func_arith $current - $age -+ major=.$func_arith_result -+ versuffix=".$current.$age.$revision" -+ verstring="$current.$age.$revision" -+ -+ # Add in all the interfaces that we are compatible with. -+ loop=$age -+ while test "$loop" -ne 0; do -+ func_arith $current - $loop -+ iface=$func_arith_result -+ func_arith $loop - 1 -+ loop=$func_arith_result -+ verstring="$verstring:${iface}.0" -+ done -+ -+ # Make executables depend on our current version. -+ func_append verstring ":${current}.0" -+ ;; -+ -+ qnx) -+ major=".$current" -+ versuffix=".$current" -+ ;; -+ -+ sunos) -+ major=".$current" -+ versuffix=".$current.$revision" -+ ;; -+ -+ windows) -+ # Use '-' rather than '.', since we only want one -+ # extension on DOS 8.3 filesystems. -+ func_arith $current - $age -+ major=$func_arith_result -+ versuffix="-$major" -+ ;; -+ -+ *) -+ func_fatal_configuration "unknown library version type \`$version_type'" -+ ;; -+ esac -+ -+ # Clear the version info if we defaulted, and they specified a release. -+ if test -z "$vinfo" && test -n "$release"; then -+ major= -+ case $version_type in -+ darwin) -+ # we can't check for "0.0" in archive_cmds due to quoting -+ # problems, so we reset it completely -+ verstring= -+ ;; -+ *) -+ verstring="0.0" -+ ;; -+ esac -+ if test "$need_version" = no; then -+ versuffix= -+ else -+ versuffix=".0.0" -+ fi -+ fi -+ -+ # Remove version info from name if versioning should be avoided -+ if test "$avoid_version" = yes && test "$need_version" = no; then -+ major= -+ versuffix= -+ verstring="" -+ fi -+ -+ # Check to see if the archive will have undefined symbols. -+ if test "$allow_undefined" = yes; then -+ if test "$allow_undefined_flag" = unsupported; then -+ func_warning "undefined symbols not allowed in $host shared libraries" -+ build_libtool_libs=no -+ build_old_libs=yes -+ fi -+ else -+ # Don't allow undefined symbols. -+ allow_undefined_flag="$no_undefined_flag" -+ fi -+ -+ fi -+ -+ func_generate_dlsyms "$libname" "$libname" "yes" -+ func_append libobjs " $symfileobj" -+ test "X$libobjs" = "X " && libobjs= -+ -+ if test "$opt_mode" != relink; then -+ # Remove our outputs, but don't remove object files since they -+ # may have been created when compiling PIC objects. -+ removelist= -+ tempremovelist=`$ECHO "$output_objdir/*"` -+ for p in $tempremovelist; do -+ case $p in -+ *.$objext | *.gcno) -+ ;; -+ $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) -+ if test "X$precious_files_regex" != "X"; then -+ if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 -+ then -+ continue -+ fi -+ fi -+ func_append removelist " $p" -+ ;; -+ *) ;; -+ esac -+ done -+ test -n "$removelist" && \ -+ func_show_eval "${RM}r \$removelist" -+ fi -+ -+ # Now set the variables for building old libraries. -+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then -+ func_append oldlibs " $output_objdir/$libname.$libext" -+ -+ # Transform .lo files to .o files. -+ oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` -+ fi -+ -+ # Eliminate all temporary directories. -+ #for path in $notinst_path; do -+ # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` -+ # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` -+ # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` -+ #done -+ -+ if test -n "$xrpath"; then -+ # If the user specified any rpath flags, then add them. -+ temp_xrpath= -+ for libdir in $xrpath; do -+ func_replace_sysroot "$libdir" -+ func_append temp_xrpath " -R$func_replace_sysroot_result" -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) func_append finalize_rpath " $libdir" ;; -+ esac -+ done -+ if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then -+ dependency_libs="$temp_xrpath $dependency_libs" -+ fi -+ fi -+ -+ # Make sure dlfiles contains only unique files that won't be dlpreopened -+ old_dlfiles="$dlfiles" -+ dlfiles= -+ for lib in $old_dlfiles; do -+ case " $dlprefiles $dlfiles " in -+ *" $lib "*) ;; -+ *) func_append dlfiles " $lib" ;; -+ esac -+ done -+ -+ # Make sure dlprefiles contains only unique files -+ old_dlprefiles="$dlprefiles" -+ dlprefiles= -+ for lib in $old_dlprefiles; do -+ case "$dlprefiles " in -+ *" $lib "*) ;; -+ *) func_append dlprefiles " $lib" ;; -+ esac -+ done -+ -+ if test "$build_libtool_libs" = yes; then -+ if test -n "$rpath"; then -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) -+ # these systems don't actually have a c library (as such)! -+ ;; -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # Rhapsody C library is in the System framework -+ func_append deplibs " System.ltframework" -+ ;; -+ *-*-netbsd*) -+ # Don't link with libc until the a.out ld.so is fixed. -+ ;; -+ *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) -+ # Do not include libc due to us having libc/libc_r. -+ ;; -+ *-*-sco3.2v5* | *-*-sco5v6*) -+ # Causes problems with __ctype -+ ;; -+ *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) -+ # Compiler inserts libc in the correct place for threads to work -+ ;; -+ *) -+ # Add libc to deplibs on all other systems if necessary. -+ if test "$build_libtool_need_lc" = "yes"; then -+ func_append deplibs " -lc" -+ fi -+ ;; -+ esac -+ fi -+ -+ # Transform deplibs into only deplibs that can be linked in shared. -+ name_save=$name -+ libname_save=$libname -+ release_save=$release -+ versuffix_save=$versuffix -+ major_save=$major -+ # I'm not sure if I'm treating the release correctly. I think -+ # release should show up in the -l (ie -lgmp5) so we don't want to -+ # add it in twice. Is that correct? -+ release="" -+ versuffix="" -+ major="" -+ newdeplibs= -+ droppeddeps=no -+ case $deplibs_check_method in -+ pass_all) -+ # Don't check for shared/static. Everything works. -+ # This might be a little naive. We might want to check -+ # whether the library exists or not. But this is on -+ # osf3 & osf4 and I'm not really sure... Just -+ # implementing what was already the behavior. -+ newdeplibs=$deplibs -+ ;; -+ test_compile) -+ # This code stresses the "libraries are programs" paradigm to its -+ # limits. Maybe even breaks it. We compile a program, linking it -+ # against the deplibs as a proxy for the library. Then we can check -+ # whether they linked in statically or dynamically with ldd. -+ $opt_dry_run || $RM conftest.c -+ cat > conftest.c </dev/null` -+ $nocaseglob -+ else -+ potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` -+ fi -+ for potent_lib in $potential_libs; do -+ # Follow soft links. -+ if ls -lLd "$potent_lib" 2>/dev/null | -+ $GREP " -> " >/dev/null; then -+ continue -+ fi -+ # The statement above tries to avoid entering an -+ # endless loop below, in case of cyclic links. -+ # We might still enter an endless loop, since a link -+ # loop can be closed while we follow links, -+ # but so what? -+ potlib="$potent_lib" -+ while test -h "$potlib" 2>/dev/null; do -+ potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` -+ case $potliblink in -+ [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; -+ *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; -+ esac -+ done -+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | -+ $SED -e 10q | -+ $EGREP "$file_magic_regex" > /dev/null; then -+ func_append newdeplibs " $a_deplib" -+ a_deplib="" -+ break 2 -+ fi -+ done -+ done -+ fi -+ if test -n "$a_deplib" ; then -+ droppeddeps=yes -+ echo -+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib." -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which you do not appear to have" -+ echo "*** because I did check the linker path looking for a file starting" -+ if test -z "$potlib" ; then -+ $ECHO "*** with $libname but no candidates were found. (...for file magic test)" -+ else -+ $ECHO "*** with $libname and none of the candidates passed a file format test" -+ $ECHO "*** using a file magic. Last file checked: $potlib" -+ fi -+ fi -+ ;; -+ *) -+ # Add a -L argument. -+ func_append newdeplibs " $a_deplib" -+ ;; -+ esac -+ done # Gone through all deplibs. -+ ;; -+ match_pattern*) -+ set dummy $deplibs_check_method; shift -+ match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` -+ for a_deplib in $deplibs; do -+ case $a_deplib in -+ -l*) -+ func_stripname -l '' "$a_deplib" -+ name=$func_stripname_result -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ case " $predeps $postdeps " in -+ *" $a_deplib "*) -+ func_append newdeplibs " $a_deplib" -+ a_deplib="" -+ ;; -+ esac -+ fi -+ if test -n "$a_deplib" ; then -+ libname=`eval "\\$ECHO \"$libname_spec\""` -+ for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do -+ potential_libs=`ls $i/$libname[.-]* 2>/dev/null` -+ for potent_lib in $potential_libs; do -+ potlib="$potent_lib" # see symlink-check above in file_magic test -+ if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ -+ $EGREP "$match_pattern_regex" > /dev/null; then -+ func_append newdeplibs " $a_deplib" -+ a_deplib="" -+ break 2 -+ fi -+ done -+ done -+ fi -+ if test -n "$a_deplib" ; then -+ droppeddeps=yes -+ echo -+ $ECHO "*** Warning: linker path does not have real file for library $a_deplib." -+ echo "*** I have the capability to make that library automatically link in when" -+ echo "*** you link to this library. But I can only do this if you have a" -+ echo "*** shared version of the library, which you do not appear to have" -+ echo "*** because I did check the linker path looking for a file starting" -+ if test -z "$potlib" ; then -+ $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" -+ else -+ $ECHO "*** with $libname and none of the candidates passed a file format test" -+ $ECHO "*** using a regex pattern. Last file checked: $potlib" -+ fi -+ fi -+ ;; -+ *) -+ # Add a -L argument. -+ func_append newdeplibs " $a_deplib" -+ ;; -+ esac -+ done # Gone through all deplibs. -+ ;; -+ none | unknown | *) -+ newdeplibs="" -+ tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` -+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then -+ for i in $predeps $postdeps ; do -+ # can't use Xsed below, because $i might contain '/' -+ tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` -+ done -+ fi -+ case $tmp_deplibs in -+ *[!\ \ ]*) -+ echo -+ if test "X$deplibs_check_method" = "Xnone"; then -+ echo "*** Warning: inter-library dependencies are not supported in this platform." -+ else -+ echo "*** Warning: inter-library dependencies are not known to be supported." -+ fi -+ echo "*** All declared inter-library dependencies are being dropped." -+ droppeddeps=yes -+ ;; -+ esac -+ ;; -+ esac -+ versuffix=$versuffix_save -+ major=$major_save -+ release=$release_save -+ libname=$libname_save -+ name=$name_save -+ -+ case $host in -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # On Rhapsody replace the C library with the System framework -+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` -+ ;; -+ esac -+ -+ if test "$droppeddeps" = yes; then -+ if test "$module" = yes; then -+ echo -+ echo "*** Warning: libtool could not satisfy all declared inter-library" -+ $ECHO "*** dependencies of module $libname. Therefore, libtool will create" -+ echo "*** a static module, that should work as long as the dlopening" -+ echo "*** application is linked with the -dlopen flag." -+ if test -z "$global_symbol_pipe"; then -+ echo -+ echo "*** However, this would only work if libtool was able to extract symbol" -+ echo "*** lists from a program, using \`nm' or equivalent, but libtool could" -+ echo "*** not find such a program. So, this module is probably useless." -+ echo "*** \`nm' from GNU binutils and a full rebuild may help." -+ fi -+ if test "$build_old_libs" = no; then -+ oldlibs="$output_objdir/$libname.$libext" -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ else -+ echo "*** The inter-library dependencies that have been dropped here will be" -+ echo "*** automatically added whenever a program is linked with this library" -+ echo "*** or is declared to -dlopen it." -+ -+ if test "$allow_undefined" = no; then -+ echo -+ echo "*** Since this library must not contain undefined symbols," -+ echo "*** because either the platform does not support them or" -+ echo "*** it was explicitly requested with -no-undefined," -+ echo "*** libtool will only create a static version of it." -+ if test "$build_old_libs" = no; then -+ oldlibs="$output_objdir/$libname.$libext" -+ build_libtool_libs=module -+ build_old_libs=yes -+ else -+ build_libtool_libs=no -+ fi -+ fi -+ fi -+ fi -+ # Done checking deplibs! -+ deplibs=$newdeplibs -+ fi -+ # Time to change all our "foo.ltframework" stuff back to "-framework foo" -+ case $host in -+ *-*-darwin*) -+ newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ ;; -+ esac -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $deplibs " in -+ *" -L$path/$objdir "*) -+ func_append new_libs " -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) func_append new_libs " $deplib" ;; -+ esac -+ ;; -+ *) func_append new_libs " $deplib" ;; -+ esac -+ done -+ deplibs="$new_libs" -+ -+ # All the library-specific variables (install_libdir is set above). -+ library_names= -+ old_library= -+ dlname= -+ -+ # Test again, we may have decided not to build it any more -+ if test "$build_libtool_libs" = yes; then -+ # Remove ${wl} instances when linking with ld. -+ # FIXME: should test the right _cmds variable. -+ case $archive_cmds in -+ *\$LD\ *) wl= ;; -+ esac -+ if test "$hardcode_into_libs" = yes; then -+ # Hardcode the library paths -+ hardcode_libdirs= -+ dep_rpath= -+ rpath="$finalize_rpath" -+ test "$opt_mode" != relink && rpath="$compile_rpath$rpath" -+ for libdir in $rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ func_replace_sysroot "$libdir" -+ libdir=$func_replace_sysroot_result -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ func_append dep_rpath " $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$perm_rpath " in -+ *" $libdir "*) ;; -+ *) func_append perm_rpath " $libdir" ;; -+ esac -+ fi -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" -+ fi -+ if test -n "$runpath_var" && test -n "$perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $perm_rpath; do -+ func_append rpath "$dir:" -+ done -+ eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" -+ fi -+ test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" -+ fi -+ -+ shlibpath="$finalize_shlibpath" -+ test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" -+ if test -n "$shlibpath"; then -+ eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" -+ fi -+ -+ # Get the real and link names of the library. -+ eval shared_ext=\"$shrext_cmds\" -+ eval library_names=\"$library_names_spec\" -+ set dummy $library_names -+ shift -+ realname="$1" -+ shift -+ -+ if test -n "$soname_spec"; then -+ eval soname=\"$soname_spec\" -+ else -+ soname="$realname" -+ fi -+ if test -z "$dlname"; then -+ dlname=$soname -+ fi -+ -+ lib="$output_objdir/$realname" -+ linknames= -+ for link -+ do -+ func_append linknames " $link" -+ done -+ -+ # Use standard objects if they are pic -+ test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` -+ test "X$libobjs" = "X " && libobjs= -+ -+ delfiles= -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" -+ export_symbols="$output_objdir/$libname.uexp" -+ func_append delfiles " $export_symbols" -+ fi -+ -+ orig_export_symbols= -+ case $host_os in -+ cygwin* | mingw* | cegcc*) -+ if test -n "$export_symbols" && test -z "$export_symbols_regex"; then -+ # exporting using user supplied symfile -+ if test "x`$SED 1q $export_symbols`" != xEXPORTS; then -+ # and it's NOT already a .def file. Must figure out -+ # which of the given symbols are data symbols and tag -+ # them as such. So, trigger use of export_symbols_cmds. -+ # export_symbols gets reassigned inside the "prepare -+ # the list of exported symbols" if statement, so the -+ # include_expsyms logic still works. -+ orig_export_symbols="$export_symbols" -+ export_symbols= -+ always_export_symbols=yes -+ fi -+ fi -+ ;; -+ esac -+ -+ # Prepare the list of exported symbols -+ if test -z "$export_symbols"; then -+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then -+ func_verbose "generating symbol list for \`$libname.la'" -+ export_symbols="$output_objdir/$libname.exp" -+ $opt_dry_run || $RM $export_symbols -+ cmds=$export_symbols_cmds -+ save_ifs="$IFS"; IFS='~' -+ for cmd1 in $cmds; do -+ IFS="$save_ifs" -+ # Take the normal branch if the nm_file_list_spec branch -+ # doesn't work or if tool conversion is not needed. -+ case $nm_file_list_spec~$to_tool_file_cmd in -+ *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) -+ try_normal_branch=yes -+ eval cmd=\"$cmd1\" -+ func_len " $cmd" -+ len=$func_len_result -+ ;; -+ *) -+ try_normal_branch=no -+ ;; -+ esac -+ if test "$try_normal_branch" = yes \ -+ && { test "$len" -lt "$max_cmd_len" \ -+ || test "$max_cmd_len" -le -1; } -+ then -+ func_show_eval "$cmd" 'exit $?' -+ skipped_export=false -+ elif test -n "$nm_file_list_spec"; then -+ func_basename "$output" -+ output_la=$func_basename_result -+ save_libobjs=$libobjs -+ save_output=$output -+ output=${output_objdir}/${output_la}.nm -+ func_to_tool_file "$output" -+ libobjs=$nm_file_list_spec$func_to_tool_file_result -+ func_append delfiles " $output" -+ func_verbose "creating $NM input file list: $output" -+ for obj in $save_libobjs; do -+ func_to_tool_file "$obj" -+ $ECHO "$func_to_tool_file_result" -+ done > "$output" -+ eval cmd=\"$cmd1\" -+ func_show_eval "$cmd" 'exit $?' -+ output=$save_output -+ libobjs=$save_libobjs -+ skipped_export=false -+ else -+ # The command line is too long to execute in one step. -+ func_verbose "using reloadable object file for export list..." -+ skipped_export=: -+ # Break out early, otherwise skipped_export may be -+ # set to false by a later but shorter cmd. -+ break -+ fi -+ done -+ IFS="$save_ifs" -+ if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then -+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' -+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' -+ fi -+ fi -+ fi -+ -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ tmp_export_symbols="$export_symbols" -+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" -+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' -+ fi -+ -+ if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then -+ # The given exports_symbols file has to be filtered, so filter it. -+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" -+ # FIXME: $output_objdir/$libname.filter potentially contains lots of -+ # 's' commands which not all seds can handle. GNU sed should be fine -+ # though. Also, the filter scales superlinearly with the number of -+ # global variables. join(1) would be nice here, but unfortunately -+ # isn't a blessed tool. -+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -+ func_append delfiles " $export_symbols $output_objdir/$libname.filter" -+ export_symbols=$output_objdir/$libname.def -+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols -+ fi -+ -+ tmp_deplibs= -+ for test_deplib in $deplibs; do -+ case " $convenience " in -+ *" $test_deplib "*) ;; -+ *) -+ func_append tmp_deplibs " $test_deplib" -+ ;; -+ esac -+ done -+ deplibs="$tmp_deplibs" -+ -+ if test -n "$convenience"; then -+ if test -n "$whole_archive_flag_spec" && -+ test "$compiler_needs_object" = yes && -+ test -z "$libobjs"; then -+ # extract the archives, so we have objects to list. -+ # TODO: could optimize this to just extract one archive. -+ whole_archive_flag_spec= -+ fi -+ if test -n "$whole_archive_flag_spec"; then -+ save_libobjs=$libobjs -+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" -+ test "X$libobjs" = "X " && libobjs= -+ else -+ gentop="$output_objdir/${outputname}x" -+ func_append generated " $gentop" -+ -+ func_extract_archives $gentop $convenience -+ func_append libobjs " $func_extract_archives_result" -+ test "X$libobjs" = "X " && libobjs= -+ fi -+ fi -+ -+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then -+ eval flag=\"$thread_safe_flag_spec\" -+ func_append linker_flags " $flag" -+ fi -+ -+ # Make a backup of the uninstalled library when relinking -+ if test "$opt_mode" = relink; then -+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? -+ fi -+ -+ # Do each of the archive commands. -+ if test "$module" = yes && test -n "$module_cmds" ; then -+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -+ eval test_cmds=\"$module_expsym_cmds\" -+ cmds=$module_expsym_cmds -+ else -+ eval test_cmds=\"$module_cmds\" -+ cmds=$module_cmds -+ fi -+ else -+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -+ eval test_cmds=\"$archive_expsym_cmds\" -+ cmds=$archive_expsym_cmds -+ else -+ eval test_cmds=\"$archive_cmds\" -+ cmds=$archive_cmds -+ fi -+ fi -+ -+ if test "X$skipped_export" != "X:" && -+ func_len " $test_cmds" && -+ len=$func_len_result && -+ test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ : -+ else -+ # The command line is too long to link in one step, link piecewise -+ # or, if using GNU ld and skipped_export is not :, use a linker -+ # script. -+ -+ # Save the value of $output and $libobjs because we want to -+ # use them later. If we have whole_archive_flag_spec, we -+ # want to use save_libobjs as it was before -+ # whole_archive_flag_spec was expanded, because we can't -+ # assume the linker understands whole_archive_flag_spec. -+ # This may have to be revisited, in case too many -+ # convenience libraries get linked in and end up exceeding -+ # the spec. -+ if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then -+ save_libobjs=$libobjs -+ fi -+ save_output=$output -+ func_basename "$output" -+ output_la=$func_basename_result -+ -+ # Clear the reloadable object creation command queue and -+ # initialize k to one. -+ test_cmds= -+ concat_cmds= -+ objlist= -+ last_robj= -+ k=1 -+ -+ if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then -+ output=${output_objdir}/${output_la}.lnkscript -+ func_verbose "creating GNU ld script: $output" -+ echo 'INPUT (' > $output -+ for obj in $save_libobjs -+ do -+ func_to_tool_file "$obj" -+ $ECHO "$func_to_tool_file_result" >> $output -+ done -+ echo ')' >> $output -+ func_append delfiles " $output" -+ func_to_tool_file "$output" -+ output=$func_to_tool_file_result -+ elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then -+ output=${output_objdir}/${output_la}.lnk -+ func_verbose "creating linker input file list: $output" -+ : > $output -+ set x $save_libobjs -+ shift -+ firstobj= -+ if test "$compiler_needs_object" = yes; then -+ firstobj="$1 " -+ shift -+ fi -+ for obj -+ do -+ func_to_tool_file "$obj" -+ $ECHO "$func_to_tool_file_result" >> $output -+ done -+ func_append delfiles " $output" -+ func_to_tool_file "$output" -+ output=$firstobj\"$file_list_spec$func_to_tool_file_result\" -+ else -+ if test -n "$save_libobjs"; then -+ func_verbose "creating reloadable object files..." -+ output=$output_objdir/$output_la-${k}.$objext -+ eval test_cmds=\"$reload_cmds\" -+ func_len " $test_cmds" -+ len0=$func_len_result -+ len=$len0 -+ -+ # Loop over the list of objects to be linked. -+ for obj in $save_libobjs -+ do -+ func_len " $obj" -+ func_arith $len + $func_len_result -+ len=$func_arith_result -+ if test "X$objlist" = X || -+ test "$len" -lt "$max_cmd_len"; then -+ func_append objlist " $obj" -+ else -+ # The command $test_cmds is almost too long, add a -+ # command to the queue. -+ if test "$k" -eq 1 ; then -+ # The first file doesn't have a previous command to add. -+ reload_objs=$objlist -+ eval concat_cmds=\"$reload_cmds\" -+ else -+ # All subsequent reloadable object files will link in -+ # the last one created. -+ reload_objs="$objlist $last_robj" -+ eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" -+ fi -+ last_robj=$output_objdir/$output_la-${k}.$objext -+ func_arith $k + 1 -+ k=$func_arith_result -+ output=$output_objdir/$output_la-${k}.$objext -+ objlist=" $obj" -+ func_len " $last_robj" -+ func_arith $len0 + $func_len_result -+ len=$func_arith_result -+ fi -+ done -+ # Handle the remaining objects by creating one last -+ # reloadable object file. All subsequent reloadable object -+ # files will link in the last one created. -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ reload_objs="$objlist $last_robj" -+ eval concat_cmds=\"\${concat_cmds}$reload_cmds\" -+ if test -n "$last_robj"; then -+ eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" -+ fi -+ func_append delfiles " $output" -+ -+ else -+ output= -+ fi -+ -+ if ${skipped_export-false}; then -+ func_verbose "generating symbol list for \`$libname.la'" -+ export_symbols="$output_objdir/$libname.exp" -+ $opt_dry_run || $RM $export_symbols -+ libobjs=$output -+ # Append the command to create the export file. -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" -+ if test -n "$last_robj"; then -+ eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" -+ fi -+ fi -+ -+ test -n "$save_libobjs" && -+ func_verbose "creating a temporary reloadable object file: $output" -+ -+ # Loop through the commands generated above and execute them. -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $concat_cmds; do -+ IFS="$save_ifs" -+ $opt_silent || { -+ func_quote_for_expand "$cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ $opt_dry_run || eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$opt_mode" = relink; then -+ ( cd "$output_objdir" && \ -+ $RM "${realname}T" && \ -+ $MV "${realname}U" "$realname" ) -+ fi -+ -+ exit $lt_exit -+ } -+ done -+ IFS="$save_ifs" -+ -+ if test -n "$export_symbols_regex" && ${skipped_export-false}; then -+ func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' -+ func_show_eval '$MV "${export_symbols}T" "$export_symbols"' -+ fi -+ fi -+ -+ if ${skipped_export-false}; then -+ if test -n "$export_symbols" && test -n "$include_expsyms"; then -+ tmp_export_symbols="$export_symbols" -+ test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" -+ $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' -+ fi -+ -+ if test -n "$orig_export_symbols"; then -+ # The given exports_symbols file has to be filtered, so filter it. -+ func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" -+ # FIXME: $output_objdir/$libname.filter potentially contains lots of -+ # 's' commands which not all seds can handle. GNU sed should be fine -+ # though. Also, the filter scales superlinearly with the number of -+ # global variables. join(1) would be nice here, but unfortunately -+ # isn't a blessed tool. -+ $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter -+ func_append delfiles " $export_symbols $output_objdir/$libname.filter" -+ export_symbols=$output_objdir/$libname.def -+ $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols -+ fi -+ fi -+ -+ libobjs=$output -+ # Restore the value of output. -+ output=$save_output -+ -+ if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then -+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\" -+ test "X$libobjs" = "X " && libobjs= -+ fi -+ # Expand the library linking commands again to reset the -+ # value of $libobjs for piecewise linking. -+ -+ # Do each of the archive commands. -+ if test "$module" = yes && test -n "$module_cmds" ; then -+ if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then -+ cmds=$module_expsym_cmds -+ else -+ cmds=$module_cmds -+ fi -+ else -+ if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then -+ cmds=$archive_expsym_cmds -+ else -+ cmds=$archive_cmds -+ fi -+ fi -+ fi -+ -+ if test -n "$delfiles"; then -+ # Append the command to remove temporary files to $cmds. -+ eval cmds=\"\$cmds~\$RM $delfiles\" -+ fi -+ -+ # Add any objects from preloaded convenience libraries -+ if test -n "$dlprefiles"; then -+ gentop="$output_objdir/${outputname}x" -+ func_append generated " $gentop" -+ -+ func_extract_archives $gentop $dlprefiles -+ func_append libobjs " $func_extract_archives_result" -+ test "X$libobjs" = "X " && libobjs= -+ fi -+ -+ save_ifs="$IFS"; IFS='~' -+ for cmd in $cmds; do -+ IFS="$save_ifs" -+ eval cmd=\"$cmd\" -+ $opt_silent || { -+ func_quote_for_expand "$cmd" -+ eval "func_echo $func_quote_for_expand_result" -+ } -+ $opt_dry_run || eval "$cmd" || { -+ lt_exit=$? -+ -+ # Restore the uninstalled library and exit -+ if test "$opt_mode" = relink; then -+ ( cd "$output_objdir" && \ -+ $RM "${realname}T" && \ -+ $MV "${realname}U" "$realname" ) -+ fi -+ -+ exit $lt_exit -+ } -+ done -+ IFS="$save_ifs" -+ -+ # Restore the uninstalled library and exit -+ if test "$opt_mode" = relink; then -+ $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? -+ -+ if test -n "$convenience"; then -+ if test -z "$whole_archive_flag_spec"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ fi -+ -+ exit $EXIT_SUCCESS -+ fi -+ -+ # Create links to the real library. -+ for linkname in $linknames; do -+ if test "$realname" != "$linkname"; then -+ func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' -+ fi -+ done -+ -+ # If -module or -export-dynamic was specified, set the dlname. -+ if test "$module" = yes || test "$export_dynamic" = yes; then -+ # On all known operating systems, these are identical. -+ dlname="$soname" -+ fi -+ fi -+ ;; -+ -+ obj) -+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then -+ func_warning "\`-dlopen' is ignored for objects" -+ fi -+ -+ case " $deplibs" in -+ *\ -l* | *\ -L*) -+ func_warning "\`-l' and \`-L' are ignored for objects" ;; -+ esac -+ -+ test -n "$rpath" && \ -+ func_warning "\`-rpath' is ignored for objects" -+ -+ test -n "$xrpath" && \ -+ func_warning "\`-R' is ignored for objects" -+ -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info' is ignored for objects" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for objects" -+ -+ case $output in -+ *.lo) -+ test -n "$objs$old_deplibs" && \ -+ func_fatal_error "cannot build library object \`$output' from non-libtool objects" -+ -+ libobj=$output -+ func_lo2o "$libobj" -+ obj=$func_lo2o_result -+ ;; -+ *) -+ libobj= -+ obj="$output" -+ ;; -+ esac -+ -+ # Delete the old objects. -+ $opt_dry_run || $RM $obj $libobj -+ -+ # Objects from convenience libraries. This assumes -+ # single-version convenience libraries. Whenever we create -+ # different ones for PIC/non-PIC, this we'll have to duplicate -+ # the extraction. -+ reload_conv_objs= -+ gentop= -+ # reload_cmds runs $LD directly, so let us get rid of -+ # -Wl from whole_archive_flag_spec and hope we can get by with -+ # turning comma into space.. -+ wl= -+ -+ if test -n "$convenience"; then -+ if test -n "$whole_archive_flag_spec"; then -+ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" -+ reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` -+ else -+ gentop="$output_objdir/${obj}x" -+ func_append generated " $gentop" -+ -+ func_extract_archives $gentop $convenience -+ reload_conv_objs="$reload_objs $func_extract_archives_result" -+ fi -+ fi -+ -+ # If we're not building shared, we need to use non_pic_objs -+ test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" -+ -+ # Create the old-style object. -+ reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test -+ -+ output="$obj" -+ func_execute_cmds "$reload_cmds" 'exit $?' -+ -+ # Exit if we aren't doing a library object file. -+ if test -z "$libobj"; then -+ if test -n "$gentop"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test "$build_libtool_libs" != yes; then -+ if test -n "$gentop"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ -+ # Create an invalid libtool object if no PIC, so that we don't -+ # accidentally link it into a program. -+ # $show "echo timestamp > $libobj" -+ # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test -n "$pic_flag" || test "$pic_mode" != default; then -+ # Only do commands if we really have different PIC objects. -+ reload_objs="$libobjs $reload_conv_objs" -+ output="$libobj" -+ func_execute_cmds "$reload_cmds" 'exit $?' -+ fi -+ -+ if test -n "$gentop"; then -+ func_show_eval '${RM}r "$gentop"' -+ fi -+ -+ exit $EXIT_SUCCESS -+ ;; -+ -+ prog) -+ case $host in -+ *cygwin*) func_stripname '' '.exe' "$output" -+ output=$func_stripname_result.exe;; -+ esac -+ test -n "$vinfo" && \ -+ func_warning "\`-version-info' is ignored for programs" -+ -+ test -n "$release" && \ -+ func_warning "\`-release' is ignored for programs" -+ -+ test "$preload" = yes \ -+ && test "$dlopen_support" = unknown \ -+ && test "$dlopen_self" = unknown \ -+ && test "$dlopen_self_static" = unknown && \ -+ func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." -+ -+ case $host in -+ *-*-rhapsody* | *-*-darwin1.[012]) -+ # On Rhapsody replace the C library is the System framework -+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` -+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` -+ ;; -+ esac -+ -+ case $host in -+ *-*-darwin*) -+ # Don't allow lazy linking, it breaks C++ global constructors -+ # But is supposedly fixed on 10.4 or later (yay!). -+ if test "$tagname" = CXX ; then -+ case ${MACOSX_DEPLOYMENT_TARGET-10.0} in -+ 10.[0123]) -+ func_append compile_command " ${wl}-bind_at_load" -+ func_append finalize_command " ${wl}-bind_at_load" -+ ;; -+ esac -+ fi -+ # Time to change all our "foo.ltframework" stuff back to "-framework foo" -+ compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` -+ ;; -+ esac -+ -+ -+ # move library search paths that coincide with paths to not yet -+ # installed libraries to the beginning of the library search list -+ new_libs= -+ for path in $notinst_path; do -+ case " $new_libs " in -+ *" -L$path/$objdir "*) ;; -+ *) -+ case " $compile_deplibs " in -+ *" -L$path/$objdir "*) -+ func_append new_libs " -L$path/$objdir" ;; -+ esac -+ ;; -+ esac -+ done -+ for deplib in $compile_deplibs; do -+ case $deplib in -+ -L*) -+ case " $new_libs " in -+ *" $deplib "*) ;; -+ *) func_append new_libs " $deplib" ;; -+ esac -+ ;; -+ *) func_append new_libs " $deplib" ;; -+ esac -+ done -+ compile_deplibs="$new_libs" -+ -+ -+ func_append compile_command " $compile_deplibs" -+ func_append finalize_command " $finalize_deplibs" -+ -+ if test -n "$rpath$xrpath"; then -+ # If the user specified any rpath flags, then add them. -+ for libdir in $rpath $xrpath; do -+ # This is the magic to use -rpath. -+ case "$finalize_rpath " in -+ *" $libdir "*) ;; -+ *) func_append finalize_rpath " $libdir" ;; -+ esac -+ done -+ fi -+ -+ # Now hardcode the library paths -+ rpath= -+ hardcode_libdirs= -+ for libdir in $compile_rpath $finalize_rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ func_append rpath " $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$perm_rpath " in -+ *" $libdir "*) ;; -+ *) func_append perm_rpath " $libdir" ;; -+ esac -+ fi -+ case $host in -+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) -+ testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` -+ case :$dllsearchpath: in -+ *":$libdir:"*) ;; -+ ::) dllsearchpath=$libdir;; -+ *) func_append dllsearchpath ":$libdir";; -+ esac -+ case :$dllsearchpath: in -+ *":$testbindir:"*) ;; -+ ::) dllsearchpath=$testbindir;; -+ *) func_append dllsearchpath ":$testbindir";; -+ esac -+ ;; -+ esac -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ eval rpath=\" $hardcode_libdir_flag_spec\" -+ fi -+ compile_rpath="$rpath" -+ -+ rpath= -+ hardcode_libdirs= -+ for libdir in $finalize_rpath; do -+ if test -n "$hardcode_libdir_flag_spec"; then -+ if test -n "$hardcode_libdir_separator"; then -+ if test -z "$hardcode_libdirs"; then -+ hardcode_libdirs="$libdir" -+ else -+ # Just accumulate the unique libdirs. -+ case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in -+ *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) -+ ;; -+ *) -+ func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" -+ ;; -+ esac -+ fi -+ else -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ func_append rpath " $flag" -+ fi -+ elif test -n "$runpath_var"; then -+ case "$finalize_perm_rpath " in -+ *" $libdir "*) ;; -+ *) func_append finalize_perm_rpath " $libdir" ;; -+ esac -+ fi -+ done -+ # Substitute the hardcoded libdirs into the rpath. -+ if test -n "$hardcode_libdir_separator" && -+ test -n "$hardcode_libdirs"; then -+ libdir="$hardcode_libdirs" -+ eval rpath=\" $hardcode_libdir_flag_spec\" -+ fi -+ finalize_rpath="$rpath" -+ -+ if test -n "$libobjs" && test "$build_old_libs" = yes; then -+ # Transform all the library objects into standard objects. -+ compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` -+ finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` -+ fi -+ -+ func_generate_dlsyms "$outputname" "@PROGRAM@" "no" -+ -+ # template prelinking step -+ if test -n "$prelink_cmds"; then -+ func_execute_cmds "$prelink_cmds" 'exit $?' -+ fi -+ -+ wrappers_required=yes -+ case $host in -+ *cegcc* | *mingw32ce*) -+ # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. -+ wrappers_required=no -+ ;; -+ *cygwin* | *mingw* ) -+ if test "$build_libtool_libs" != yes; then -+ wrappers_required=no -+ fi -+ ;; -+ *) -+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then -+ wrappers_required=no -+ fi -+ ;; -+ esac -+ if test "$wrappers_required" = no; then -+ # Replace the output file specification. -+ compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` -+ link_command="$compile_command$compile_rpath" -+ -+ # We have no uninstalled library dependencies, so finalize right now. -+ exit_status=0 -+ func_show_eval "$link_command" 'exit_status=$?' -+ -+ if test -n "$postlink_cmds"; then -+ func_to_tool_file "$output" -+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` -+ func_execute_cmds "$postlink_cmds" 'exit $?' -+ fi -+ -+ # Delete the generated files. -+ if test -f "$output_objdir/${outputname}S.${objext}"; then -+ func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' -+ fi -+ -+ exit $exit_status -+ fi -+ -+ if test -n "$compile_shlibpath$finalize_shlibpath"; then -+ compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" -+ fi -+ if test -n "$finalize_shlibpath"; then -+ finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" -+ fi -+ -+ compile_var= -+ finalize_var= -+ if test -n "$runpath_var"; then -+ if test -n "$perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $perm_rpath; do -+ func_append rpath "$dir:" -+ done -+ compile_var="$runpath_var=\"$rpath\$$runpath_var\" " -+ fi -+ if test -n "$finalize_perm_rpath"; then -+ # We should set the runpath_var. -+ rpath= -+ for dir in $finalize_perm_rpath; do -+ func_append rpath "$dir:" -+ done -+ finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " -+ fi -+ fi -+ -+ if test "$no_install" = yes; then -+ # We don't need to create a wrapper script. -+ link_command="$compile_var$compile_command$compile_rpath" -+ # Replace the output file specification. -+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` -+ # Delete the old output file. -+ $opt_dry_run || $RM $output -+ # Link the executable and exit -+ func_show_eval "$link_command" 'exit $?' -+ -+ if test -n "$postlink_cmds"; then -+ func_to_tool_file "$output" -+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` -+ func_execute_cmds "$postlink_cmds" 'exit $?' -+ fi -+ -+ exit $EXIT_SUCCESS -+ fi -+ -+ if test "$hardcode_action" = relink; then -+ # Fast installation is not supported -+ link_command="$compile_var$compile_command$compile_rpath" -+ relink_command="$finalize_var$finalize_command$finalize_rpath" -+ -+ func_warning "this platform does not like uninstalled shared libraries" -+ func_warning "\`$output' will be relinked during installation" -+ else -+ if test "$fast_install" != no; then -+ link_command="$finalize_var$compile_command$finalize_rpath" -+ if test "$fast_install" = yes; then -+ relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` -+ else -+ # fast_install is set to needless -+ relink_command= -+ fi -+ else -+ link_command="$compile_var$compile_command$compile_rpath" -+ relink_command="$finalize_var$finalize_command$finalize_rpath" -+ fi -+ fi -+ -+ # Replace the output file specification. -+ link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` -+ -+ # Delete the old output files. -+ $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname -+ -+ func_show_eval "$link_command" 'exit $?' -+ -+ if test -n "$postlink_cmds"; then -+ func_to_tool_file "$output_objdir/$outputname" -+ postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` -+ func_execute_cmds "$postlink_cmds" 'exit $?' -+ fi -+ -+ # Now create the wrapper script. -+ func_verbose "creating $output" -+ -+ # Quote the relink command for shipping. -+ if test -n "$relink_command"; then -+ # Preserve any variables that may affect compiler behavior -+ for var in $variables_saved_for_relink; do -+ if eval test -z \"\${$var+set}\"; then -+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" -+ elif eval var_value=\$$var; test -z "$var_value"; then -+ relink_command="$var=; export $var; $relink_command" -+ else -+ func_quote_for_eval "$var_value" -+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" -+ fi -+ done -+ relink_command="(cd `pwd`; $relink_command)" -+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` -+ fi -+ -+ # Only actually do things if not in dry run mode. -+ $opt_dry_run || { -+ # win32 will think the script is a binary if it has -+ # a .exe suffix, so we strip it off here. -+ case $output in -+ *.exe) func_stripname '' '.exe' "$output" -+ output=$func_stripname_result ;; -+ esac -+ # test for cygwin because mv fails w/o .exe extensions -+ case $host in -+ *cygwin*) -+ exeext=.exe -+ func_stripname '' '.exe' "$outputname" -+ outputname=$func_stripname_result ;; -+ *) exeext= ;; -+ esac -+ case $host in -+ *cygwin* | *mingw* ) -+ func_dirname_and_basename "$output" "" "." -+ output_name=$func_basename_result -+ output_path=$func_dirname_result -+ cwrappersource="$output_path/$objdir/lt-$output_name.c" -+ cwrapper="$output_path/$output_name.exe" -+ $RM $cwrappersource $cwrapper -+ trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 -+ -+ func_emit_cwrapperexe_src > $cwrappersource -+ -+ # The wrapper executable is built using the $host compiler, -+ # because it contains $host paths and files. If cross- -+ # compiling, it, like the target executable, must be -+ # executed on the $host or under an emulation environment. -+ $opt_dry_run || { -+ $LTCC $LTCFLAGS -o $cwrapper $cwrappersource -+ $STRIP $cwrapper -+ } -+ -+ # Now, create the wrapper script for func_source use: -+ func_ltwrapper_scriptname $cwrapper -+ $RM $func_ltwrapper_scriptname_result -+ trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 -+ $opt_dry_run || { -+ # note: this script will not be executed, so do not chmod. -+ if test "x$build" = "x$host" ; then -+ $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result -+ else -+ func_emit_wrapper no > $func_ltwrapper_scriptname_result -+ fi -+ } -+ ;; -+ * ) -+ $RM $output -+ trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 -+ -+ func_emit_wrapper no > $output -+ chmod +x $output -+ ;; -+ esac -+ } -+ exit $EXIT_SUCCESS -+ ;; -+ esac -+ -+ # See if we need to build an old-fashioned archive. -+ for oldlib in $oldlibs; do -+ -+ if test "$build_libtool_libs" = convenience; then -+ oldobjs="$libobjs_save $symfileobj" -+ addlibs="$convenience" -+ build_libtool_libs=no -+ else -+ if test "$build_libtool_libs" = module; then -+ oldobjs="$libobjs_save" -+ build_libtool_libs=no -+ else -+ oldobjs="$old_deplibs $non_pic_objects" -+ if test "$preload" = yes && test -f "$symfileobj"; then -+ func_append oldobjs " $symfileobj" -+ fi -+ fi -+ addlibs="$old_convenience" -+ fi -+ -+ if test -n "$addlibs"; then -+ gentop="$output_objdir/${outputname}x" -+ func_append generated " $gentop" -+ -+ func_extract_archives $gentop $addlibs -+ func_append oldobjs " $func_extract_archives_result" -+ fi -+ -+ # Do each command in the archive commands. -+ if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then -+ cmds=$old_archive_from_new_cmds -+ else -+ -+ # Add any objects from preloaded convenience libraries -+ if test -n "$dlprefiles"; then -+ gentop="$output_objdir/${outputname}x" -+ func_append generated " $gentop" -+ -+ func_extract_archives $gentop $dlprefiles -+ func_append oldobjs " $func_extract_archives_result" -+ fi -+ -+ # POSIX demands no paths to be encoded in archives. We have -+ # to avoid creating archives with duplicate basenames if we -+ # might have to extract them afterwards, e.g., when creating a -+ # static archive out of a convenience library, or when linking -+ # the entirety of a libtool archive into another (currently -+ # not supported by libtool). -+ if (for obj in $oldobjs -+ do -+ func_basename "$obj" -+ $ECHO "$func_basename_result" -+ done | sort | sort -uc >/dev/null 2>&1); then -+ : -+ else -+ echo "copying selected object files to avoid basename conflicts..." -+ gentop="$output_objdir/${outputname}x" -+ func_append generated " $gentop" -+ func_mkdir_p "$gentop" -+ save_oldobjs=$oldobjs -+ oldobjs= -+ counter=1 -+ for obj in $save_oldobjs -+ do -+ func_basename "$obj" -+ objbase="$func_basename_result" -+ case " $oldobjs " in -+ " ") oldobjs=$obj ;; -+ *[\ /]"$objbase "*) -+ while :; do -+ # Make sure we don't pick an alternate name that also -+ # overlaps. -+ newobj=lt$counter-$objbase -+ func_arith $counter + 1 -+ counter=$func_arith_result -+ case " $oldobjs " in -+ *[\ /]"$newobj "*) ;; -+ *) if test ! -f "$gentop/$newobj"; then break; fi ;; -+ esac -+ done -+ func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" -+ func_append oldobjs " $gentop/$newobj" -+ ;; -+ *) func_append oldobjs " $obj" ;; -+ esac -+ done -+ fi -+ func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 -+ tool_oldlib=$func_to_tool_file_result -+ eval cmds=\"$old_archive_cmds\" -+ -+ func_len " $cmds" -+ len=$func_len_result -+ if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then -+ cmds=$old_archive_cmds -+ elif test -n "$archiver_list_spec"; then -+ func_verbose "using command file archive linking..." -+ for obj in $oldobjs -+ do -+ func_to_tool_file "$obj" -+ $ECHO "$func_to_tool_file_result" -+ done > $output_objdir/$libname.libcmd -+ func_to_tool_file "$output_objdir/$libname.libcmd" -+ oldobjs=" $archiver_list_spec$func_to_tool_file_result" -+ cmds=$old_archive_cmds -+ else -+ # the command line is too long to link in one step, link in parts -+ func_verbose "using piecewise archive linking..." -+ save_RANLIB=$RANLIB -+ RANLIB=: -+ objlist= -+ concat_cmds= -+ save_oldobjs=$oldobjs -+ oldobjs= -+ # Is there a better way of finding the last object in the list? -+ for obj in $save_oldobjs -+ do -+ last_oldobj=$obj -+ done -+ eval test_cmds=\"$old_archive_cmds\" -+ func_len " $test_cmds" -+ len0=$func_len_result -+ len=$len0 -+ for obj in $save_oldobjs -+ do -+ func_len " $obj" -+ func_arith $len + $func_len_result -+ len=$func_arith_result -+ func_append objlist " $obj" -+ if test "$len" -lt "$max_cmd_len"; then -+ : -+ else -+ # the above command should be used before it gets too long -+ oldobjs=$objlist -+ if test "$obj" = "$last_oldobj" ; then -+ RANLIB=$save_RANLIB -+ fi -+ test -z "$concat_cmds" || concat_cmds=$concat_cmds~ -+ eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" -+ objlist= -+ len=$len0 -+ fi -+ done -+ RANLIB=$save_RANLIB -+ oldobjs=$objlist -+ if test "X$oldobjs" = "X" ; then -+ eval cmds=\"\$concat_cmds\" -+ else -+ eval cmds=\"\$concat_cmds~\$old_archive_cmds\" -+ fi -+ fi -+ fi -+ func_execute_cmds "$cmds" 'exit $?' -+ done -+ -+ test -n "$generated" && \ -+ func_show_eval "${RM}r$generated" -+ -+ # Now create the libtool archive. -+ case $output in -+ *.la) -+ old_library= -+ test "$build_old_libs" = yes && old_library="$libname.$libext" -+ func_verbose "creating $output" -+ -+ # Preserve any variables that may affect compiler behavior -+ for var in $variables_saved_for_relink; do -+ if eval test -z \"\${$var+set}\"; then -+ relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" -+ elif eval var_value=\$$var; test -z "$var_value"; then -+ relink_command="$var=; export $var; $relink_command" -+ else -+ func_quote_for_eval "$var_value" -+ relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" -+ fi -+ done -+ # Quote the link command for shipping. -+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" -+ relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` -+ if test "$hardcode_automatic" = yes ; then -+ relink_command= -+ fi -+ -+ # Only create the output if not a dry run. -+ $opt_dry_run || { -+ for installed in no yes; do -+ if test "$installed" = yes; then -+ if test -z "$install_libdir"; then -+ break -+ fi -+ output="$output_objdir/$outputname"i -+ # Replace all uninstalled libtool libraries with the installed ones -+ newdependency_libs= -+ for deplib in $dependency_libs; do -+ case $deplib in -+ *.la) -+ func_basename "$deplib" -+ name="$func_basename_result" -+ func_resolve_sysroot "$deplib" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$deplib' is not a valid libtool archive" -+ func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" -+ ;; -+ -L*) -+ func_stripname -L '' "$deplib" -+ func_replace_sysroot "$func_stripname_result" -+ func_append newdependency_libs " -L$func_replace_sysroot_result" -+ ;; -+ -R*) -+ func_stripname -R '' "$deplib" -+ func_replace_sysroot "$func_stripname_result" -+ func_append newdependency_libs " -R$func_replace_sysroot_result" -+ ;; -+ *) func_append newdependency_libs " $deplib" ;; -+ esac -+ done -+ dependency_libs="$newdependency_libs" -+ newdlfiles= -+ -+ for lib in $dlfiles; do -+ case $lib in -+ *.la) -+ func_basename "$lib" -+ name="$func_basename_result" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$lib' is not a valid libtool archive" -+ func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" -+ ;; -+ *) func_append newdlfiles " $lib" ;; -+ esac -+ done -+ dlfiles="$newdlfiles" -+ newdlprefiles= -+ for lib in $dlprefiles; do -+ case $lib in -+ *.la) -+ # Only pass preopened files to the pseudo-archive (for -+ # eventual linking with the app. that links it) if we -+ # didn't already link the preopened objects directly into -+ # the library: -+ func_basename "$lib" -+ name="$func_basename_result" -+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` -+ test -z "$libdir" && \ -+ func_fatal_error "\`$lib' is not a valid libtool archive" -+ func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" -+ ;; -+ esac -+ done -+ dlprefiles="$newdlprefiles" -+ else -+ newdlfiles= -+ for lib in $dlfiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ func_append newdlfiles " $abs" -+ done -+ dlfiles="$newdlfiles" -+ newdlprefiles= -+ for lib in $dlprefiles; do -+ case $lib in -+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; -+ *) abs=`pwd`"/$lib" ;; -+ esac -+ func_append newdlprefiles " $abs" -+ done -+ dlprefiles="$newdlprefiles" -+ fi -+ $RM $output -+ # place dlname in correct position for cygwin -+ # In fact, it would be nice if we could use this code for all target -+ # systems that can't hard-code library paths into their executables -+ # and that have no shared library path variable independent of PATH, -+ # but it turns out we can't easily determine that from inspecting -+ # libtool variables, so we have to hard-code the OSs to which it -+ # applies here; at the moment, that means platforms that use the PE -+ # object format with DLL files. See the long comment at the top of -+ # tests/bindir.at for full details. -+ tdlname=$dlname -+ case $host,$output,$installed,$module,$dlname in -+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) -+ # If a -bindir argument was supplied, place the dll there. -+ if test "x$bindir" != x ; -+ then -+ func_relative_path "$install_libdir" "$bindir" -+ tdlname=$func_relative_path_result$dlname -+ else -+ # Otherwise fall back on heuristic. -+ tdlname=../bin/$dlname -+ fi -+ ;; -+ esac -+ $ECHO > $output "\ -+# $outputname - a libtool library file -+# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -+# -+# Please DO NOT delete this file! -+# It is necessary for linking the library. -+ -+# The name that we can dlopen(3). -+dlname='$tdlname' -+ -+# Names of this library. -+library_names='$library_names' -+ -+# The name of the static archive. -+old_library='$old_library' -+ -+# Linker flags that can not go in dependency_libs. -+inherited_linker_flags='$new_inherited_linker_flags' -+ -+# Libraries that this one depends upon. -+dependency_libs='$dependency_libs' -+ -+# Names of additional weak libraries provided by this library -+weak_library_names='$weak_libs' -+ -+# Version information for $libname. -+current=$current -+age=$age -+revision=$revision -+ -+# Is this an already installed library? -+installed=$installed -+ -+# Should we warn about portability when linking against -modules? -+shouldnotlink=$module -+ -+# Files to dlopen/dlpreopen -+dlopen='$dlfiles' -+dlpreopen='$dlprefiles' -+ -+# Directory that this library needs to be installed in: -+libdir='$install_libdir'" -+ if test "$installed" = no && test "$need_relink" = yes; then -+ $ECHO >> $output "\ -+relink_command=\"$relink_command\"" -+ fi -+ done -+ } -+ -+ # Do a symbolic link so that the libtool archive can be found in -+ # LD_LIBRARY_PATH before the program is installed. -+ func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' -+ ;; -+ esac -+ exit $EXIT_SUCCESS -+} -+ -+{ test "$opt_mode" = link || test "$opt_mode" = relink; } && -+ func_mode_link ${1+"$@"} -+ -+ -+# func_mode_uninstall arg... -+func_mode_uninstall () -+{ -+ $opt_debug -+ RM="$nonopt" -+ files= -+ rmforce= -+ exit_status=0 -+ -+ # This variable tells wrapper scripts just to set variables rather -+ # than running their programs. -+ libtool_install_magic="$magic" -+ -+ for arg -+ do -+ case $arg in -+ -f) func_append RM " $arg"; rmforce=yes ;; -+ -*) func_append RM " $arg" ;; -+ *) func_append files " $arg" ;; -+ esac -+ done -+ -+ test -z "$RM" && \ -+ func_fatal_help "you must specify an RM program" -+ -+ rmdirs= -+ -+ for file in $files; do -+ func_dirname "$file" "" "." -+ dir="$func_dirname_result" -+ if test "X$dir" = X.; then -+ odir="$objdir" -+ else -+ odir="$dir/$objdir" -+ fi -+ func_basename "$file" -+ name="$func_basename_result" -+ test "$opt_mode" = uninstall && odir="$dir" -+ -+ # Remember odir for removal later, being careful to avoid duplicates -+ if test "$opt_mode" = clean; then -+ case " $rmdirs " in -+ *" $odir "*) ;; -+ *) func_append rmdirs " $odir" ;; -+ esac -+ fi -+ -+ # Don't error if the file doesn't exist and rm -f was used. -+ if { test -L "$file"; } >/dev/null 2>&1 || -+ { test -h "$file"; } >/dev/null 2>&1 || -+ test -f "$file"; then -+ : -+ elif test -d "$file"; then -+ exit_status=1 -+ continue -+ elif test "$rmforce" = yes; then -+ continue -+ fi -+ -+ rmfiles="$file" -+ -+ case $name in -+ *.la) -+ # Possibly a libtool archive, so verify it. -+ if func_lalib_p "$file"; then -+ func_source $dir/$name -+ -+ # Delete the libtool libraries and symlinks. -+ for n in $library_names; do -+ func_append rmfiles " $odir/$n" -+ done -+ test -n "$old_library" && func_append rmfiles " $odir/$old_library" -+ -+ case "$opt_mode" in -+ clean) -+ case " $library_names " in -+ *" $dlname "*) ;; -+ *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; -+ esac -+ test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" -+ ;; -+ uninstall) -+ if test -n "$library_names"; then -+ # Do each command in the postuninstall commands. -+ func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' -+ fi -+ -+ if test -n "$old_library"; then -+ # Do each command in the old_postuninstall commands. -+ func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' -+ fi -+ # FIXME: should reinstall the best remaining shared library. -+ ;; -+ esac -+ fi -+ ;; -+ -+ *.lo) -+ # Possibly a libtool object, so verify it. -+ if func_lalib_p "$file"; then -+ -+ # Read the .lo file -+ func_source $dir/$name -+ -+ # Add PIC object to the list of files to remove. -+ if test -n "$pic_object" && -+ test "$pic_object" != none; then -+ func_append rmfiles " $dir/$pic_object" -+ fi -+ -+ # Add non-PIC object to the list of files to remove. -+ if test -n "$non_pic_object" && -+ test "$non_pic_object" != none; then -+ func_append rmfiles " $dir/$non_pic_object" -+ fi -+ fi -+ ;; -+ -+ *) -+ if test "$opt_mode" = clean ; then -+ noexename=$name -+ case $file in -+ *.exe) -+ func_stripname '' '.exe' "$file" -+ file=$func_stripname_result -+ func_stripname '' '.exe' "$name" -+ noexename=$func_stripname_result -+ # $file with .exe has already been added to rmfiles, -+ # add $file without .exe -+ func_append rmfiles " $file" -+ ;; -+ esac -+ # Do a test to see if this is a libtool program. -+ if func_ltwrapper_p "$file"; then -+ if func_ltwrapper_executable_p "$file"; then -+ func_ltwrapper_scriptname "$file" -+ relink_command= -+ func_source $func_ltwrapper_scriptname_result -+ func_append rmfiles " $func_ltwrapper_scriptname_result" -+ else -+ relink_command= -+ func_source $dir/$noexename -+ fi -+ -+ # note $name still contains .exe if it was in $file originally -+ # as does the version of $file that was added into $rmfiles -+ func_append rmfiles " $odir/$name $odir/${name}S.${objext}" -+ if test "$fast_install" = yes && test -n "$relink_command"; then -+ func_append rmfiles " $odir/lt-$name" -+ fi -+ if test "X$noexename" != "X$name" ; then -+ func_append rmfiles " $odir/lt-${noexename}.c" -+ fi -+ fi -+ fi -+ ;; -+ esac -+ func_show_eval "$RM $rmfiles" 'exit_status=1' -+ done -+ -+ # Try to remove the ${objdir}s in the directories where we deleted files -+ for dir in $rmdirs; do -+ if test -d "$dir"; then -+ func_show_eval "rmdir $dir >/dev/null 2>&1" -+ fi -+ done -+ -+ exit $exit_status -+} -+ -+{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && -+ func_mode_uninstall ${1+"$@"} -+ -+test -z "$opt_mode" && { -+ help="$generic_help" -+ func_fatal_help "you must specify a MODE" -+} -+ -+test -z "$exec_cmd" && \ -+ func_fatal_help "invalid operation mode \`$opt_mode'" -+ -+if test -n "$exec_cmd"; then -+ eval exec "$exec_cmd" -+ exit $EXIT_FAILURE -+fi -+ -+exit $exit_status -+ -+ -+# The TAGs below are defined such that we never get into a situation -+# in which we disable both kinds of libraries. Given conflicting -+# choices, we go for a static library, that is the most portable, -+# since we can't tell whether shared libraries were disabled because -+# the user asked for that or because the platform doesn't support -+# them. This is particularly important on AIX, because we don't -+# support having both static and shared libraries enabled at the same -+# time on that platform, so we default to a shared-only configuration. -+# If a disable-shared tag is given, we'll fallback to a static-only -+# configuration. But we'll never go from static-only to shared-only. -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -+build_libtool_libs=no -+build_old_libs=yes -+# ### END LIBTOOL TAG CONFIG: disable-shared -+ -+# ### BEGIN LIBTOOL TAG CONFIG: disable-static -+build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -+# ### END LIBTOOL TAG CONFIG: disable-static -+ -+# Local Variables: -+# mode:shell-script -+# sh-indentation:2 -+# End: -+# vi:sw=2 -+ -diff --git a/libclamav/libmspack-0.4alpha/m4/libtool.m4 b/libclamav/libmspack-0.4alpha/m4/libtool.m4 -new file mode 100644 -index 000000000000..828104cfde21 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/m4/libtool.m4 -@@ -0,0 +1,8001 @@ -+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -+# -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -+# Foundation, Inc. -+# Written by Gordon Matzigkeit, 1996 -+# -+# This file is free software; the Free Software Foundation gives -+# unlimited permission to copy and/or distribute it, with or without -+# modifications, as long as this notice is preserved. -+ -+m4_define([_LT_COPYING], [dnl -+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -+# 2006, 2007, 2008, 2009, 2010, 2011 Free Software -+# Foundation, Inc. -+# Written by Gordon Matzigkeit, 1996 -+# -+# This file is part of GNU Libtool. -+# -+# GNU Libtool is free software; you can redistribute it and/or -+# modify it under the terms of the GNU General Public License as -+# published by the Free Software Foundation; either version 2 of -+# the License, or (at your option) any later version. -+# -+# As a special exception to the GNU General Public License, -+# if you distribute this file as part of a program or library that -+# is built using GNU Libtool, you may include this file under the -+# same distribution terms that you use for the rest of that program. -+# -+# GNU Libtool is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+# -+# You should have received a copy of the GNU General Public License -+# along with GNU Libtool; see the file COPYING. If not, a copy -+# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -+# obtained by writing to the Free Software Foundation, Inc., -+# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -+]) -+ -+# serial 57 LT_INIT -+ -+ -+# LT_PREREQ(VERSION) -+# ------------------ -+# Complain and exit if this libtool version is less that VERSION. -+m4_defun([LT_PREREQ], -+[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, -+ [m4_default([$3], -+ [m4_fatal([Libtool version $1 or higher is required], -+ 63)])], -+ [$2])]) -+ -+ -+# _LT_CHECK_BUILDDIR -+# ------------------ -+# Complain if the absolute build directory name contains unusual characters -+m4_defun([_LT_CHECK_BUILDDIR], -+[case `pwd` in -+ *\ * | *\ *) -+ AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -+esac -+]) -+ -+ -+# LT_INIT([OPTIONS]) -+# ------------------ -+AC_DEFUN([LT_INIT], -+[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -+AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -+AC_BEFORE([$0], [LT_LANG])dnl -+AC_BEFORE([$0], [LT_OUTPUT])dnl -+AC_BEFORE([$0], [LTDL_INIT])dnl -+m4_require([_LT_CHECK_BUILDDIR])dnl -+ -+dnl Autoconf doesn't catch unexpanded LT_ macros by default: -+m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -+m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -+dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -+dnl unless we require an AC_DEFUNed macro: -+AC_REQUIRE([LTOPTIONS_VERSION])dnl -+AC_REQUIRE([LTSUGAR_VERSION])dnl -+AC_REQUIRE([LTVERSION_VERSION])dnl -+AC_REQUIRE([LTOBSOLETE_VERSION])dnl -+m4_require([_LT_PROG_LTMAIN])dnl -+ -+_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) -+ -+dnl Parse OPTIONS -+_LT_SET_OPTIONS([$0], [$1]) -+ -+# This can be used to rebuild libtool when needed -+LIBTOOL_DEPS="$ltmain" -+ -+# Always use our own libtool. -+LIBTOOL='$(SHELL) $(top_builddir)/libtool' -+AC_SUBST(LIBTOOL)dnl -+ -+_LT_SETUP -+ -+# Only expand once: -+m4_define([LT_INIT]) -+])# LT_INIT -+ -+# Old names: -+AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -+AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -+dnl AC_DEFUN([AM_PROG_LIBTOOL], []) -+ -+ -+# _LT_CC_BASENAME(CC) -+# ------------------- -+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -+m4_defun([_LT_CC_BASENAME], -+[for cc_temp in $1""; do -+ case $cc_temp in -+ compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; -+ distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; -+ \-*) ;; -+ *) break;; -+ esac -+done -+cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -+]) -+ -+ -+# _LT_FILEUTILS_DEFAULTS -+# ---------------------- -+# It is okay to use these file commands and assume they have been set -+# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -+m4_defun([_LT_FILEUTILS_DEFAULTS], -+[: ${CP="cp -f"} -+: ${MV="mv -f"} -+: ${RM="rm -f"} -+])# _LT_FILEUTILS_DEFAULTS -+ -+ -+# _LT_SETUP -+# --------- -+m4_defun([_LT_SETUP], -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl -+AC_REQUIRE([AC_CANONICAL_BUILD])dnl -+AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl -+ -+_LT_DECL([], [PATH_SEPARATOR], [1], [The PATH separator for the build system])dnl -+dnl -+_LT_DECL([], [host_alias], [0], [The host system])dnl -+_LT_DECL([], [host], [0])dnl -+_LT_DECL([], [host_os], [0])dnl -+dnl -+_LT_DECL([], [build_alias], [0], [The build system])dnl -+_LT_DECL([], [build], [0])dnl -+_LT_DECL([], [build_os], [0])dnl -+dnl -+AC_REQUIRE([AC_PROG_CC])dnl -+AC_REQUIRE([LT_PATH_LD])dnl -+AC_REQUIRE([LT_PATH_NM])dnl -+dnl -+AC_REQUIRE([AC_PROG_LN_S])dnl -+test -z "$LN_S" && LN_S="ln -s" -+_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -+dnl -+AC_REQUIRE([LT_CMD_MAX_LEN])dnl -+_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -+_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -+dnl -+m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+m4_require([_LT_CHECK_SHELL_FEATURES])dnl -+m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -+m4_require([_LT_CMD_RELOAD])dnl -+m4_require([_LT_CHECK_MAGIC_METHOD])dnl -+m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -+m4_require([_LT_CMD_OLD_ARCHIVE])dnl -+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -+m4_require([_LT_WITH_SYSROOT])dnl -+ -+_LT_CONFIG_LIBTOOL_INIT([ -+# See if we are running on zsh, and set the options which allow our -+# commands through without removal of \ escapes INIT. -+if test -n "\${ZSH_VERSION+set}" ; then -+ setopt NO_GLOB_SUBST -+fi -+]) -+if test -n "${ZSH_VERSION+set}" ; then -+ setopt NO_GLOB_SUBST -+fi -+ -+_LT_CHECK_OBJDIR -+ -+m4_require([_LT_TAG_COMPILER])dnl -+ -+case $host_os in -+aix3*) -+ # AIX sometimes has problems with the GCC collect2 program. For some -+ # reason, if we set the COLLECT_NAMES environment variable, the problems -+ # vanish in a puff of smoke. -+ if test "X${COLLECT_NAMES+set}" != Xset; then -+ COLLECT_NAMES= -+ export COLLECT_NAMES -+ fi -+ ;; -+esac -+ -+# Global variables: -+ofile=libtool -+can_build_shared=yes -+ -+# All known linkers require a `.a' archive for static linking (except MSVC, -+# which needs '.lib'). -+libext=a -+ -+with_gnu_ld="$lt_cv_prog_gnu_ld" -+ -+old_CC="$CC" -+old_CFLAGS="$CFLAGS" -+ -+# Set sane defaults for various variables -+test -z "$CC" && CC=cc -+test -z "$LTCC" && LTCC=$CC -+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -+test -z "$LD" && LD=ld -+test -z "$ac_objext" && ac_objext=o -+ -+_LT_CC_BASENAME([$compiler]) -+ -+# Only perform the check for file, if the check method requires it -+test -z "$MAGIC_CMD" && MAGIC_CMD=file -+case $deplibs_check_method in -+file_magic*) -+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then -+ _LT_PATH_MAGIC -+ fi -+ ;; -+esac -+ -+# Use C for the default configuration in the libtool script -+LT_SUPPORTED_TAG([CC]) -+_LT_LANG_C_CONFIG -+_LT_LANG_DEFAULT_CONFIG -+_LT_CONFIG_COMMANDS -+])# _LT_SETUP -+ -+ -+# _LT_PREPARE_SED_QUOTE_VARS -+# -------------------------- -+# Define a few sed substitution that help us do robust quoting. -+m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -+[# Backslashify metacharacters that are still active within -+# double-quoted strings. -+sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' -+ -+# Same as above, but do not quote variable references. -+double_quote_subst='s/\([["`\\]]\)/\\\1/g' -+ -+# Sed substitution to delay expansion of an escaped shell variable in a -+# double_quote_subst'ed string. -+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' -+ -+# Sed substitution to delay expansion of an escaped single quote. -+delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' -+ -+# Sed substitution to avoid accidental globbing in evaled expressions -+no_glob_subst='s/\*/\\\*/g' -+]) -+ -+# _LT_PROG_LTMAIN -+# --------------- -+# Note that this code is called both from `configure', and `config.status' -+# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -+# `config.status' has no value for ac_aux_dir unless we are using Automake, -+# so we pass a copy along to make sure it has a sensible value anyway. -+m4_defun([_LT_PROG_LTMAIN], -+[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -+_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -+ltmain="$ac_aux_dir/ltmain.sh" -+])# _LT_PROG_LTMAIN -+ -+ -+## ------------------------------------- ## -+## Accumulate code for creating libtool. ## -+## ------------------------------------- ## -+ -+# So that we can recreate a full libtool script including additional -+# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -+# in macros and then make a single call at the end using the `libtool' -+# label. -+ -+ -+# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -+# ---------------------------------------- -+# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -+m4_define([_LT_CONFIG_LIBTOOL_INIT], -+[m4_ifval([$1], -+ [m4_append([_LT_OUTPUT_LIBTOOL_INIT], -+ [$1 -+])])]) -+ -+# Initialize. -+m4_define([_LT_OUTPUT_LIBTOOL_INIT]) -+ -+ -+# _LT_CONFIG_LIBTOOL([COMMANDS]) -+# ------------------------------ -+# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -+m4_define([_LT_CONFIG_LIBTOOL], -+[m4_ifval([$1], -+ [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], -+ [$1 -+])])]) -+ -+# Initialize. -+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) -+ -+ -+# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -+# ----------------------------------------------------- -+m4_defun([_LT_CONFIG_SAVE_COMMANDS], -+[_LT_CONFIG_LIBTOOL([$1]) -+_LT_CONFIG_LIBTOOL_INIT([$2]) -+]) -+ -+ -+# _LT_FORMAT_COMMENT([COMMENT]) -+# ----------------------------- -+# Add leading comment marks to the start of each line, and a trailing -+# full-stop to the whole comment if one is not present already. -+m4_define([_LT_FORMAT_COMMENT], -+[m4_ifval([$1], [ -+m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], -+ [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -+)]) -+ -+ -+ -+## ------------------------ ## -+## FIXME: Eliminate VARNAME ## -+## ------------------------ ## -+ -+ -+# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -+# ------------------------------------------------------------------- -+# CONFIGNAME is the name given to the value in the libtool script. -+# VARNAME is the (base) name used in the configure script. -+# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -+# VARNAME. Any other value will be used directly. -+m4_define([_LT_DECL], -+[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], -+ [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], -+ [m4_ifval([$1], [$1], [$2])]) -+ lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) -+ m4_ifval([$4], -+ [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) -+ lt_dict_add_subkey([lt_decl_dict], [$2], -+ [tagged?], [m4_ifval([$5], [yes], [no])])]) -+]) -+ -+ -+# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -+# -------------------------------------------------------- -+m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) -+ -+ -+# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -+# ------------------------------------------------ -+m4_define([lt_decl_tag_varnames], -+[_lt_decl_filter([tagged?], [yes], $@)]) -+ -+ -+# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -+# --------------------------------------------------------- -+m4_define([_lt_decl_filter], -+[m4_case([$#], -+ [0], [m4_fatal([$0: too few arguments: $#])], -+ [1], [m4_fatal([$0: too few arguments: $#: $1])], -+ [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], -+ [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], -+ [lt_dict_filter([lt_decl_dict], $@)])[]dnl -+]) -+ -+ -+# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -+# -------------------------------------------------- -+m4_define([lt_decl_quote_varnames], -+[_lt_decl_filter([value], [1], $@)]) -+ -+ -+# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -+# --------------------------------------------------- -+m4_define([lt_decl_dquote_varnames], -+[_lt_decl_filter([value], [2], $@)]) -+ -+ -+# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -+# --------------------------------------------------- -+m4_define([lt_decl_varnames_tagged], -+[m4_assert([$# <= 2])dnl -+_$0(m4_quote(m4_default([$1], [[, ]])), -+ m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), -+ m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -+m4_define([_lt_decl_varnames_tagged], -+[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) -+ -+ -+# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -+# ------------------------------------------------ -+m4_define([lt_decl_all_varnames], -+[_$0(m4_quote(m4_default([$1], [[, ]])), -+ m4_if([$2], [], -+ m4_quote(lt_decl_varnames), -+ m4_quote(m4_shift($@))))[]dnl -+]) -+m4_define([_lt_decl_all_varnames], -+[lt_join($@, lt_decl_varnames_tagged([$1], -+ lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -+]) -+ -+ -+# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -+# ------------------------------------ -+# Quote a variable value, and forward it to `config.status' so that its -+# declaration there will have the same value as in `configure'. VARNAME -+# must have a single quote delimited value for this to work. -+m4_define([_LT_CONFIG_STATUS_DECLARE], -+[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) -+ -+ -+# _LT_CONFIG_STATUS_DECLARATIONS -+# ------------------------------ -+# We delimit libtool config variables with single quotes, so when -+# we write them to config.status, we have to be sure to quote all -+# embedded single quotes properly. In configure, this macro expands -+# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -+# -+# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -+m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -+[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), -+ [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) -+ -+ -+# _LT_LIBTOOL_TAGS -+# ---------------- -+# Output comment and list of tags supported by the script -+m4_defun([_LT_LIBTOOL_TAGS], -+[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -+available_tags="_LT_TAGS"dnl -+]) -+ -+ -+# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -+# ----------------------------------- -+# Extract the dictionary values for VARNAME (optionally with TAG) and -+# expand to a commented shell variable setting: -+# -+# # Some comment about what VAR is for. -+# visible_name=$lt_internal_name -+m4_define([_LT_LIBTOOL_DECLARE], -+[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], -+ [description])))[]dnl -+m4_pushdef([_libtool_name], -+ m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -+m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), -+ [0], [_libtool_name=[$]$1], -+ [1], [_libtool_name=$lt_[]$1], -+ [2], [_libtool_name=$lt_[]$1], -+ [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -+m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -+]) -+ -+ -+# _LT_LIBTOOL_CONFIG_VARS -+# ----------------------- -+# Produce commented declarations of non-tagged libtool config variables -+# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -+# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -+# section) are produced by _LT_LIBTOOL_TAG_VARS. -+m4_defun([_LT_LIBTOOL_CONFIG_VARS], -+[m4_foreach([_lt_var], -+ m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), -+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) -+ -+ -+# _LT_LIBTOOL_TAG_VARS(TAG) -+# ------------------------- -+m4_define([_LT_LIBTOOL_TAG_VARS], -+[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), -+ [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) -+ -+ -+# _LT_TAGVAR(VARNAME, [TAGNAME]) -+# ------------------------------ -+m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) -+ -+ -+# _LT_CONFIG_COMMANDS -+# ------------------- -+# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -+# variables for single and double quote escaping we saved from calls -+# to _LT_DECL, we can put quote escaped variables declarations -+# into `config.status', and then the shell code to quote escape them in -+# for loops in `config.status'. Finally, any additional code accumulated -+# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -+m4_defun([_LT_CONFIG_COMMANDS], -+[AC_PROVIDE_IFELSE([LT_OUTPUT], -+ dnl If the libtool generation code has been placed in $CONFIG_LT, -+ dnl instead of duplicating it all over again into config.status, -+ dnl then we will have config.status run $CONFIG_LT later, so it -+ dnl needs to know what name is stored there: -+ [AC_CONFIG_COMMANDS([libtool], -+ [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], -+ dnl If the libtool generation code is destined for config.status, -+ dnl expand the accumulated commands and init code now: -+ [AC_CONFIG_COMMANDS([libtool], -+ [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -+])#_LT_CONFIG_COMMANDS -+ -+ -+# Initialize. -+m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -+[ -+ -+# The HP-UX ksh and POSIX shell print the target directory to stdout -+# if CDPATH is set. -+(unset CDPATH) >/dev/null 2>&1 && unset CDPATH -+ -+sed_quote_subst='$sed_quote_subst' -+double_quote_subst='$double_quote_subst' -+delay_variable_subst='$delay_variable_subst' -+_LT_CONFIG_STATUS_DECLARATIONS -+LTCC='$LTCC' -+LTCFLAGS='$LTCFLAGS' -+compiler='$compiler_DEFAULT' -+ -+# A function that is used when there is no print builtin or printf. -+func_fallback_echo () -+{ -+ eval 'cat <<_LTECHO_EOF -+\$[]1 -+_LTECHO_EOF' -+} -+ -+# Quote evaled strings. -+for var in lt_decl_all_varnames([[ \ -+]], lt_decl_quote_varnames); do -+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in -+ *[[\\\\\\\`\\"\\\$]]*) -+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" -+ ;; -+ *) -+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" -+ ;; -+ esac -+done -+ -+# Double-quote double-evaled strings. -+for var in lt_decl_all_varnames([[ \ -+]], lt_decl_dquote_varnames); do -+ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in -+ *[[\\\\\\\`\\"\\\$]]*) -+ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" -+ ;; -+ *) -+ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" -+ ;; -+ esac -+done -+ -+_LT_OUTPUT_LIBTOOL_INIT -+]) -+ -+# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -+# ------------------------------------ -+# Generate a child script FILE with all initialization necessary to -+# reuse the environment learned by the parent script, and make the -+# file executable. If COMMENT is supplied, it is inserted after the -+# `#!' sequence but before initialization text begins. After this -+# macro, additional text can be appended to FILE to form the body of -+# the child script. The macro ends with non-zero status if the -+# file could not be fully written (such as if the disk is full). -+m4_ifdef([AS_INIT_GENERATED], -+[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -+[m4_defun([_LT_GENERATED_FILE_INIT], -+[m4_require([AS_PREPARE])]dnl -+[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -+[lt_write_fail=0 -+cat >$1 <<_ASEOF || lt_write_fail=1 -+#! $SHELL -+# Generated by $as_me. -+$2 -+SHELL=\${CONFIG_SHELL-$SHELL} -+export SHELL -+_ASEOF -+cat >>$1 <<\_ASEOF || lt_write_fail=1 -+AS_SHELL_SANITIZE -+_AS_PREPARE -+exec AS_MESSAGE_FD>&1 -+_ASEOF -+test $lt_write_fail = 0 && chmod +x $1[]dnl -+m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT -+ -+# LT_OUTPUT -+# --------- -+# This macro allows early generation of the libtool script (before -+# AC_OUTPUT is called), incase it is used in configure for compilation -+# tests. -+AC_DEFUN([LT_OUTPUT], -+[: ${CONFIG_LT=./config.lt} -+AC_MSG_NOTICE([creating $CONFIG_LT]) -+_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -+[# Run this file to recreate a libtool stub with the current configuration.]) -+ -+cat >>"$CONFIG_LT" <<\_LTEOF -+lt_cl_silent=false -+exec AS_MESSAGE_LOG_FD>>config.log -+{ -+ echo -+ AS_BOX([Running $as_me.]) -+} >&AS_MESSAGE_LOG_FD -+ -+lt_cl_help="\ -+\`$as_me' creates a local libtool stub from the current configuration, -+for use in further configure time tests before the real libtool is -+generated. -+ -+Usage: $[0] [[OPTIONS]] -+ -+ -h, --help print this help, then exit -+ -V, --version print version number, then exit -+ -q, --quiet do not print progress messages -+ -d, --debug don't remove temporary files -+ -+Report bugs to ." -+ -+lt_cl_version="\ -+m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -+m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -+configured by $[0], generated by m4_PACKAGE_STRING. -+ -+Copyright (C) 2011 Free Software Foundation, Inc. -+This config.lt script is free software; the Free Software Foundation -+gives unlimited permision to copy, distribute and modify it." -+ -+while test $[#] != 0 -+do -+ case $[1] in -+ --version | --v* | -V ) -+ echo "$lt_cl_version"; exit 0 ;; -+ --help | --h* | -h ) -+ echo "$lt_cl_help"; exit 0 ;; -+ --debug | --d* | -d ) -+ debug=: ;; -+ --quiet | --q* | --silent | --s* | -q ) -+ lt_cl_silent=: ;; -+ -+ -*) AC_MSG_ERROR([unrecognized option: $[1] -+Try \`$[0] --help' for more information.]) ;; -+ -+ *) AC_MSG_ERROR([unrecognized argument: $[1] -+Try \`$[0] --help' for more information.]) ;; -+ esac -+ shift -+done -+ -+if $lt_cl_silent; then -+ exec AS_MESSAGE_FD>/dev/null -+fi -+_LTEOF -+ -+cat >>"$CONFIG_LT" <<_LTEOF -+_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -+_LTEOF -+ -+cat >>"$CONFIG_LT" <<\_LTEOF -+AC_MSG_NOTICE([creating $ofile]) -+_LT_OUTPUT_LIBTOOL_COMMANDS -+AS_EXIT(0) -+_LTEOF -+chmod +x "$CONFIG_LT" -+ -+# configure is writing to config.log, but config.lt does its own redirection, -+# appending to config.log, which fails on DOS, as config.log is still kept -+# open by configure. Here we exec the FD to /dev/null, effectively closing -+# config.log, so it can be properly (re)opened and appended to by config.lt. -+lt_cl_success=: -+test "$silent" = yes && -+ lt_config_lt_args="$lt_config_lt_args --quiet" -+exec AS_MESSAGE_LOG_FD>/dev/null -+$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -+exec AS_MESSAGE_LOG_FD>>config.log -+$lt_cl_success || AS_EXIT(1) -+])# LT_OUTPUT -+ -+ -+# _LT_CONFIG(TAG) -+# --------------- -+# If TAG is the built-in tag, create an initial libtool script with a -+# default configuration from the untagged config vars. Otherwise add code -+# to config.status for appending the configuration named by TAG from the -+# matching tagged config vars. -+m4_defun([_LT_CONFIG], -+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+_LT_CONFIG_SAVE_COMMANDS([ -+ m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl -+ m4_if(_LT_TAG, [C], [ -+ # See if we are running on zsh, and set the options which allow our -+ # commands through without removal of \ escapes. -+ if test -n "${ZSH_VERSION+set}" ; then -+ setopt NO_GLOB_SUBST -+ fi -+ -+ cfgfile="${ofile}T" -+ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 -+ $RM "$cfgfile" -+ -+ cat <<_LT_EOF >> "$cfgfile" -+#! $SHELL -+ -+# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -+# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -+# NOTE: Changes made to this file will be lost: look at ltmain.sh. -+# -+_LT_COPYING -+_LT_LIBTOOL_TAGS -+ -+# ### BEGIN LIBTOOL CONFIG -+_LT_LIBTOOL_CONFIG_VARS -+_LT_LIBTOOL_TAG_VARS -+# ### END LIBTOOL CONFIG -+ -+_LT_EOF -+ -+ case $host_os in -+ aix3*) -+ cat <<\_LT_EOF >> "$cfgfile" -+# AIX sometimes has problems with the GCC collect2 program. For some -+# reason, if we set the COLLECT_NAMES environment variable, the problems -+# vanish in a puff of smoke. -+if test "X${COLLECT_NAMES+set}" != Xset; then -+ COLLECT_NAMES= -+ export COLLECT_NAMES -+fi -+_LT_EOF -+ ;; -+ esac -+ -+ _LT_PROG_LTMAIN -+ -+ # We use sed instead of cat because bash on DJGPP gets confused if -+ # if finds mixed CR/LF and LF-only lines. Since sed operates in -+ # text mode, it properly converts lines to CR/LF. This bash problem -+ # is reportedly fixed, but why not run on old versions too? -+ sed '$q' "$ltmain" >> "$cfgfile" \ -+ || (rm -f "$cfgfile"; exit 1) -+ -+ _LT_PROG_REPLACE_SHELLFNS -+ -+ mv -f "$cfgfile" "$ofile" || -+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") -+ chmod +x "$ofile" -+], -+[cat <<_LT_EOF >> "$ofile" -+ -+dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -+dnl in a comment (ie after a #). -+# ### BEGIN LIBTOOL TAG CONFIG: $1 -+_LT_LIBTOOL_TAG_VARS(_LT_TAG) -+# ### END LIBTOOL TAG CONFIG: $1 -+_LT_EOF -+])dnl /m4_if -+], -+[m4_if([$1], [], [ -+ PACKAGE='$PACKAGE' -+ VERSION='$VERSION' -+ TIMESTAMP='$TIMESTAMP' -+ RM='$RM' -+ ofile='$ofile'], []) -+])dnl /_LT_CONFIG_SAVE_COMMANDS -+])# _LT_CONFIG -+ -+ -+# LT_SUPPORTED_TAG(TAG) -+# --------------------- -+# Trace this macro to discover what tags are supported by the libtool -+# --tag option, using: -+# autoconf --trace 'LT_SUPPORTED_TAG:$1' -+AC_DEFUN([LT_SUPPORTED_TAG], []) -+ -+ -+# C support is built-in for now -+m4_define([_LT_LANG_C_enabled], []) -+m4_define([_LT_TAGS], []) -+ -+ -+# LT_LANG(LANG) -+# ------------- -+# Enable libtool support for the given language if not already enabled. -+AC_DEFUN([LT_LANG], -+[AC_BEFORE([$0], [LT_OUTPUT])dnl -+m4_case([$1], -+ [C], [_LT_LANG(C)], -+ [C++], [_LT_LANG(CXX)], -+ [Go], [_LT_LANG(GO)], -+ [Java], [_LT_LANG(GCJ)], -+ [Fortran 77], [_LT_LANG(F77)], -+ [Fortran], [_LT_LANG(FC)], -+ [Windows Resource], [_LT_LANG(RC)], -+ [m4_ifdef([_LT_LANG_]$1[_CONFIG], -+ [_LT_LANG($1)], -+ [m4_fatal([$0: unsupported language: "$1"])])])dnl -+])# LT_LANG -+ -+ -+# _LT_LANG(LANGNAME) -+# ------------------ -+m4_defun([_LT_LANG], -+[m4_ifdef([_LT_LANG_]$1[_enabled], [], -+ [LT_SUPPORTED_TAG([$1])dnl -+ m4_append([_LT_TAGS], [$1 ])dnl -+ m4_define([_LT_LANG_]$1[_enabled], [])dnl -+ _LT_LANG_$1_CONFIG($1)])dnl -+])# _LT_LANG -+ -+ -+m4_ifndef([AC_PROG_GO], [ -+############################################################ -+# NOTE: This macro has been submitted for inclusion into # -+# GNU Autoconf as AC_PROG_GO. When it is available in # -+# a released version of Autoconf we should remove this # -+# macro and use it instead. # -+############################################################ -+m4_defun([AC_PROG_GO], -+[AC_LANG_PUSH(Go)dnl -+AC_ARG_VAR([GOC], [Go compiler command])dnl -+AC_ARG_VAR([GOFLAGS], [Go compiler flags])dnl -+_AC_ARG_VAR_LDFLAGS()dnl -+AC_CHECK_TOOL(GOC, gccgo) -+if test -z "$GOC"; then -+ if test -n "$ac_tool_prefix"; then -+ AC_CHECK_PROG(GOC, [${ac_tool_prefix}gccgo], [${ac_tool_prefix}gccgo]) -+ fi -+fi -+if test -z "$GOC"; then -+ AC_CHECK_PROG(GOC, gccgo, gccgo, false) -+fi -+])#m4_defun -+])#m4_ifndef -+ -+ -+# _LT_LANG_DEFAULT_CONFIG -+# ----------------------- -+m4_defun([_LT_LANG_DEFAULT_CONFIG], -+[AC_PROVIDE_IFELSE([AC_PROG_CXX], -+ [LT_LANG(CXX)], -+ [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) -+ -+AC_PROVIDE_IFELSE([AC_PROG_F77], -+ [LT_LANG(F77)], -+ [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) -+ -+AC_PROVIDE_IFELSE([AC_PROG_FC], -+ [LT_LANG(FC)], -+ [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) -+ -+dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -+dnl pulling things in needlessly. -+AC_PROVIDE_IFELSE([AC_PROG_GCJ], -+ [LT_LANG(GCJ)], -+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], -+ [LT_LANG(GCJ)], -+ [AC_PROVIDE_IFELSE([LT_PROG_GCJ], -+ [LT_LANG(GCJ)], -+ [m4_ifdef([AC_PROG_GCJ], -+ [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) -+ m4_ifdef([A][M_PROG_GCJ], -+ [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) -+ m4_ifdef([LT_PROG_GCJ], -+ [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) -+ -+AC_PROVIDE_IFELSE([AC_PROG_GO], -+ [LT_LANG(GO)], -+ [m4_define([AC_PROG_GO], defn([AC_PROG_GO])[LT_LANG(GO)])]) -+ -+AC_PROVIDE_IFELSE([LT_PROG_RC], -+ [LT_LANG(RC)], -+ [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -+])# _LT_LANG_DEFAULT_CONFIG -+ -+# Obsolete macros: -+AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -+AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -+AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -+AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -+AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -+dnl AC_DEFUN([AC_LIBTOOL_F77], []) -+dnl AC_DEFUN([AC_LIBTOOL_FC], []) -+dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -+dnl AC_DEFUN([AC_LIBTOOL_RC], []) -+ -+ -+# _LT_TAG_COMPILER -+# ---------------- -+m4_defun([_LT_TAG_COMPILER], -+[AC_REQUIRE([AC_PROG_CC])dnl -+ -+_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -+_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -+_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -+_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl -+ -+# If no C compiler was specified, use CC. -+LTCC=${LTCC-"$CC"} -+ -+# If no C compiler flags were specified, use CFLAGS. -+LTCFLAGS=${LTCFLAGS-"$CFLAGS"} -+ -+# Allow CC to be a program name with arguments. -+compiler=$CC -+])# _LT_TAG_COMPILER -+ -+ -+# _LT_COMPILER_BOILERPLATE -+# ------------------------ -+# Check for compiler boilerplate output or warnings with -+# the simple compiler test code. -+m4_defun([_LT_COMPILER_BOILERPLATE], -+[m4_require([_LT_DECL_SED])dnl -+ac_outfile=conftest.$ac_objext -+echo "$lt_simple_compile_test_code" >conftest.$ac_ext -+eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -+_lt_compiler_boilerplate=`cat conftest.err` -+$RM conftest* -+])# _LT_COMPILER_BOILERPLATE -+ -+ -+# _LT_LINKER_BOILERPLATE -+# ---------------------- -+# Check for linker boilerplate output or warnings with -+# the simple link test code. -+m4_defun([_LT_LINKER_BOILERPLATE], -+[m4_require([_LT_DECL_SED])dnl -+ac_outfile=conftest.$ac_objext -+echo "$lt_simple_link_test_code" >conftest.$ac_ext -+eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -+_lt_linker_boilerplate=`cat conftest.err` -+$RM -r conftest* -+])# _LT_LINKER_BOILERPLATE -+ -+# _LT_REQUIRED_DARWIN_CHECKS -+# ------------------------- -+m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ -+ case $host_os in -+ rhapsody* | darwin*) -+ AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) -+ AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) -+ AC_CHECK_TOOL([LIPO], [lipo], [:]) -+ AC_CHECK_TOOL([OTOOL], [otool], [:]) -+ AC_CHECK_TOOL([OTOOL64], [otool64], [:]) -+ _LT_DECL([], [DSYMUTIL], [1], -+ [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) -+ _LT_DECL([], [NMEDIT], [1], -+ [Tool to change global to local symbols on Mac OS X]) -+ _LT_DECL([], [LIPO], [1], -+ [Tool to manipulate fat objects and archives on Mac OS X]) -+ _LT_DECL([], [OTOOL], [1], -+ [ldd/readelf like tool for Mach-O binaries on Mac OS X]) -+ _LT_DECL([], [OTOOL64], [1], -+ [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) -+ -+ AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], -+ [lt_cv_apple_cc_single_mod=no -+ if test -z "${LT_MULTI_MODULE}"; then -+ # By default we will add the -single_module flag. You can override -+ # by either setting the environment variable LT_MULTI_MODULE -+ # non-empty at configure time, or by adding -multi_module to the -+ # link flags. -+ rm -rf libconftest.dylib* -+ echo "int foo(void){return 1;}" > conftest.c -+ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -+-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD -+ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ -+ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err -+ _lt_result=$? -+ # If there is a non-empty error log, and "single_module" -+ # appears in it, assume the flag caused a linker warning -+ if test -s conftest.err && $GREP single_module conftest.err; then -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ # Otherwise, if the output was created with a 0 exit code from -+ # the compiler, it worked. -+ elif test -f libconftest.dylib && test $_lt_result -eq 0; then -+ lt_cv_apple_cc_single_mod=yes -+ else -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ fi -+ rm -rf libconftest.dylib* -+ rm -f conftest.* -+ fi]) -+ -+ AC_CACHE_CHECK([for -exported_symbols_list linker flag], -+ [lt_cv_ld_exported_symbols_list], -+ [lt_cv_ld_exported_symbols_list=no -+ save_LDFLAGS=$LDFLAGS -+ echo "_main" > conftest.sym -+ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" -+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], -+ [lt_cv_ld_exported_symbols_list=yes], -+ [lt_cv_ld_exported_symbols_list=no]) -+ LDFLAGS="$save_LDFLAGS" -+ ]) -+ -+ AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], -+ [lt_cv_ld_force_load=no -+ cat > conftest.c << _LT_EOF -+int forced_loaded() { return 2;} -+_LT_EOF -+ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD -+ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD -+ echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD -+ $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD -+ echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD -+ $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD -+ cat > conftest.c << _LT_EOF -+int main() { return 0;} -+_LT_EOF -+ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD -+ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err -+ _lt_result=$? -+ if test -s conftest.err && $GREP force_load conftest.err; then -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then -+ lt_cv_ld_force_load=yes -+ else -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ fi -+ rm -f conftest.err libconftest.a conftest conftest.c -+ rm -rf conftest.dSYM -+ ]) -+ case $host_os in -+ rhapsody* | darwin1.[[012]]) -+ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; -+ darwin1.*) -+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; -+ darwin*) # darwin 5.x on -+ # if running on 10.5 or later, the deployment target defaults -+ # to the OS version, if on x86, and 10.4, the deployment -+ # target defaults to 10.4. Don't you love it? -+ case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in -+ 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) -+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; -+ 10.[[012]]*) -+ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; -+ 10.*) -+ _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; -+ esac -+ ;; -+ esac -+ if test "$lt_cv_apple_cc_single_mod" = "yes"; then -+ _lt_dar_single_mod='$single_module' -+ fi -+ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then -+ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' -+ else -+ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' -+ fi -+ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then -+ _lt_dsymutil='~$DSYMUTIL $lib || :' -+ else -+ _lt_dsymutil= -+ fi -+ ;; -+ esac -+]) -+ -+ -+# _LT_DARWIN_LINKER_FEATURES([TAG]) -+# --------------------------------- -+# Checks for linker and compiler features on darwin -+m4_defun([_LT_DARWIN_LINKER_FEATURES], -+[ -+ m4_require([_LT_REQUIRED_DARWIN_CHECKS]) -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_TAGVAR(hardcode_direct, $1)=no -+ _LT_TAGVAR(hardcode_automatic, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -+ if test "$lt_cv_ld_force_load" = "yes"; then -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' -+ m4_case([$1], [F77], [_LT_TAGVAR(compiler_needs_object, $1)=yes], -+ [FC], [_LT_TAGVAR(compiler_needs_object, $1)=yes]) -+ else -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='' -+ fi -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" -+ case $cc_basename in -+ ifort*) _lt_dar_can_shared=yes ;; -+ *) _lt_dar_can_shared=$GCC ;; -+ esac -+ if test "$_lt_dar_can_shared" = "yes"; then -+ output_verbose_link_cmd=func_echo_all -+ _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" -+ _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" -+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" -+ _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" -+ m4_if([$1], [CXX], -+[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then -+ _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" -+ _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" -+ fi -+],[]) -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+]) -+ -+# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -+# ---------------------------------- -+# Links a minimal program and checks the executable -+# for the system default hardcoded library path. In most cases, -+# this is /usr/lib:/lib, but when the MPI compilers are used -+# the location of the communication and MPI libs are included too. -+# If we don't find anything, use the default library path according -+# to the aix ld manual. -+# Store the results from the different compilers for each TAGNAME. -+# Allow to override them for all tags through lt_cv_aix_libpath. -+m4_defun([_LT_SYS_MODULE_PATH_AIX], -+[m4_require([_LT_DECL_SED])dnl -+if test "${lt_cv_aix_libpath+set}" = set; then -+ aix_libpath=$lt_cv_aix_libpath -+else -+ AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], -+ [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ -+ lt_aix_libpath_sed='[ -+ /Import File Strings/,/^$/ { -+ /^0/ { -+ s/^0 *\([^ ]*\) *$/\1/ -+ p -+ } -+ }]' -+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ # Check for a 64-bit object if we didn't find anything. -+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then -+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` -+ fi],[]) -+ if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then -+ _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" -+ fi -+ ]) -+ aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -+fi -+])# _LT_SYS_MODULE_PATH_AIX -+ -+ -+# _LT_SHELL_INIT(ARG) -+# ------------------- -+m4_define([_LT_SHELL_INIT], -+[m4_divert_text([M4SH-INIT], [$1 -+])])# _LT_SHELL_INIT -+ -+ -+ -+# _LT_PROG_ECHO_BACKSLASH -+# ----------------------- -+# Find how we can fake an echo command that does not interpret backslash. -+# In particular, with Autoconf 2.60 or later we add some code to the start -+# of the generated configure script which will find a shell with a builtin -+# printf (which we can use as an echo command). -+m4_defun([_LT_PROG_ECHO_BACKSLASH], -+[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -+ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -+ -+AC_MSG_CHECKING([how to print strings]) -+# Test print first, because it will be a builtin if present. -+if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ -+ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then -+ ECHO='print -r --' -+elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then -+ ECHO='printf %s\n' -+else -+ # Use this function as a fallback that always works. -+ func_fallback_echo () -+ { -+ eval 'cat <<_LTECHO_EOF -+$[]1 -+_LTECHO_EOF' -+ } -+ ECHO='func_fallback_echo' -+fi -+ -+# func_echo_all arg... -+# Invoke $ECHO with all args, space-separated. -+func_echo_all () -+{ -+ $ECHO "$*" -+} -+ -+case "$ECHO" in -+ printf*) AC_MSG_RESULT([printf]) ;; -+ print*) AC_MSG_RESULT([print -r]) ;; -+ *) AC_MSG_RESULT([cat]) ;; -+esac -+ -+m4_ifdef([_AS_DETECT_SUGGESTED], -+[_AS_DETECT_SUGGESTED([ -+ test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( -+ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -+ ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO -+ PATH=/empty FPATH=/empty; export PATH FPATH -+ test "X`printf %s $ECHO`" = "X$ECHO" \ -+ || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) -+ -+_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -+_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -+])# _LT_PROG_ECHO_BACKSLASH -+ -+ -+# _LT_WITH_SYSROOT -+# ---------------- -+AC_DEFUN([_LT_WITH_SYSROOT], -+[AC_MSG_CHECKING([for sysroot]) -+AC_ARG_WITH([sysroot], -+[ --with-sysroot[=DIR] Search for dependent libraries within DIR -+ (or the compiler's sysroot if not specified).], -+[], [with_sysroot=no]) -+ -+dnl lt_sysroot will always be passed unquoted. We quote it here -+dnl in case the user passed a directory name. -+lt_sysroot= -+case ${with_sysroot} in #( -+ yes) -+ if test "$GCC" = yes; then -+ lt_sysroot=`$CC --print-sysroot 2>/dev/null` -+ fi -+ ;; #( -+ /*) -+ lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` -+ ;; #( -+ no|'') -+ ;; #( -+ *) -+ AC_MSG_RESULT([${with_sysroot}]) -+ AC_MSG_ERROR([The sysroot must be an absolute path.]) -+ ;; -+esac -+ -+ AC_MSG_RESULT([${lt_sysroot:-no}]) -+_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -+[dependent libraries, and in which our libraries should be installed.])]) -+ -+# _LT_ENABLE_LOCK -+# --------------- -+m4_defun([_LT_ENABLE_LOCK], -+[AC_ARG_ENABLE([libtool-lock], -+ [AS_HELP_STRING([--disable-libtool-lock], -+ [avoid locking (might break parallel builds)])]) -+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes -+ -+# Some flags need to be propagated to the compiler or linker for good -+# libtool support. -+case $host in -+ia64-*-hpux*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if AC_TRY_EVAL(ac_compile); then -+ case `/usr/bin/file conftest.$ac_objext` in -+ *ELF-32*) -+ HPUX_IA64_MODE="32" -+ ;; -+ *ELF-64*) -+ HPUX_IA64_MODE="64" -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+*-*-irix6*) -+ # Find out which ABI we are using. -+ echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext -+ if AC_TRY_EVAL(ac_compile); then -+ if test "$lt_cv_prog_gnu_ld" = yes; then -+ case `/usr/bin/file conftest.$ac_objext` in -+ *32-bit*) -+ LD="${LD-ld} -melf32bsmip" -+ ;; -+ *N32*) -+ LD="${LD-ld} -melf32bmipn32" -+ ;; -+ *64-bit*) -+ LD="${LD-ld} -melf64bmip" -+ ;; -+ esac -+ else -+ case `/usr/bin/file conftest.$ac_objext` in -+ *32-bit*) -+ LD="${LD-ld} -32" -+ ;; -+ *N32*) -+ LD="${LD-ld} -n32" -+ ;; -+ *64-bit*) -+ LD="${LD-ld} -64" -+ ;; -+ esac -+ fi -+ fi -+ rm -rf conftest* -+ ;; -+ -+x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -+s390*-*linux*|s390*-*tpf*|sparc*-*linux*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if AC_TRY_EVAL(ac_compile); then -+ case `/usr/bin/file conftest.o` in -+ *32-bit*) -+ case $host in -+ x86_64-*kfreebsd*-gnu) -+ LD="${LD-ld} -m elf_i386_fbsd" -+ ;; -+ x86_64-*linux*) -+ LD="${LD-ld} -m elf_i386" -+ ;; -+ ppc64-*linux*|powerpc64-*linux*) -+ LD="${LD-ld} -m elf32ppclinux" -+ ;; -+ s390x-*linux*) -+ LD="${LD-ld} -m elf_s390" -+ ;; -+ sparc64-*linux*) -+ LD="${LD-ld} -m elf32_sparc" -+ ;; -+ esac -+ ;; -+ *64-bit*) -+ case $host in -+ x86_64-*kfreebsd*-gnu) -+ LD="${LD-ld} -m elf_x86_64_fbsd" -+ ;; -+ x86_64-*linux*) -+ LD="${LD-ld} -m elf_x86_64" -+ ;; -+ ppc*-*linux*|powerpc*-*linux*) -+ LD="${LD-ld} -m elf64ppc" -+ ;; -+ s390*-*linux*|s390*-*tpf*) -+ LD="${LD-ld} -m elf64_s390" -+ ;; -+ sparc*-*linux*) -+ LD="${LD-ld} -m elf64_sparc" -+ ;; -+ esac -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+ -+*-*-sco3.2v5*) -+ # On SCO OpenServer 5, we need -belf to get full-featured binaries. -+ SAVE_CFLAGS="$CFLAGS" -+ CFLAGS="$CFLAGS -belf" -+ AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, -+ [AC_LANG_PUSH(C) -+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) -+ AC_LANG_POP]) -+ if test x"$lt_cv_cc_needs_belf" != x"yes"; then -+ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf -+ CFLAGS="$SAVE_CFLAGS" -+ fi -+ ;; -+*-*solaris*) -+ # Find out which ABI we are using. -+ echo 'int i;' > conftest.$ac_ext -+ if AC_TRY_EVAL(ac_compile); then -+ case `/usr/bin/file conftest.o` in -+ *64-bit*) -+ case $lt_cv_prog_gnu_ld in -+ yes*) -+ case $host in -+ i?86-*-solaris*) -+ LD="${LD-ld} -m elf_x86_64" -+ ;; -+ sparc*-*-solaris*) -+ LD="${LD-ld} -m elf64_sparc" -+ ;; -+ esac -+ # GNU ld 2.21 introduced _sol2 emulations. Use them if available. -+ if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then -+ LD="${LD-ld}_sol2" -+ fi -+ ;; -+ *) -+ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then -+ LD="${LD-ld} -64" -+ fi -+ ;; -+ esac -+ ;; -+ esac -+ fi -+ rm -rf conftest* -+ ;; -+esac -+ -+need_locks="$enable_libtool_lock" -+])# _LT_ENABLE_LOCK -+ -+ -+# _LT_PROG_AR -+# ----------- -+m4_defun([_LT_PROG_AR], -+[AC_CHECK_TOOLS(AR, [ar], false) -+: ${AR=ar} -+: ${AR_FLAGS=cru} -+_LT_DECL([], [AR], [1], [The archiver]) -+_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) -+ -+AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], -+ [lt_cv_ar_at_file=no -+ AC_COMPILE_IFELSE([AC_LANG_PROGRAM], -+ [echo conftest.$ac_objext > conftest.lst -+ lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' -+ AC_TRY_EVAL([lt_ar_try]) -+ if test "$ac_status" -eq 0; then -+ # Ensure the archiver fails upon bogus file names. -+ rm -f conftest.$ac_objext libconftest.a -+ AC_TRY_EVAL([lt_ar_try]) -+ if test "$ac_status" -ne 0; then -+ lt_cv_ar_at_file=@ -+ fi -+ fi -+ rm -f conftest.* libconftest.a -+ ]) -+ ]) -+ -+if test "x$lt_cv_ar_at_file" = xno; then -+ archiver_list_spec= -+else -+ archiver_list_spec=$lt_cv_ar_at_file -+fi -+_LT_DECL([], [archiver_list_spec], [1], -+ [How to feed a file listing to the archiver]) -+])# _LT_PROG_AR -+ -+ -+# _LT_CMD_OLD_ARCHIVE -+# ------------------- -+m4_defun([_LT_CMD_OLD_ARCHIVE], -+[_LT_PROG_AR -+ -+AC_CHECK_TOOL(STRIP, strip, :) -+test -z "$STRIP" && STRIP=: -+_LT_DECL([], [STRIP], [1], [A symbol stripping program]) -+ -+AC_CHECK_TOOL(RANLIB, ranlib, :) -+test -z "$RANLIB" && RANLIB=: -+_LT_DECL([], [RANLIB], [1], -+ [Commands used to install an old-style archive]) -+ -+# Determine commands to create old-style static archives. -+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -+old_postinstall_cmds='chmod 644 $oldlib' -+old_postuninstall_cmds= -+ -+if test -n "$RANLIB"; then -+ case $host_os in -+ openbsd*) -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib" -+ ;; -+ *) -+ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib" -+ ;; -+ esac -+ old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib" -+fi -+ -+case $host_os in -+ darwin*) -+ lock_old_archive_extraction=yes ;; -+ *) -+ lock_old_archive_extraction=no ;; -+esac -+_LT_DECL([], [old_postinstall_cmds], [2]) -+_LT_DECL([], [old_postuninstall_cmds], [2]) -+_LT_TAGDECL([], [old_archive_cmds], [2], -+ [Commands used to build an old-style archive]) -+_LT_DECL([], [lock_old_archive_extraction], [0], -+ [Whether to use a lock for old archive extraction]) -+])# _LT_CMD_OLD_ARCHIVE -+ -+ -+# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -+# ---------------------------------------------------------------- -+# Check whether the given compiler option works -+AC_DEFUN([_LT_COMPILER_OPTION], -+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+m4_require([_LT_DECL_SED])dnl -+AC_CACHE_CHECK([$1], [$2], -+ [$2=no -+ m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ lt_compiler_flag="$3" -+ # Insert the option either (1) after the last *FLAGS variable, or -+ # (2) before a word containing "conftest.", or (3) at the end. -+ # Note that $ac_compile itself does not contain backslashes and begins -+ # with a dollar sign (not a hyphen), so the echo should work correctly. -+ # The option is referenced via a variable to avoid confusing sed. -+ lt_compile=`echo "$ac_compile" | $SED \ -+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -+ -e 's:$: $lt_compiler_flag:'` -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) -+ (eval "$lt_compile" 2>conftest.err) -+ ac_status=$? -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD -+ if (exit $ac_status) && test -s "$ac_outfile"; then -+ # The compiler can only warn and ignore the option if not recognized -+ # So say no if there are warnings other than the usual output. -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then -+ $2=yes -+ fi -+ fi -+ $RM conftest* -+]) -+ -+if test x"[$]$2" = xyes; then -+ m4_if([$5], , :, [$5]) -+else -+ m4_if([$6], , :, [$6]) -+fi -+])# _LT_COMPILER_OPTION -+ -+# Old name: -+AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) -+ -+ -+# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -+# [ACTION-SUCCESS], [ACTION-FAILURE]) -+# ---------------------------------------------------- -+# Check whether the given linker option works -+AC_DEFUN([_LT_LINKER_OPTION], -+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+m4_require([_LT_DECL_SED])dnl -+AC_CACHE_CHECK([$1], [$2], -+ [$2=no -+ save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS $3" -+ echo "$lt_simple_link_test_code" > conftest.$ac_ext -+ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then -+ # The linker can only warn and ignore the option if not recognized -+ # So say no if there are warnings -+ if test -s conftest.err; then -+ # Append any errors to the config.log. -+ cat conftest.err 1>&AS_MESSAGE_LOG_FD -+ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp -+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 -+ if diff conftest.exp conftest.er2 >/dev/null; then -+ $2=yes -+ fi -+ else -+ $2=yes -+ fi -+ fi -+ $RM -r conftest* -+ LDFLAGS="$save_LDFLAGS" -+]) -+ -+if test x"[$]$2" = xyes; then -+ m4_if([$4], , :, [$4]) -+else -+ m4_if([$5], , :, [$5]) -+fi -+])# _LT_LINKER_OPTION -+ -+# Old name: -+AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) -+ -+ -+# LT_CMD_MAX_LEN -+#--------------- -+AC_DEFUN([LT_CMD_MAX_LEN], -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl -+# find the maximum length of command line arguments -+AC_MSG_CHECKING([the maximum length of command line arguments]) -+AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl -+ i=0 -+ teststring="ABCD" -+ -+ case $build_os in -+ msdosdjgpp*) -+ # On DJGPP, this test can blow up pretty badly due to problems in libc -+ # (any single argument exceeding 2000 bytes causes a buffer overrun -+ # during glob expansion). Even if it were fixed, the result of this -+ # check would be larger than it should be. -+ lt_cv_sys_max_cmd_len=12288; # 12K is about right -+ ;; -+ -+ gnu*) -+ # Under GNU Hurd, this test is not required because there is -+ # no limit to the length of command line arguments. -+ # Libtool will interpret -1 as no limit whatsoever -+ lt_cv_sys_max_cmd_len=-1; -+ ;; -+ -+ cygwin* | mingw* | cegcc*) -+ # On Win9x/ME, this test blows up -- it succeeds, but takes -+ # about 5 minutes as the teststring grows exponentially. -+ # Worse, since 9x/ME are not pre-emptively multitasking, -+ # you end up with a "frozen" computer, even though with patience -+ # the test eventually succeeds (with a max line length of 256k). -+ # Instead, let's just punt: use the minimum linelength reported by -+ # all of the supported platforms: 8192 (on NT/2K/XP). -+ lt_cv_sys_max_cmd_len=8192; -+ ;; -+ -+ mint*) -+ # On MiNT this can take a long time and run out of memory. -+ lt_cv_sys_max_cmd_len=8192; -+ ;; -+ -+ amigaos*) -+ # On AmigaOS with pdksh, this test takes hours, literally. -+ # So we just punt and use a minimum line length of 8192. -+ lt_cv_sys_max_cmd_len=8192; -+ ;; -+ -+ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) -+ # This has been around since 386BSD, at least. Likely further. -+ if test -x /sbin/sysctl; then -+ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` -+ elif test -x /usr/sbin/sysctl; then -+ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` -+ else -+ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs -+ fi -+ # And add a safety zone -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` -+ ;; -+ -+ interix*) -+ # We know the value 262144 and hardcode it with a safety zone (like BSD) -+ lt_cv_sys_max_cmd_len=196608 -+ ;; -+ -+ os2*) -+ # The test takes a long time on OS/2. -+ lt_cv_sys_max_cmd_len=8192 -+ ;; -+ -+ osf*) -+ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure -+ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not -+ # nice to cause kernel panics so lets avoid the loop below. -+ # First set a reasonable default. -+ lt_cv_sys_max_cmd_len=16384 -+ # -+ if test -x /sbin/sysconfig; then -+ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in -+ *1*) lt_cv_sys_max_cmd_len=-1 ;; -+ esac -+ fi -+ ;; -+ sco3.2v5*) -+ lt_cv_sys_max_cmd_len=102400 -+ ;; -+ sysv5* | sco5v6* | sysv4.2uw2*) -+ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` -+ if test -n "$kargmax"; then -+ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` -+ else -+ lt_cv_sys_max_cmd_len=32768 -+ fi -+ ;; -+ *) -+ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` -+ if test -n "$lt_cv_sys_max_cmd_len"; then -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` -+ else -+ # Make teststring a little bigger before we do anything with it. -+ # a 1K string should be a reasonable start. -+ for i in 1 2 3 4 5 6 7 8 ; do -+ teststring=$teststring$teststring -+ done -+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} -+ # If test is not a shell built-in, we'll probably end up computing a -+ # maximum length that is only half of the actual maximum length, but -+ # we can't tell. -+ while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \ -+ = "X$teststring$teststring"; } >/dev/null 2>&1 && -+ test $i != 17 # 1/2 MB should be enough -+ do -+ i=`expr $i + 1` -+ teststring=$teststring$teststring -+ done -+ # Only check the string length outside the loop. -+ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` -+ teststring= -+ # Add a significant safety factor because C++ compilers can tack on -+ # massive amounts of additional arguments before passing them to the -+ # linker. It appears as though 1/2 is a usable value. -+ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` -+ fi -+ ;; -+ esac -+]) -+if test -n $lt_cv_sys_max_cmd_len ; then -+ AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -+else -+ AC_MSG_RESULT(none) -+fi -+max_cmd_len=$lt_cv_sys_max_cmd_len -+_LT_DECL([], [max_cmd_len], [0], -+ [What is the maximum length of a command?]) -+])# LT_CMD_MAX_LEN -+ -+# Old name: -+AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) -+ -+ -+# _LT_HEADER_DLFCN -+# ---------------- -+m4_defun([_LT_HEADER_DLFCN], -+[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -+])# _LT_HEADER_DLFCN -+ -+ -+# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -+# ---------------------------------------------------------------- -+m4_defun([_LT_TRY_DLOPEN_SELF], -+[m4_require([_LT_HEADER_DLFCN])dnl -+if test "$cross_compiling" = yes; then : -+ [$4] -+else -+ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 -+ lt_status=$lt_dlunknown -+ cat > conftest.$ac_ext <<_LT_EOF -+[#line $LINENO "configure" -+#include "confdefs.h" -+ -+#if HAVE_DLFCN_H -+#include -+#endif -+ -+#include -+ -+#ifdef RTLD_GLOBAL -+# define LT_DLGLOBAL RTLD_GLOBAL -+#else -+# ifdef DL_GLOBAL -+# define LT_DLGLOBAL DL_GLOBAL -+# else -+# define LT_DLGLOBAL 0 -+# endif -+#endif -+ -+/* We may have to define LT_DLLAZY_OR_NOW in the command line if we -+ find out it does not work in some platform. */ -+#ifndef LT_DLLAZY_OR_NOW -+# ifdef RTLD_LAZY -+# define LT_DLLAZY_OR_NOW RTLD_LAZY -+# else -+# ifdef DL_LAZY -+# define LT_DLLAZY_OR_NOW DL_LAZY -+# else -+# ifdef RTLD_NOW -+# define LT_DLLAZY_OR_NOW RTLD_NOW -+# else -+# ifdef DL_NOW -+# define LT_DLLAZY_OR_NOW DL_NOW -+# else -+# define LT_DLLAZY_OR_NOW 0 -+# endif -+# endif -+# endif -+# endif -+#endif -+ -+/* When -fvisbility=hidden is used, assume the code has been annotated -+ correspondingly for the symbols needed. */ -+#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -+int fnord () __attribute__((visibility("default"))); -+#endif -+ -+int fnord () { return 42; } -+int main () -+{ -+ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); -+ int status = $lt_dlunknown; -+ -+ if (self) -+ { -+ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; -+ else -+ { -+ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; -+ else puts (dlerror ()); -+ } -+ /* dlclose (self); */ -+ } -+ else -+ puts (dlerror ()); -+ -+ return status; -+}] -+_LT_EOF -+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then -+ (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null -+ lt_status=$? -+ case x$lt_status in -+ x$lt_dlno_uscore) $1 ;; -+ x$lt_dlneed_uscore) $2 ;; -+ x$lt_dlunknown|x*) $3 ;; -+ esac -+ else : -+ # compilation failed -+ $3 -+ fi -+fi -+rm -fr conftest* -+])# _LT_TRY_DLOPEN_SELF -+ -+ -+# LT_SYS_DLOPEN_SELF -+# ------------------ -+AC_DEFUN([LT_SYS_DLOPEN_SELF], -+[m4_require([_LT_HEADER_DLFCN])dnl -+if test "x$enable_dlopen" != xyes; then -+ enable_dlopen=unknown -+ enable_dlopen_self=unknown -+ enable_dlopen_self_static=unknown -+else -+ lt_cv_dlopen=no -+ lt_cv_dlopen_libs= -+ -+ case $host_os in -+ beos*) -+ lt_cv_dlopen="load_add_on" -+ lt_cv_dlopen_libs= -+ lt_cv_dlopen_self=yes -+ ;; -+ -+ mingw* | pw32* | cegcc*) -+ lt_cv_dlopen="LoadLibrary" -+ lt_cv_dlopen_libs= -+ ;; -+ -+ cygwin*) -+ lt_cv_dlopen="dlopen" -+ lt_cv_dlopen_libs= -+ ;; -+ -+ darwin*) -+ # if libdl is installed we need to link against it -+ AC_CHECK_LIB([dl], [dlopen], -+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ -+ lt_cv_dlopen="dyld" -+ lt_cv_dlopen_libs= -+ lt_cv_dlopen_self=yes -+ ]) -+ ;; -+ -+ *) -+ AC_CHECK_FUNC([shl_load], -+ [lt_cv_dlopen="shl_load"], -+ [AC_CHECK_LIB([dld], [shl_load], -+ [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], -+ [AC_CHECK_FUNC([dlopen], -+ [lt_cv_dlopen="dlopen"], -+ [AC_CHECK_LIB([dl], [dlopen], -+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], -+ [AC_CHECK_LIB([svld], [dlopen], -+ [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], -+ [AC_CHECK_LIB([dld], [dld_link], -+ [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) -+ ]) -+ ]) -+ ]) -+ ]) -+ ]) -+ ;; -+ esac -+ -+ if test "x$lt_cv_dlopen" != xno; then -+ enable_dlopen=yes -+ else -+ enable_dlopen=no -+ fi -+ -+ case $lt_cv_dlopen in -+ dlopen) -+ save_CPPFLAGS="$CPPFLAGS" -+ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" -+ -+ save_LDFLAGS="$LDFLAGS" -+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" -+ -+ save_LIBS="$LIBS" -+ LIBS="$lt_cv_dlopen_libs $LIBS" -+ -+ AC_CACHE_CHECK([whether a program can dlopen itself], -+ lt_cv_dlopen_self, [dnl -+ _LT_TRY_DLOPEN_SELF( -+ lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, -+ lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) -+ ]) -+ -+ if test "x$lt_cv_dlopen_self" = xyes; then -+ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" -+ AC_CACHE_CHECK([whether a statically linked program can dlopen itself], -+ lt_cv_dlopen_self_static, [dnl -+ _LT_TRY_DLOPEN_SELF( -+ lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, -+ lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) -+ ]) -+ fi -+ -+ CPPFLAGS="$save_CPPFLAGS" -+ LDFLAGS="$save_LDFLAGS" -+ LIBS="$save_LIBS" -+ ;; -+ esac -+ -+ case $lt_cv_dlopen_self in -+ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; -+ *) enable_dlopen_self=unknown ;; -+ esac -+ -+ case $lt_cv_dlopen_self_static in -+ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; -+ *) enable_dlopen_self_static=unknown ;; -+ esac -+fi -+_LT_DECL([dlopen_support], [enable_dlopen], [0], -+ [Whether dlopen is supported]) -+_LT_DECL([dlopen_self], [enable_dlopen_self], [0], -+ [Whether dlopen of programs is supported]) -+_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], -+ [Whether dlopen of statically linked programs is supported]) -+])# LT_SYS_DLOPEN_SELF -+ -+# Old name: -+AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) -+ -+ -+# _LT_COMPILER_C_O([TAGNAME]) -+# --------------------------- -+# Check to see if options -c and -o are simultaneously supported by compiler. -+# This macro does not hard code the compiler like AC_PROG_CC_C_O. -+m4_defun([_LT_COMPILER_C_O], -+[m4_require([_LT_DECL_SED])dnl -+m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+m4_require([_LT_TAG_COMPILER])dnl -+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], -+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], -+ [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no -+ $RM -r conftest 2>/dev/null -+ mkdir conftest -+ cd conftest -+ mkdir out -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ lt_compiler_flag="-o out/conftest2.$ac_objext" -+ # Insert the option either (1) after the last *FLAGS variable, or -+ # (2) before a word containing "conftest.", or (3) at the end. -+ # Note that $ac_compile itself does not contain backslashes and begins -+ # with a dollar sign (not a hyphen), so the echo should work correctly. -+ lt_compile=`echo "$ac_compile" | $SED \ -+ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -+ -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ -+ -e 's:$: $lt_compiler_flag:'` -+ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) -+ (eval "$lt_compile" 2>out/conftest.err) -+ ac_status=$? -+ cat out/conftest.err >&AS_MESSAGE_LOG_FD -+ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD -+ if (exit $ac_status) && test -s out/conftest2.$ac_objext -+ then -+ # The compiler can only warn and ignore the option if not recognized -+ # So say no if there are warnings -+ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp -+ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 -+ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then -+ _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes -+ fi -+ fi -+ chmod u+w . 2>&AS_MESSAGE_LOG_FD -+ $RM conftest* -+ # SGI C++ compiler will create directory out/ii_files/ for -+ # template instantiation -+ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files -+ $RM out/* && rmdir out -+ cd .. -+ $RM -r conftest -+ $RM conftest* -+]) -+_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], -+ [Does compiler simultaneously support -c and -o options?]) -+])# _LT_COMPILER_C_O -+ -+ -+# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -+# ---------------------------------- -+# Check to see if we can do hard links to lock some files if needed -+m4_defun([_LT_COMPILER_FILE_LOCKS], -+[m4_require([_LT_ENABLE_LOCK])dnl -+m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+_LT_COMPILER_C_O([$1]) -+ -+hard_links="nottested" -+if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then -+ # do not overwrite the value of need_locks provided by the user -+ AC_MSG_CHECKING([if we can lock with hard links]) -+ hard_links=yes -+ $RM conftest* -+ ln conftest.a conftest.b 2>/dev/null && hard_links=no -+ touch conftest.a -+ ln conftest.a conftest.b 2>&5 || hard_links=no -+ ln conftest.a conftest.b 2>/dev/null && hard_links=no -+ AC_MSG_RESULT([$hard_links]) -+ if test "$hard_links" = no; then -+ AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) -+ need_locks=warn -+ fi -+else -+ need_locks=no -+fi -+_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -+])# _LT_COMPILER_FILE_LOCKS -+ -+ -+# _LT_CHECK_OBJDIR -+# ---------------- -+m4_defun([_LT_CHECK_OBJDIR], -+[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -+[rm -f .libs 2>/dev/null -+mkdir .libs 2>/dev/null -+if test -d .libs; then -+ lt_cv_objdir=.libs -+else -+ # MS-DOS does not allow filenames that begin with a dot. -+ lt_cv_objdir=_libs -+fi -+rmdir .libs 2>/dev/null]) -+objdir=$lt_cv_objdir -+_LT_DECL([], [objdir], [0], -+ [The name of the directory that contains temporary libtool files])dnl -+m4_pattern_allow([LT_OBJDIR])dnl -+AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", -+ [Define to the sub-directory in which libtool stores uninstalled libraries.]) -+])# _LT_CHECK_OBJDIR -+ -+ -+# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -+# -------------------------------------- -+# Check hardcoding attributes. -+m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -+[AC_MSG_CHECKING([how to hardcode library paths into programs]) -+_LT_TAGVAR(hardcode_action, $1)= -+if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || -+ test -n "$_LT_TAGVAR(runpath_var, $1)" || -+ test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then -+ -+ # We can hardcode non-existent directories. -+ if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && -+ # If the only mechanism to avoid hardcoding is shlibpath_var, we -+ # have to relink, otherwise we might link with an installed library -+ # when we should be linking with a yet-to-be-installed one -+ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && -+ test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then -+ # Linking always hardcodes the temporary library directory. -+ _LT_TAGVAR(hardcode_action, $1)=relink -+ else -+ # We can link without hardcoding, and we can hardcode nonexisting dirs. -+ _LT_TAGVAR(hardcode_action, $1)=immediate -+ fi -+else -+ # We cannot hardcode anything, or else we can only hardcode existing -+ # directories. -+ _LT_TAGVAR(hardcode_action, $1)=unsupported -+fi -+AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) -+ -+if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || -+ test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then -+ # Fast installation is not supported -+ enable_fast_install=no -+elif test "$shlibpath_overrides_runpath" = yes || -+ test "$enable_shared" = no; then -+ # Fast installation is not necessary -+ enable_fast_install=needless -+fi -+_LT_TAGDECL([], [hardcode_action], [0], -+ [How to hardcode a shared library path into an executable]) -+])# _LT_LINKER_HARDCODE_LIBPATH -+ -+ -+# _LT_CMD_STRIPLIB -+# ---------------- -+m4_defun([_LT_CMD_STRIPLIB], -+[m4_require([_LT_DECL_EGREP]) -+striplib= -+old_striplib= -+AC_MSG_CHECKING([whether stripping libraries is possible]) -+if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then -+ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" -+ test -z "$striplib" && striplib="$STRIP --strip-unneeded" -+ AC_MSG_RESULT([yes]) -+else -+# FIXME - insert some real tests, host_os isn't really good enough -+ case $host_os in -+ darwin*) -+ if test -n "$STRIP" ; then -+ striplib="$STRIP -x" -+ old_striplib="$STRIP -S" -+ AC_MSG_RESULT([yes]) -+ else -+ AC_MSG_RESULT([no]) -+ fi -+ ;; -+ *) -+ AC_MSG_RESULT([no]) -+ ;; -+ esac -+fi -+_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -+_LT_DECL([], [striplib], [1]) -+])# _LT_CMD_STRIPLIB -+ -+ -+# _LT_SYS_DYNAMIC_LINKER([TAG]) -+# ----------------------------- -+# PORTME Fill in your ld.so characteristics -+m4_defun([_LT_SYS_DYNAMIC_LINKER], -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl -+m4_require([_LT_DECL_EGREP])dnl -+m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+m4_require([_LT_DECL_OBJDUMP])dnl -+m4_require([_LT_DECL_SED])dnl -+m4_require([_LT_CHECK_SHELL_FEATURES])dnl -+AC_MSG_CHECKING([dynamic linker characteristics]) -+m4_if([$1], -+ [], [ -+if test "$GCC" = yes; then -+ case $host_os in -+ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; -+ *) lt_awk_arg="/^libraries:/" ;; -+ esac -+ case $host_os in -+ mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; -+ *) lt_sed_strip_eq="s,=/,/,g" ;; -+ esac -+ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` -+ case $lt_search_path_spec in -+ *\;*) -+ # if the path contains ";" then we assume it to be the separator -+ # otherwise default to the standard path separator (i.e. ":") - it is -+ # assumed that no part of a normal pathname contains ";" but that should -+ # okay in the real world where ";" in dirpaths is itself problematic. -+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` -+ ;; -+ *) -+ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` -+ ;; -+ esac -+ # Ok, now we have the path, separated by spaces, we can step through it -+ # and add multilib dir if necessary. -+ lt_tmp_lt_search_path_spec= -+ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` -+ for lt_sys_path in $lt_search_path_spec; do -+ if test -d "$lt_sys_path/$lt_multi_os_dir"; then -+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" -+ else -+ test -d "$lt_sys_path" && \ -+ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" -+ fi -+ done -+ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -+BEGIN {RS=" "; FS="/|\n";} { -+ lt_foo=""; -+ lt_count=0; -+ for (lt_i = NF; lt_i > 0; lt_i--) { -+ if ($lt_i != "" && $lt_i != ".") { -+ if ($lt_i == "..") { -+ lt_count++; -+ } else { -+ if (lt_count == 0) { -+ lt_foo="/" $lt_i lt_foo; -+ } else { -+ lt_count--; -+ } -+ } -+ } -+ } -+ if (lt_foo != "") { lt_freq[[lt_foo]]++; } -+ if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -+}'` -+ # AWK program above erroneously prepends '/' to C:/dos/paths -+ # for these hosts. -+ case $host_os in -+ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ -+ $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; -+ esac -+ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -+else -+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -+fi]) -+library_names_spec= -+libname_spec='lib$name' -+soname_spec= -+shrext_cmds=".so" -+postinstall_cmds= -+postuninstall_cmds= -+finish_cmds= -+finish_eval= -+shlibpath_var= -+shlibpath_overrides_runpath=unknown -+version_type=none -+dynamic_linker="$host_os ld.so" -+sys_lib_dlsearch_path_spec="/lib /usr/lib" -+need_lib_prefix=unknown -+hardcode_into_libs=no -+ -+# when you set need_version to no, make sure it does not cause -set_version -+# flags to be left without arguments -+need_version=unknown -+ -+case $host_os in -+aix3*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' -+ shlibpath_var=LIBPATH -+ -+ # AIX 3 has no versioning support, so we append a major version to the name. -+ soname_spec='${libname}${release}${shared_ext}$major' -+ ;; -+ -+aix[[4-9]]*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ hardcode_into_libs=yes -+ if test "$host_cpu" = ia64; then -+ # AIX 5 supports IA64 -+ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' -+ shlibpath_var=LD_LIBRARY_PATH -+ else -+ # With GCC up to 2.95.x, collect2 would create an import file -+ # for dependence libraries. The import file would start with -+ # the line `#! .'. This would cause the generated library to -+ # depend on `.', always an invalid library. This was fixed in -+ # development snapshots of GCC prior to 3.0. -+ case $host_os in -+ aix4 | aix4.[[01]] | aix4.[[01]].*) -+ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' -+ echo ' yes ' -+ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then -+ : -+ else -+ can_build_shared=no -+ fi -+ ;; -+ esac -+ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct -+ # soname into executable. Probably we can add versioning support to -+ # collect2, so additional links can be useful in future. -+ if test "$aix_use_runtimelinking" = yes; then -+ # If using run time linking (on AIX 4.2 or later) use lib.so -+ # instead of lib.a to let people know that these are not -+ # typical AIX shared libraries. -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ else -+ # We preserve .a as extension for shared libraries through AIX4.2 -+ # and later when we are not doing run time linking. -+ library_names_spec='${libname}${release}.a $libname.a' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ fi -+ shlibpath_var=LIBPATH -+ fi -+ ;; -+ -+amigaos*) -+ case $host_cpu in -+ powerpc) -+ # Since July 2007 AmigaOS4 officially supports .so libraries. -+ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ ;; -+ m68k) -+ library_names_spec='$libname.ixlibrary $libname.a' -+ # Create ${libname}_ixlibrary.a entries in /sys/libs. -+ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' -+ ;; -+ esac -+ ;; -+ -+beos*) -+ library_names_spec='${libname}${shared_ext}' -+ dynamic_linker="$host_os ld.so" -+ shlibpath_var=LIBRARY_PATH -+ ;; -+ -+bsdi[[45]]*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" -+ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" -+ # the default ld.so.conf also contains /usr/contrib/lib and -+ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow -+ # libtool to hard-code these into programs -+ ;; -+ -+cygwin* | mingw* | pw32* | cegcc*) -+ version_type=windows -+ shrext_cmds=".dll" -+ need_version=no -+ need_lib_prefix=no -+ -+ case $GCC,$cc_basename in -+ yes,*) -+ # gcc -+ library_names_spec='$libname.dll.a' -+ # DLL is installed to $(libdir)/../bin by postinstall_cmds -+ postinstall_cmds='base_file=`basename \${file}`~ -+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ -+ dldir=$destdir/`dirname \$dlpath`~ -+ test -d \$dldir || mkdir -p \$dldir~ -+ $install_prog $dir/$dlname \$dldir/$dlname~ -+ chmod a+x \$dldir/$dlname~ -+ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then -+ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; -+ fi' -+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ -+ dlpath=$dir/\$dldll~ -+ $RM \$dlpath' -+ shlibpath_overrides_runpath=yes -+ -+ case $host_os in -+ cygwin*) -+ # Cygwin DLLs use 'cyg' prefix rather than 'lib' -+ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -+m4_if([$1], [],[ -+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) -+ ;; -+ mingw* | cegcc*) -+ # MinGW DLLs use traditional 'lib' prefix -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -+ ;; -+ pw32*) -+ # pw32 DLLs use 'pw' prefix rather than 'lib' -+ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -+ ;; -+ esac -+ dynamic_linker='Win32 ld.exe' -+ ;; -+ -+ *,cl*) -+ # Native MSVC -+ libname_spec='$name' -+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -+ library_names_spec='${libname}.dll.lib' -+ -+ case $build_os in -+ mingw*) -+ sys_lib_search_path_spec= -+ lt_save_ifs=$IFS -+ IFS=';' -+ for lt_path in $LIB -+ do -+ IFS=$lt_save_ifs -+ # Let DOS variable expansion print the short 8.3 style file name. -+ lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` -+ sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" -+ done -+ IFS=$lt_save_ifs -+ # Convert to MSYS style. -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` -+ ;; -+ cygwin*) -+ # Convert to unix form, then to dos form, then back to unix form -+ # but this time dos style (no spaces!) so that the unix form looks -+ # like /cygdrive/c/PROGRA~1:/cygdr... -+ sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` -+ sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` -+ sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -+ ;; -+ *) -+ sys_lib_search_path_spec="$LIB" -+ if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then -+ # It is most probably a Windows format PATH. -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` -+ else -+ sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` -+ fi -+ # FIXME: find the short name or the path components, as spaces are -+ # common. (e.g. "Program Files" -> "PROGRA~1") -+ ;; -+ esac -+ -+ # DLL is installed to $(libdir)/../bin by postinstall_cmds -+ postinstall_cmds='base_file=`basename \${file}`~ -+ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ -+ dldir=$destdir/`dirname \$dlpath`~ -+ test -d \$dldir || mkdir -p \$dldir~ -+ $install_prog $dir/$dlname \$dldir/$dlname' -+ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ -+ dlpath=$dir/\$dldll~ -+ $RM \$dlpath' -+ shlibpath_overrides_runpath=yes -+ dynamic_linker='Win32 link.exe' -+ ;; -+ -+ *) -+ # Assume MSVC wrapper -+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' -+ dynamic_linker='Win32 ld.exe' -+ ;; -+ esac -+ # FIXME: first we should search . and the directory the executable is in -+ shlibpath_var=PATH -+ ;; -+ -+darwin* | rhapsody*) -+ dynamic_linker="$host_os dyld" -+ version_type=darwin -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' -+ soname_spec='${libname}${release}${major}$shared_ext' -+ shlibpath_overrides_runpath=yes -+ shlibpath_var=DYLD_LIBRARY_PATH -+ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -+m4_if([$1], [],[ -+ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) -+ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' -+ ;; -+ -+dgux*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ ;; -+ -+freebsd* | dragonfly*) -+ # DragonFly does not have aout. When/if they implement a new -+ # versioning mechanism, adjust this. -+ if test -x /usr/bin/objformat; then -+ objformat=`/usr/bin/objformat` -+ else -+ case $host_os in -+ freebsd[[23]].*) objformat=aout ;; -+ *) objformat=elf ;; -+ esac -+ fi -+ version_type=freebsd-$objformat -+ case $version_type in -+ freebsd-elf*) -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' -+ need_version=no -+ need_lib_prefix=no -+ ;; -+ freebsd-*) -+ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' -+ need_version=yes -+ ;; -+ esac -+ shlibpath_var=LD_LIBRARY_PATH -+ case $host_os in -+ freebsd2.*) -+ shlibpath_overrides_runpath=yes -+ ;; -+ freebsd3.[[01]]* | freebsdelf3.[[01]]*) -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ -+ freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ *) # from 4.6 on, and DragonFly -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ esac -+ ;; -+ -+gnu*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ -+haiku*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ dynamic_linker="$host_os runtime_loader" -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' -+ hardcode_into_libs=yes -+ ;; -+ -+hpux9* | hpux10* | hpux11*) -+ # Give a soname corresponding to the major version so that dld.sl refuses to -+ # link against other versions. -+ version_type=sunos -+ need_lib_prefix=no -+ need_version=no -+ case $host_cpu in -+ ia64*) -+ shrext_cmds='.so' -+ hardcode_into_libs=yes -+ dynamic_linker="$host_os dld.so" -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ if test "X$HPUX_IA64_MODE" = X32; then -+ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" -+ else -+ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" -+ fi -+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -+ ;; -+ hppa*64*) -+ shrext_cmds='.sl' -+ hardcode_into_libs=yes -+ dynamic_linker="$host_os dld.sl" -+ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH -+ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" -+ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec -+ ;; -+ *) -+ shrext_cmds='.sl' -+ dynamic_linker="$host_os dld.sl" -+ shlibpath_var=SHLIB_PATH -+ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ ;; -+ esac -+ # HP-UX runs *really* slowly unless shared libraries are mode 555, ... -+ postinstall_cmds='chmod 555 $lib' -+ # or fails outright, so override atomically: -+ install_override_mode=555 -+ ;; -+ -+interix[[3-9]]*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ -+irix5* | irix6* | nonstopux*) -+ case $host_os in -+ nonstopux*) version_type=nonstopux ;; -+ *) -+ if test "$lt_cv_prog_gnu_ld" = yes; then -+ version_type=linux # correct to gnu/linux during the next big refactor -+ else -+ version_type=irix -+ fi ;; -+ esac -+ need_lib_prefix=no -+ need_version=no -+ soname_spec='${libname}${release}${shared_ext}$major' -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' -+ case $host_os in -+ irix5* | nonstopux*) -+ libsuff= shlibsuff= -+ ;; -+ *) -+ case $LD in # libtool.m4 will add one of these switches to LD -+ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") -+ libsuff= shlibsuff= libmagic=32-bit;; -+ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") -+ libsuff=32 shlibsuff=N32 libmagic=N32;; -+ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") -+ libsuff=64 shlibsuff=64 libmagic=64-bit;; -+ *) libsuff= shlibsuff= libmagic=never-match;; -+ esac -+ ;; -+ esac -+ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH -+ shlibpath_overrides_runpath=no -+ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" -+ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" -+ hardcode_into_libs=yes -+ ;; -+ -+# No shared lib support for Linux oldld, aout, or coff. -+linux*oldld* | linux*aout* | linux*coff*) -+ dynamic_linker=no -+ ;; -+ -+# This must be glibc/ELF. -+linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ -+ # Some binutils ld are patched to set DT_RUNPATH -+ AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], -+ [lt_cv_shlibpath_overrides_runpath=no -+ save_LDFLAGS=$LDFLAGS -+ save_libdir=$libdir -+ eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ -+ LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" -+ AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], -+ [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], -+ [lt_cv_shlibpath_overrides_runpath=yes])]) -+ LDFLAGS=$save_LDFLAGS -+ libdir=$save_libdir -+ ]) -+ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath -+ -+ # This implies no fast_install, which is unacceptable. -+ # Some rework will be needed to allow for fast_install -+ # before this can be enabled. -+ hardcode_into_libs=yes -+ -+ # Append ld.so.conf contents to the search path -+ if test -f /etc/ld.so.conf; then -+ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` -+ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" -+ fi -+ -+ # We used to test for /lib/ld.so.1 and disable shared libraries on -+ # powerpc, because MkLinux only supported shared libraries with the -+ # GNU dynamic linker. Since this was broken with cross compilers, -+ # most powerpc-linux boxes support dynamic linking these days and -+ # people can always --disable-shared, the test was removed, and we -+ # assume the GNU/Linux dynamic linker is in use. -+ dynamic_linker='GNU/Linux ld.so' -+ ;; -+ -+netbsdelf*-gnu) -+ version_type=linux -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='NetBSD ld.elf_so' -+ ;; -+ -+netbsd*) -+ version_type=sunos -+ need_lib_prefix=no -+ need_version=no -+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -+ dynamic_linker='NetBSD (a.out) ld.so' -+ else -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ dynamic_linker='NetBSD ld.elf_so' -+ fi -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ ;; -+ -+newsos6) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ ;; -+ -+*nto* | *qnx*) -+ version_type=qnx -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ dynamic_linker='ldqnx.so' -+ ;; -+ -+openbsd*) -+ version_type=sunos -+ sys_lib_dlsearch_path_spec="/usr/lib" -+ need_lib_prefix=no -+ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. -+ case $host_os in -+ openbsd3.3 | openbsd3.3.*) need_version=yes ;; -+ *) need_version=no ;; -+ esac -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' -+ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ case $host_os in -+ openbsd2.[[89]] | openbsd2.[[89]].*) -+ shlibpath_overrides_runpath=no -+ ;; -+ *) -+ shlibpath_overrides_runpath=yes -+ ;; -+ esac -+ else -+ shlibpath_overrides_runpath=yes -+ fi -+ ;; -+ -+os2*) -+ libname_spec='$name' -+ shrext_cmds=".dll" -+ need_lib_prefix=no -+ library_names_spec='$libname${shared_ext} $libname.a' -+ dynamic_linker='OS/2 ld.exe' -+ shlibpath_var=LIBPATH -+ ;; -+ -+osf3* | osf4* | osf5*) -+ version_type=osf -+ need_lib_prefix=no -+ need_version=no -+ soname_spec='${libname}${release}${shared_ext}$major' -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ shlibpath_var=LD_LIBRARY_PATH -+ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" -+ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" -+ ;; -+ -+rdos*) -+ dynamic_linker=no -+ ;; -+ -+solaris*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ # ldd complains unless libraries are executable -+ postinstall_cmds='chmod +x $lib' -+ ;; -+ -+sunos4*) -+ version_type=sunos -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' -+ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ if test "$with_gnu_ld" = yes; then -+ need_lib_prefix=no -+ fi -+ need_version=yes -+ ;; -+ -+sysv4 | sysv4.3*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ case $host_vendor in -+ sni) -+ shlibpath_overrides_runpath=no -+ need_lib_prefix=no -+ runpath_var=LD_RUN_PATH -+ ;; -+ siemens) -+ need_lib_prefix=no -+ ;; -+ motorola) -+ need_lib_prefix=no -+ need_version=no -+ shlibpath_overrides_runpath=no -+ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' -+ ;; -+ esac -+ ;; -+ -+sysv4*MP*) -+ if test -d /usr/nec ;then -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' -+ soname_spec='$libname${shared_ext}.$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ fi -+ ;; -+ -+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) -+ version_type=freebsd-elf -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=yes -+ hardcode_into_libs=yes -+ if test "$with_gnu_ld" = yes; then -+ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' -+ else -+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' -+ case $host_os in -+ sco3.2v5*) -+ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" -+ ;; -+ esac -+ fi -+ sys_lib_dlsearch_path_spec='/usr/lib' -+ ;; -+ -+tpf*) -+ # TPF is a cross-target only. Preferred cross-host = GNU/Linux. -+ version_type=linux # correct to gnu/linux during the next big refactor -+ need_lib_prefix=no -+ need_version=no -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ shlibpath_var=LD_LIBRARY_PATH -+ shlibpath_overrides_runpath=no -+ hardcode_into_libs=yes -+ ;; -+ -+uts4*) -+ version_type=linux # correct to gnu/linux during the next big refactor -+ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' -+ soname_spec='${libname}${release}${shared_ext}$major' -+ shlibpath_var=LD_LIBRARY_PATH -+ ;; -+ -+*) -+ dynamic_linker=no -+ ;; -+esac -+AC_MSG_RESULT([$dynamic_linker]) -+test "$dynamic_linker" = no && can_build_shared=no -+ -+variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -+if test "$GCC" = yes; then -+ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -+fi -+ -+if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then -+ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -+fi -+if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then -+ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -+fi -+ -+_LT_DECL([], [variables_saved_for_relink], [1], -+ [Variables whose values should be saved in libtool wrapper scripts and -+ restored at link time]) -+_LT_DECL([], [need_lib_prefix], [0], -+ [Do we need the "lib" prefix for modules?]) -+_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -+_LT_DECL([], [version_type], [0], [Library versioning type]) -+_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -+_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -+_LT_DECL([], [shlibpath_overrides_runpath], [0], -+ [Is shlibpath searched before the hard-coded library search path?]) -+_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -+_LT_DECL([], [library_names_spec], [1], -+ [[List of archive names. First name is the real one, the rest are links. -+ The last name is the one that the linker finds with -lNAME]]) -+_LT_DECL([], [soname_spec], [1], -+ [[The coded name of the library, if different from the real name]]) -+_LT_DECL([], [install_override_mode], [1], -+ [Permission mode override for installation of shared libraries]) -+_LT_DECL([], [postinstall_cmds], [2], -+ [Command to use after installation of a shared archive]) -+_LT_DECL([], [postuninstall_cmds], [2], -+ [Command to use after uninstallation of a shared archive]) -+_LT_DECL([], [finish_cmds], [2], -+ [Commands used to finish a libtool library installation in a directory]) -+_LT_DECL([], [finish_eval], [1], -+ [[As "finish_cmds", except a single script fragment to be evaled but -+ not shown]]) -+_LT_DECL([], [hardcode_into_libs], [0], -+ [Whether we should hardcode library paths into libraries]) -+_LT_DECL([], [sys_lib_search_path_spec], [2], -+ [Compile-time system search path for libraries]) -+_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], -+ [Run-time system search path for libraries]) -+])# _LT_SYS_DYNAMIC_LINKER -+ -+ -+# _LT_PATH_TOOL_PREFIX(TOOL) -+# -------------------------- -+# find a file program which can recognize shared library -+AC_DEFUN([_LT_PATH_TOOL_PREFIX], -+[m4_require([_LT_DECL_EGREP])dnl -+AC_MSG_CHECKING([for $1]) -+AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -+[case $MAGIC_CMD in -+[[\\/*] | ?:[\\/]*]) -+ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. -+ ;; -+*) -+ lt_save_MAGIC_CMD="$MAGIC_CMD" -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+dnl $ac_dummy forces splitting on constant user-supplied paths. -+dnl POSIX.2 word splitting is done only on the output of word expansions, -+dnl not every word. This closes a longstanding sh security hole. -+ ac_dummy="m4_if([$2], , $PATH, [$2])" -+ for ac_dir in $ac_dummy; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ if test -f $ac_dir/$1; then -+ lt_cv_path_MAGIC_CMD="$ac_dir/$1" -+ if test -n "$file_magic_test_file"; then -+ case $deplibs_check_method in -+ "file_magic "*) -+ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` -+ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -+ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | -+ $EGREP "$file_magic_regex" > /dev/null; then -+ : -+ else -+ cat <<_LT_EOF 1>&2 -+ -+*** Warning: the command libtool uses to detect shared libraries, -+*** $file_magic_cmd, produces output that libtool cannot recognize. -+*** The result is that libtool may fail to recognize shared libraries -+*** as such. This will affect the creation of libtool libraries that -+*** depend on shared libraries, but programs linked with such libtool -+*** libraries will work regardless of this problem. Nevertheless, you -+*** may want to report the problem to your system manager and/or to -+*** bug-libtool@gnu.org -+ -+_LT_EOF -+ fi ;; -+ esac -+ fi -+ break -+ fi -+ done -+ IFS="$lt_save_ifs" -+ MAGIC_CMD="$lt_save_MAGIC_CMD" -+ ;; -+esac]) -+MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -+if test -n "$MAGIC_CMD"; then -+ AC_MSG_RESULT($MAGIC_CMD) -+else -+ AC_MSG_RESULT(no) -+fi -+_LT_DECL([], [MAGIC_CMD], [0], -+ [Used to examine libraries when file_magic_cmd begins with "file"])dnl -+])# _LT_PATH_TOOL_PREFIX -+ -+# Old name: -+AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) -+ -+ -+# _LT_PATH_MAGIC -+# -------------- -+# find a file program which can recognize a shared library -+m4_defun([_LT_PATH_MAGIC], -+[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -+if test -z "$lt_cv_path_MAGIC_CMD"; then -+ if test -n "$ac_tool_prefix"; then -+ _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) -+ else -+ MAGIC_CMD=: -+ fi -+fi -+])# _LT_PATH_MAGIC -+ -+ -+# LT_PATH_LD -+# ---------- -+# find the pathname to the GNU or non-GNU linker -+AC_DEFUN([LT_PATH_LD], -+[AC_REQUIRE([AC_PROG_CC])dnl -+AC_REQUIRE([AC_CANONICAL_HOST])dnl -+AC_REQUIRE([AC_CANONICAL_BUILD])dnl -+m4_require([_LT_DECL_SED])dnl -+m4_require([_LT_DECL_EGREP])dnl -+m4_require([_LT_PROG_ECHO_BACKSLASH])dnl -+ -+AC_ARG_WITH([gnu-ld], -+ [AS_HELP_STRING([--with-gnu-ld], -+ [assume the C compiler uses GNU ld @<:@default=no@:>@])], -+ [test "$withval" = no || with_gnu_ld=yes], -+ [with_gnu_ld=no])dnl -+ -+ac_prog=ld -+if test "$GCC" = yes; then -+ # Check if gcc -print-prog-name=ld gives a path. -+ AC_MSG_CHECKING([for ld used by $CC]) -+ case $host in -+ *-*-mingw*) -+ # gcc leaves a trailing carriage return which upsets mingw -+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; -+ *) -+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; -+ esac -+ case $ac_prog in -+ # Accept absolute paths. -+ [[\\/]]* | ?:[[\\/]]*) -+ re_direlt='/[[^/]][[^/]]*/\.\./' -+ # Canonicalize the pathname of ld -+ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` -+ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do -+ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` -+ done -+ test -z "$LD" && LD="$ac_prog" -+ ;; -+ "") -+ # If it fails, then pretend we aren't using GCC. -+ ac_prog=ld -+ ;; -+ *) -+ # If it is relative, then search for the first ld in PATH. -+ with_gnu_ld=unknown -+ ;; -+ esac -+elif test "$with_gnu_ld" = yes; then -+ AC_MSG_CHECKING([for GNU ld]) -+else -+ AC_MSG_CHECKING([for non-GNU ld]) -+fi -+AC_CACHE_VAL(lt_cv_path_LD, -+[if test -z "$LD"; then -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -+ lt_cv_path_LD="$ac_dir/$ac_prog" -+ # Check to see if the program is GNU ld. I'd rather use --version, -+ # but apparently some variants of GNU ld only accept -v. -+ # Break only if it was the GNU/non-GNU ld that we prefer. -+ case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then -+ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' -+ lt_cv_file_magic_cmd='func_win32_libid' -+ else -+ # Keep this pattern in sync with the one in func_win32_libid. -+ lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' -+ lt_cv_file_magic_cmd='$OBJDUMP -f' -+ fi -+ ;; -+ -+cegcc*) -+ # use the weaker test based on 'objdump'. See mingw*. -+ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' -+ lt_cv_file_magic_cmd='$OBJDUMP -f' -+ ;; -+ -+darwin* | rhapsody*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+freebsd* | dragonfly*) -+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then -+ case $host_cpu in -+ i*86 ) -+ # Not sure whether the presence of OpenBSD here was a mistake. -+ # Let's accept both of them until this is cleared up. -+ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' -+ lt_cv_file_magic_cmd=/usr/bin/file -+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` -+ ;; -+ esac -+ else -+ lt_cv_deplibs_check_method=pass_all -+ fi -+ ;; -+ -+gnu*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+haiku*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+hpux10.20* | hpux11*) -+ lt_cv_file_magic_cmd=/usr/bin/file -+ case $host_cpu in -+ ia64*) -+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' -+ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so -+ ;; -+ hppa*64*) -+ [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] -+ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl -+ ;; -+ *) -+ lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' -+ lt_cv_file_magic_test_file=/usr/lib/libc.sl -+ ;; -+ esac -+ ;; -+ -+interix[[3-9]]*) -+ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here -+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' -+ ;; -+ -+irix5* | irix6* | nonstopux*) -+ case $LD in -+ *-32|*"-32 ") libmagic=32-bit;; -+ *-n32|*"-n32 ") libmagic=N32;; -+ *-64|*"-64 ") libmagic=64-bit;; -+ *) libmagic=never-match;; -+ esac -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+# This must be glibc/ELF. -+linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+netbsd* | netbsdelf*-gnu) -+ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then -+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' -+ else -+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' -+ fi -+ ;; -+ -+newos6*) -+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' -+ lt_cv_file_magic_cmd=/usr/bin/file -+ lt_cv_file_magic_test_file=/usr/lib/libnls.so -+ ;; -+ -+*nto* | *qnx*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+openbsd*) -+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' -+ else -+ lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' -+ fi -+ ;; -+ -+osf3* | osf4* | osf5*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+rdos*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+solaris*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ -+sysv4 | sysv4.3*) -+ case $host_vendor in -+ motorola) -+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' -+ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` -+ ;; -+ ncr) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ sequent) -+ lt_cv_file_magic_cmd='/bin/file' -+ lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' -+ ;; -+ sni) -+ lt_cv_file_magic_cmd='/bin/file' -+ lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" -+ lt_cv_file_magic_test_file=/lib/libc.so -+ ;; -+ siemens) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ pc) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+ esac -+ ;; -+ -+tpf*) -+ lt_cv_deplibs_check_method=pass_all -+ ;; -+esac -+]) -+ -+file_magic_glob= -+want_nocaseglob=no -+if test "$build" = "$host"; then -+ case $host_os in -+ mingw* | pw32*) -+ if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then -+ want_nocaseglob=yes -+ else -+ file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` -+ fi -+ ;; -+ esac -+fi -+ -+file_magic_cmd=$lt_cv_file_magic_cmd -+deplibs_check_method=$lt_cv_deplibs_check_method -+test -z "$deplibs_check_method" && deplibs_check_method=unknown -+ -+_LT_DECL([], [deplibs_check_method], [1], -+ [Method to check whether dependent libraries are shared objects]) -+_LT_DECL([], [file_magic_cmd], [1], -+ [Command to use when deplibs_check_method = "file_magic"]) -+_LT_DECL([], [file_magic_glob], [1], -+ [How to find potential files when deplibs_check_method = "file_magic"]) -+_LT_DECL([], [want_nocaseglob], [1], -+ [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -+])# _LT_CHECK_MAGIC_METHOD -+ -+ -+# LT_PATH_NM -+# ---------- -+# find the pathname to a BSD- or MS-compatible name lister -+AC_DEFUN([LT_PATH_NM], -+[AC_REQUIRE([AC_PROG_CC])dnl -+AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -+[if test -n "$NM"; then -+ # Let the user override the test. -+ lt_cv_path_NM="$NM" -+else -+ lt_nm_to_check="${ac_tool_prefix}nm" -+ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then -+ lt_nm_to_check="$lt_nm_to_check nm" -+ fi -+ for lt_tmp_nm in $lt_nm_to_check; do -+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do -+ IFS="$lt_save_ifs" -+ test -z "$ac_dir" && ac_dir=. -+ tmp_nm="$ac_dir/$lt_tmp_nm" -+ if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then -+ # Check to see if the nm accepts a BSD-compat flag. -+ # Adding the `sed 1q' prevents false positives on HP-UX, which says: -+ # nm: unknown option "B" ignored -+ # Tru64's nm complains that /dev/null is an invalid object file -+ case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in -+ */dev/null* | *'Invalid file or object type'*) -+ lt_cv_path_NM="$tmp_nm -B" -+ break -+ ;; -+ *) -+ case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in -+ */dev/null*) -+ lt_cv_path_NM="$tmp_nm -p" -+ break -+ ;; -+ *) -+ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but -+ continue # so that we can try to find one that supports BSD flags -+ ;; -+ esac -+ ;; -+ esac -+ fi -+ done -+ IFS="$lt_save_ifs" -+ done -+ : ${lt_cv_path_NM=no} -+fi]) -+if test "$lt_cv_path_NM" != "no"; then -+ NM="$lt_cv_path_NM" -+else -+ # Didn't find any BSD compatible name lister, look for dumpbin. -+ if test -n "$DUMPBIN"; then : -+ # Let the user override the test. -+ else -+ AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) -+ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in -+ *COFF*) -+ DUMPBIN="$DUMPBIN -symbols" -+ ;; -+ *) -+ DUMPBIN=: -+ ;; -+ esac -+ fi -+ AC_SUBST([DUMPBIN]) -+ if test "$DUMPBIN" != ":"; then -+ NM="$DUMPBIN" -+ fi -+fi -+test -z "$NM" && NM=nm -+AC_SUBST([NM]) -+_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl -+ -+AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], -+ [lt_cv_nm_interface="BSD nm" -+ echo "int some_variable = 0;" > conftest.$ac_ext -+ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) -+ (eval "$ac_compile" 2>conftest.err) -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) -+ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) -+ cat conftest.out >&AS_MESSAGE_LOG_FD -+ if $GREP 'External.*some_variable' conftest.out > /dev/null; then -+ lt_cv_nm_interface="MS dumpbin" -+ fi -+ rm -f conftest*]) -+])# LT_PATH_NM -+ -+# Old names: -+AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -+AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AM_PROG_NM], []) -+dnl AC_DEFUN([AC_PROG_NM], []) -+ -+# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -+# -------------------------------- -+# how to determine the name of the shared library -+# associated with a specific link library. -+# -- PORTME fill in with the dynamic library characteristics -+m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -+[m4_require([_LT_DECL_EGREP]) -+m4_require([_LT_DECL_OBJDUMP]) -+m4_require([_LT_DECL_DLLTOOL]) -+AC_CACHE_CHECK([how to associate runtime and link libraries], -+lt_cv_sharedlib_from_linklib_cmd, -+[lt_cv_sharedlib_from_linklib_cmd='unknown' -+ -+case $host_os in -+cygwin* | mingw* | pw32* | cegcc*) -+ # two different shell functions defined in ltmain.sh -+ # decide which to use based on capabilities of $DLLTOOL -+ case `$DLLTOOL --help 2>&1` in -+ *--identify-strict*) -+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib -+ ;; -+ *) -+ lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback -+ ;; -+ esac -+ ;; -+*) -+ # fallback: assume linklib IS sharedlib -+ lt_cv_sharedlib_from_linklib_cmd="$ECHO" -+ ;; -+esac -+]) -+sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -+test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO -+ -+_LT_DECL([], [sharedlib_from_linklib_cmd], [1], -+ [Command to associate shared and link libraries]) -+])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -+ -+ -+# _LT_PATH_MANIFEST_TOOL -+# ---------------------- -+# locate the manifest tool -+m4_defun([_LT_PATH_MANIFEST_TOOL], -+[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -+test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -+AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], -+ [lt_cv_path_mainfest_tool=no -+ echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD -+ $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out -+ cat conftest.err >&AS_MESSAGE_LOG_FD -+ if $GREP 'Manifest Tool' conftest.out > /dev/null; then -+ lt_cv_path_mainfest_tool=yes -+ fi -+ rm -f conftest*]) -+if test "x$lt_cv_path_mainfest_tool" != xyes; then -+ MANIFEST_TOOL=: -+fi -+_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -+])# _LT_PATH_MANIFEST_TOOL -+ -+ -+# LT_LIB_M -+# -------- -+# check for math library -+AC_DEFUN([LT_LIB_M], -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl -+LIBM= -+case $host in -+*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) -+ # These system don't have libm, or don't need it -+ ;; -+*-ncr-sysv4.3*) -+ AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") -+ AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") -+ ;; -+*) -+ AC_CHECK_LIB(m, cos, LIBM="-lm") -+ ;; -+esac -+AC_SUBST([LIBM]) -+])# LT_LIB_M -+ -+# Old name: -+AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_CHECK_LIBM], []) -+ -+ -+# _LT_COMPILER_NO_RTTI([TAGNAME]) -+# ------------------------------- -+m4_defun([_LT_COMPILER_NO_RTTI], -+[m4_require([_LT_TAG_COMPILER])dnl -+ -+_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -+ -+if test "$GCC" = yes; then -+ case $cc_basename in -+ nvcc*) -+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; -+ esac -+ -+ _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], -+ lt_cv_prog_compiler_rtti_exceptions, -+ [-fno-rtti -fno-exceptions], [], -+ [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -+fi -+_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], -+ [Compiler flag to turn off builtin functions]) -+])# _LT_COMPILER_NO_RTTI -+ -+ -+# _LT_CMD_GLOBAL_SYMBOLS -+# ---------------------- -+m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl -+AC_REQUIRE([AC_PROG_CC])dnl -+AC_REQUIRE([AC_PROG_AWK])dnl -+AC_REQUIRE([LT_PATH_NM])dnl -+AC_REQUIRE([LT_PATH_LD])dnl -+m4_require([_LT_DECL_SED])dnl -+m4_require([_LT_DECL_EGREP])dnl -+m4_require([_LT_TAG_COMPILER])dnl -+ -+# Check for command to grab the raw symbol name followed by C symbol from nm. -+AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -+AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -+[ -+# These are sane defaults that work on at least a few old systems. -+# [They come from Ultrix. What could be older than Ultrix?!! ;)] -+ -+# Character class describing NM global symbol codes. -+symcode='[[BCDEGRST]]' -+ -+# Regexp to match symbols that can be accessed directly from C. -+sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' -+ -+# Define system-specific variables. -+case $host_os in -+aix*) -+ symcode='[[BCDT]]' -+ ;; -+cygwin* | mingw* | pw32* | cegcc*) -+ symcode='[[ABCDGISTW]]' -+ ;; -+hpux*) -+ if test "$host_cpu" = ia64; then -+ symcode='[[ABCDEGRST]]' -+ fi -+ ;; -+irix* | nonstopux*) -+ symcode='[[BCDEGRST]]' -+ ;; -+osf*) -+ symcode='[[BCDEGQRST]]' -+ ;; -+solaris*) -+ symcode='[[BDRT]]' -+ ;; -+sco3.2v5*) -+ symcode='[[DT]]' -+ ;; -+sysv4.2uw2*) -+ symcode='[[DT]]' -+ ;; -+sysv5* | sco5v6* | unixware* | OpenUNIX*) -+ symcode='[[ABDT]]' -+ ;; -+sysv4) -+ symcode='[[DFNSTU]]' -+ ;; -+esac -+ -+# If we're using GNU nm, then use its standard symbol codes. -+case `$NM -V 2>&1` in -+*GNU* | *'with BFD'*) -+ symcode='[[ABCDGIRSTW]]' ;; -+esac -+ -+# Transform an extracted symbol line into a proper C declaration. -+# Some systems (esp. on ia64) link data and code symbols differently, -+# so use this general approach. -+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" -+ -+# Transform an extracted symbol line into symbol name and symbol address -+lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -+lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" -+ -+# Handle CRLF in mingw tool chain -+opt_cr= -+case $build_os in -+mingw*) -+ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp -+ ;; -+esac -+ -+# Try without a prefix underscore, then with it. -+for ac_symprfx in "" "_"; do -+ -+ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. -+ symxfrm="\\1 $ac_symprfx\\2 \\2" -+ -+ # Write the raw and C identifiers. -+ if test "$lt_cv_nm_interface" = "MS dumpbin"; then -+ # Fake it for dumpbin and say T for any non-static function -+ # and D for any global variable. -+ # Also find C++ and __fastcall symbols from MSVC++, -+ # which start with @ or ?. -+ lt_cv_sys_global_symbol_pipe="$AWK ['"\ -+" {last_section=section; section=\$ 3};"\ -+" /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\ -+" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -+" \$ 0!~/External *\|/{next};"\ -+" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -+" {if(hide[section]) next};"\ -+" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -+" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -+" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -+" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -+" ' prfx=^$ac_symprfx]" -+ else -+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" -+ fi -+ lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" -+ -+ # Check to see that the pipe works correctly. -+ pipe_works=no -+ -+ rm -f conftest* -+ cat > conftest.$ac_ext <<_LT_EOF -+#ifdef __cplusplus -+extern "C" { -+#endif -+char nm_test_var; -+void nm_test_func(void); -+void nm_test_func(void){} -+#ifdef __cplusplus -+} -+#endif -+int main(){nm_test_var='a';nm_test_func();return(0);} -+_LT_EOF -+ -+ if AC_TRY_EVAL(ac_compile); then -+ # Now try to grab the symbols. -+ nlist=conftest.nm -+ if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then -+ # Try sorting and uniquifying the output. -+ if sort "$nlist" | uniq > "$nlist"T; then -+ mv -f "$nlist"T "$nlist" -+ else -+ rm -f "$nlist"T -+ fi -+ -+ # Make sure that we snagged all the symbols we need. -+ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then -+ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then -+ cat <<_LT_EOF > conftest.$ac_ext -+/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -+#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -+/* DATA imports from DLLs on WIN32 con't be const, because runtime -+ relocations are performed -- see ld's documentation on pseudo-relocs. */ -+# define LT@&t@_DLSYM_CONST -+#elif defined(__osf__) -+/* This system does not cope well with relocations in const data. */ -+# define LT@&t@_DLSYM_CONST -+#else -+# define LT@&t@_DLSYM_CONST const -+#endif -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+_LT_EOF -+ # Now generate the symbol file. -+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' -+ -+ cat <<_LT_EOF >> conftest.$ac_ext -+ -+/* The mapping between symbol names and symbols. */ -+LT@&t@_DLSYM_CONST struct { -+ const char *name; -+ void *address; -+} -+lt__PROGRAM__LTX_preloaded_symbols[[]] = -+{ -+ { "@PROGRAM@", (void *) 0 }, -+_LT_EOF -+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext -+ cat <<\_LT_EOF >> conftest.$ac_ext -+ {0, (void *) 0} -+}; -+ -+/* This works around a problem in FreeBSD linker */ -+#ifdef FREEBSD_WORKAROUND -+static const void *lt_preloaded_setup() { -+ return lt__PROGRAM__LTX_preloaded_symbols; -+} -+#endif -+ -+#ifdef __cplusplus -+} -+#endif -+_LT_EOF -+ # Now try linking the two files. -+ mv conftest.$ac_objext conftstm.$ac_objext -+ lt_globsym_save_LIBS=$LIBS -+ lt_globsym_save_CFLAGS=$CFLAGS -+ LIBS="conftstm.$ac_objext" -+ CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" -+ if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then -+ pipe_works=yes -+ fi -+ LIBS=$lt_globsym_save_LIBS -+ CFLAGS=$lt_globsym_save_CFLAGS -+ else -+ echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD -+ fi -+ else -+ echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD -+ fi -+ else -+ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD -+ fi -+ else -+ echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD -+ cat conftest.$ac_ext >&5 -+ fi -+ rm -rf conftest* conftst* -+ -+ # Do not use the global_symbol_pipe unless it works. -+ if test "$pipe_works" = yes; then -+ break -+ else -+ lt_cv_sys_global_symbol_pipe= -+ fi -+done -+]) -+if test -z "$lt_cv_sys_global_symbol_pipe"; then -+ lt_cv_sys_global_symbol_to_cdecl= -+fi -+if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then -+ AC_MSG_RESULT(failed) -+else -+ AC_MSG_RESULT(ok) -+fi -+ -+# Response file support. -+if test "$lt_cv_nm_interface" = "MS dumpbin"; then -+ nm_file_list_spec='@' -+elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then -+ nm_file_list_spec='@' -+fi -+ -+_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], -+ [Take the output of nm and produce a listing of raw symbols and C names]) -+_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], -+ [Transform the output of nm in a proper C declaration]) -+_LT_DECL([global_symbol_to_c_name_address], -+ [lt_cv_sys_global_symbol_to_c_name_address], [1], -+ [Transform the output of nm in a C name address pair]) -+_LT_DECL([global_symbol_to_c_name_address_lib_prefix], -+ [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], -+ [Transform the output of nm in a C name address pair when lib prefix is needed]) -+_LT_DECL([], [nm_file_list_spec], [1], -+ [Specify filename containing input files for $NM]) -+]) # _LT_CMD_GLOBAL_SYMBOLS -+ -+ -+# _LT_COMPILER_PIC([TAGNAME]) -+# --------------------------- -+m4_defun([_LT_COMPILER_PIC], -+[m4_require([_LT_TAG_COMPILER])dnl -+_LT_TAGVAR(lt_prog_compiler_wl, $1)= -+_LT_TAGVAR(lt_prog_compiler_pic, $1)= -+_LT_TAGVAR(lt_prog_compiler_static, $1)= -+ -+m4_if([$1], [CXX], [ -+ # C++ specific cases for pic, static, wl, etc. -+ if test "$GXX" = yes; then -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ -+ case $host_os in -+ aix*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ fi -+ ;; -+ -+ amigaos*) -+ case $host_cpu in -+ powerpc) -+ # see comment about AmigaOS4 .so support -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ m68k) -+ # FIXME: we need at least 68020 code to build shared libraries, but -+ # adding the `-m68020' flag to GCC prevents building anything better, -+ # like `-m68040'. -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' -+ ;; -+ esac -+ ;; -+ -+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -+ # PIC is the default for these OSes. -+ ;; -+ mingw* | cygwin* | os2* | pw32* | cegcc*) -+ # This hack is so that the source file can tell whether it is being -+ # built for inclusion in a dll (and should export symbols for example). -+ # Although the cygwin gcc ignores -fPIC, still need this for old-style -+ # (--disable-auto-import) libraries -+ m4_if([$1], [GCJ], [], -+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) -+ ;; -+ darwin* | rhapsody*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' -+ ;; -+ *djgpp*) -+ # DJGPP does not support shared libraries at all -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)= -+ ;; -+ haiku*) -+ # PIC is the default for Haiku. -+ # The "-static" flag exists, but is broken. -+ _LT_TAGVAR(lt_prog_compiler_static, $1)= -+ ;; -+ interix[[3-9]]*) -+ # Interix 3.x gcc -fpic/-fPIC options generate broken code. -+ # Instead, we relocate shared libraries at runtime. -+ ;; -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic -+ fi -+ ;; -+ hpux*) -+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit -+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag -+ # sets the default TLS model and affects inlining. -+ case $host_cpu in -+ hppa*64*) -+ ;; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ esac -+ ;; -+ *qnx* | *nto*) -+ # QNX uses GNU C++, but need to define -shared option too, otherwise -+ # it will coredump. -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' -+ ;; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ esac -+ else -+ case $host_os in -+ aix[[4-9]]*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ else -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' -+ fi -+ ;; -+ chorus*) -+ case $cc_basename in -+ cxch68*) -+ # Green Hills C++ Compiler -+ # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" -+ ;; -+ esac -+ ;; -+ mingw* | cygwin* | os2* | pw32* | cegcc*) -+ # This hack is so that the source file can tell whether it is being -+ # built for inclusion in a dll (and should export symbols for example). -+ m4_if([$1], [GCJ], [], -+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) -+ ;; -+ dgux*) -+ case $cc_basename in -+ ec++*) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ ;; -+ ghcx*) -+ # Green Hills C++ Compiler -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ freebsd* | dragonfly*) -+ # FreeBSD uses GNU C++ -+ ;; -+ hpux9* | hpux10* | hpux11*) -+ case $cc_basename in -+ CC*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' -+ if test "$host_cpu" != ia64; then -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -+ fi -+ ;; -+ aCC*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' -+ case $host_cpu in -+ hppa*64*|ia64*) -+ # +Z the default -+ ;; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -+ ;; -+ esac -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ interix*) -+ # This is c89, which is MS Visual C++ (no shared libs) -+ # Anyone wants to do a port? -+ ;; -+ irix5* | irix6* | nonstopux*) -+ case $cc_basename in -+ CC*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ # CC pic flag -KPIC is the default. -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ case $cc_basename in -+ KCC*) -+ # KAI C++ Compiler -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ ecpc* ) -+ # old Intel C++ for x86_64 which still supported -KPIC. -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ ;; -+ icpc* ) -+ # Intel C++, used to be incompatible with GCC. -+ # ICC 10 doesn't accept -KPIC any more. -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ ;; -+ pgCC* | pgcpp*) -+ # Portland Group C++ compiler -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ cxx*) -+ # Compaq C++ -+ # Make sure the PIC flag is empty. It appears that all Alpha -+ # Linux and Compaq Tru64 Unix objects are PIC. -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)= -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) -+ # IBM XL 8.0, 9.0 on PPC and BlueGene -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' -+ ;; -+ *) -+ case `$CC -V 2>&1 | sed 5q` in -+ *Sun\ C*) -+ # Sun C++ 5.9 -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -+ ;; -+ esac -+ ;; -+ esac -+ ;; -+ lynxos*) -+ ;; -+ m88k*) -+ ;; -+ mvs*) -+ case $cc_basename in -+ cxx*) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ netbsd* | netbsdelf*-gnu) -+ ;; -+ *qnx* | *nto*) -+ # QNX uses GNU C++, but need to define -shared option too, otherwise -+ # it will coredump. -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' -+ ;; -+ osf3* | osf4* | osf5*) -+ case $cc_basename in -+ KCC*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' -+ ;; -+ RCC*) -+ # Rational C++ 2.4.1 -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ ;; -+ cxx*) -+ # Digital/Compaq C++ -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ # Make sure the PIC flag is empty. It appears that all Alpha -+ # Linux and Compaq Tru64 Unix objects are PIC. -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)= -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ psos*) -+ ;; -+ solaris*) -+ case $cc_basename in -+ CC* | sunCC*) -+ # Sun C++ 4.2, 5.x and Centerline C++ -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -+ ;; -+ gcx*) -+ # Green Hills C++ Compiler -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ sunos4*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.x -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ lcc*) -+ # Lucid -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -+ case $cc_basename in -+ CC*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ esac -+ ;; -+ tandem*) -+ case $cc_basename in -+ NCC*) -+ # NonStop-UX NCC 3.20 -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ ;; -+ *) -+ ;; -+ esac -+ ;; -+ vxworks*) -+ ;; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -+ ;; -+ esac -+ fi -+], -+[ -+ if test "$GCC" = yes; then -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ -+ case $host_os in -+ aix*) -+ # All AIX code is PIC. -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ fi -+ ;; -+ -+ amigaos*) -+ case $host_cpu in -+ powerpc) -+ # see comment about AmigaOS4 .so support -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ m68k) -+ # FIXME: we need at least 68020 code to build shared libraries, but -+ # adding the `-m68020' flag to GCC prevents building anything better, -+ # like `-m68040'. -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' -+ ;; -+ esac -+ ;; -+ -+ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) -+ # PIC is the default for these OSes. -+ ;; -+ -+ mingw* | cygwin* | pw32* | os2* | cegcc*) -+ # This hack is so that the source file can tell whether it is being -+ # built for inclusion in a dll (and should export symbols for example). -+ # Although the cygwin gcc ignores -fPIC, still need this for old-style -+ # (--disable-auto-import) libraries -+ m4_if([$1], [GCJ], [], -+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) -+ ;; -+ -+ darwin* | rhapsody*) -+ # PIC is the default on this platform -+ # Common symbols not allowed in MH_DYLIB files -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' -+ ;; -+ -+ haiku*) -+ # PIC is the default for Haiku. -+ # The "-static" flag exists, but is broken. -+ _LT_TAGVAR(lt_prog_compiler_static, $1)= -+ ;; -+ -+ hpux*) -+ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit -+ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag -+ # sets the default TLS model and affects inlining. -+ case $host_cpu in -+ hppa*64*) -+ # +Z the default -+ ;; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ esac -+ ;; -+ -+ interix[[3-9]]*) -+ # Interix 3.x gcc -fpic/-fPIC options generate broken code. -+ # Instead, we relocate shared libraries at runtime. -+ ;; -+ -+ msdosdjgpp*) -+ # Just because we use GCC doesn't mean we suddenly get shared libraries -+ # on systems that don't support them. -+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -+ enable_shared=no -+ ;; -+ -+ *nto* | *qnx*) -+ # QNX uses GNU C++, but need to define -shared option too, otherwise -+ # it will coredump. -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic -+ fi -+ ;; -+ -+ *) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ ;; -+ esac -+ -+ case $cc_basename in -+ nvcc*) # Cuda Compiler Driver 2.2 -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' -+ if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="-Xcompiler $_LT_TAGVAR(lt_prog_compiler_pic, $1)" -+ fi -+ ;; -+ esac -+ else -+ # PORTME Check for flag to pass linker flags through the system compiler. -+ case $host_os in -+ aix*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ if test "$host_cpu" = ia64; then -+ # AIX 5 now supports IA64 processor -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ else -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' -+ fi -+ ;; -+ -+ mingw* | cygwin* | pw32* | os2* | cegcc*) -+ # This hack is so that the source file can tell whether it is being -+ # built for inclusion in a dll (and should export symbols for example). -+ m4_if([$1], [GCJ], [], -+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) -+ ;; -+ -+ hpux9* | hpux10* | hpux11*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but -+ # not for PA HP-UX. -+ case $host_cpu in -+ hppa*64*|ia64*) -+ # +Z the default -+ ;; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' -+ ;; -+ esac -+ # Is there a better lt_prog_compiler_static that works with the bundled CC? -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ # PIC (with -KPIC) is the default. -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ -+ linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ case $cc_basename in -+ # old Intel for x86_64 which still supported -KPIC. -+ ecc*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ ;; -+ # icc used to be incompatible with GCC. -+ # ICC 10 doesn't accept -KPIC any more. -+ icc* | ifort*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ ;; -+ # Lahey Fortran 8.1. -+ lf95*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' -+ ;; -+ nagfor*) -+ # NAG Fortran compiler -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) -+ # Portland Group compilers (*not* the Pentium gcc compiler, -+ # which looks to be a dead project) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ ccc*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ # All Alpha code is PIC. -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ xl* | bgxl* | bgf* | mpixl*) -+ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' -+ ;; -+ *) -+ case `$CC -V 2>&1 | sed 5q` in -+ *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [[1-7]].* | *Sun*Fortran*\ 8.[[0-3]]*) -+ # Sun Fortran 8.3 passes all unrecognized flags to the linker -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='' -+ ;; -+ *Sun\ F* | *Sun*Fortran*) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -+ ;; -+ *Sun\ C*) -+ # Sun C 5.9 -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ ;; -+ *Intel*\ [[CF]]*Compiler*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' -+ ;; -+ *Portland\ Group*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ esac -+ ;; -+ esac -+ ;; -+ -+ newsos6) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ *nto* | *qnx*) -+ # QNX uses GNU C++, but need to define -shared option too, otherwise -+ # it will coredump. -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' -+ ;; -+ -+ osf3* | osf4* | osf5*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ # All OSF/1 code is PIC. -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ -+ rdos*) -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' -+ ;; -+ -+ solaris*) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ case $cc_basename in -+ f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; -+ esac -+ ;; -+ -+ sunos4*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ sysv4 | sysv4.2uw2* | sysv4.3*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec ;then -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ fi -+ ;; -+ -+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ unicos*) -+ _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' -+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -+ ;; -+ -+ uts4*) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' -+ _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' -+ ;; -+ -+ *) -+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no -+ ;; -+ esac -+ fi -+]) -+case $host_os in -+ # For platforms which do not support PIC, -DPIC is meaningless: -+ *djgpp*) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)= -+ ;; -+ *) -+ _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" -+ ;; -+esac -+ -+AC_CACHE_CHECK([for $compiler option to produce PIC], -+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], -+ [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -+_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) -+ -+# -+# Check to make sure the PIC flag actually works. -+# -+if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then -+ _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], -+ [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], -+ [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], -+ [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in -+ "" | " "*) ;; -+ *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; -+ esac], -+ [_LT_TAGVAR(lt_prog_compiler_pic, $1)= -+ _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -+fi -+_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], -+ [Additional compiler flags for building library objects]) -+ -+_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], -+ [How to pass a linker flag through the compiler]) -+# -+# Check to make sure the static flag actually works. -+# -+wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -+_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], -+ _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), -+ $lt_tmp_static_flag, -+ [], -+ [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -+_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], -+ [Compiler flag to prevent dynamic linking]) -+])# _LT_COMPILER_PIC -+ -+ -+# _LT_LINKER_SHLIBS([TAGNAME]) -+# ---------------------------- -+# See if the linker supports building shared libraries. -+m4_defun([_LT_LINKER_SHLIBS], -+[AC_REQUIRE([LT_PATH_LD])dnl -+AC_REQUIRE([LT_PATH_NM])dnl -+m4_require([_LT_PATH_MANIFEST_TOOL])dnl -+m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+m4_require([_LT_DECL_EGREP])dnl -+m4_require([_LT_DECL_SED])dnl -+m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -+m4_require([_LT_TAG_COMPILER])dnl -+AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -+m4_if([$1], [CXX], [ -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] -+ case $host_os in -+ aix[[4-9]]*) -+ # If we're using GNU nm, then we don't want the "-C" option. -+ # -C means demangle to AIX nm, but means don't demangle with GNU nm -+ # Also, AIX nm treats weak defined symbols like other global defined -+ # symbols, whereas GNU nm marks them as "W". -+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -+ else -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -+ fi -+ ;; -+ pw32*) -+ _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" -+ ;; -+ cygwin* | mingw* | cegcc*) -+ case $cc_basename in -+ cl*) -+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' -+ ;; -+ *) -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' -+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] -+ ;; -+ esac -+ ;; -+ linux* | k*bsd*-gnu | gnu*) -+ _LT_TAGVAR(link_all_deplibs, $1)=no -+ ;; -+ *) -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ ;; -+ esac -+], [ -+ runpath_var= -+ _LT_TAGVAR(allow_undefined_flag, $1)= -+ _LT_TAGVAR(always_export_symbols, $1)=no -+ _LT_TAGVAR(archive_cmds, $1)= -+ _LT_TAGVAR(archive_expsym_cmds, $1)= -+ _LT_TAGVAR(compiler_needs_object, $1)=no -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)= -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' -+ _LT_TAGVAR(hardcode_automatic, $1)=no -+ _LT_TAGVAR(hardcode_direct, $1)=no -+ _LT_TAGVAR(hardcode_direct_absolute, $1)=no -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -+ _LT_TAGVAR(hardcode_libdir_separator, $1)= -+ _LT_TAGVAR(hardcode_minus_L, $1)=no -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -+ _LT_TAGVAR(inherit_rpath, $1)=no -+ _LT_TAGVAR(link_all_deplibs, $1)=unknown -+ _LT_TAGVAR(module_cmds, $1)= -+ _LT_TAGVAR(module_expsym_cmds, $1)= -+ _LT_TAGVAR(old_archive_from_new_cmds, $1)= -+ _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= -+ _LT_TAGVAR(thread_safe_flag_spec, $1)= -+ _LT_TAGVAR(whole_archive_flag_spec, $1)= -+ # include_expsyms should be a list of space-separated symbols to be *always* -+ # included in the symbol list -+ _LT_TAGVAR(include_expsyms, $1)= -+ # exclude_expsyms can be an extended regexp of symbols to exclude -+ # it will be wrapped by ` (' and `)$', so one must not match beginning or -+ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', -+ # as well as any symbol that contains `d'. -+ _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] -+ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out -+ # platforms (ab)use it in PIC code, but their linkers get confused if -+ # the symbol is explicitly referenced. Since portable code cannot -+ # rely on this symbol name, it's probably fine to never include it in -+ # preloaded symbol tables. -+ # Exclude shared library initialization/finalization symbols. -+dnl Note also adjust exclude_expsyms for C++ above. -+ extract_expsyms_cmds= -+ -+ case $host_os in -+ cygwin* | mingw* | pw32* | cegcc*) -+ # FIXME: the MSVC++ port hasn't been tested in a loooong time -+ # When not using gcc, we currently assume that we are using -+ # Microsoft Visual C++. -+ if test "$GCC" != yes; then -+ with_gnu_ld=no -+ fi -+ ;; -+ interix*) -+ # we just hope/assume this is gcc and not c89 (= MSVC++) -+ with_gnu_ld=yes -+ ;; -+ openbsd*) -+ with_gnu_ld=no -+ ;; -+ linux* | k*bsd*-gnu | gnu*) -+ _LT_TAGVAR(link_all_deplibs, $1)=no -+ ;; -+ esac -+ -+ _LT_TAGVAR(ld_shlibs, $1)=yes -+ -+ # On some targets, GNU ld is compatible enough with the native linker -+ # that we're better off using the native interface for both. -+ lt_use_gnu_ld_interface=no -+ if test "$with_gnu_ld" = yes; then -+ case $host_os in -+ aix*) -+ # The AIX port of GNU ld has always aspired to compatibility -+ # with the native linker. However, as the warning in the GNU ld -+ # block says, versions before 2.19.5* couldn't really create working -+ # shared libraries, regardless of the interface used. -+ case `$LD -v 2>&1` in -+ *\ \(GNU\ Binutils\)\ 2.19.5*) ;; -+ *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; -+ *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; -+ *) -+ lt_use_gnu_ld_interface=yes -+ ;; -+ esac -+ ;; -+ *) -+ lt_use_gnu_ld_interface=yes -+ ;; -+ esac -+ fi -+ -+ if test "$lt_use_gnu_ld_interface" = yes; then -+ # If archive_cmds runs LD, not CC, wlarc should be empty -+ wlarc='${wl}' -+ -+ # Set some defaults for GNU ld with shared library support. These -+ # are reset later if shared libraries are not supported. Putting them -+ # here allows them to be overridden if necessary. -+ runpath_var=LD_RUN_PATH -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -+ # ancient GNU ld didn't support --whole-archive et. al. -+ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then -+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ _LT_TAGVAR(whole_archive_flag_spec, $1)= -+ fi -+ supports_anon_versioning=no -+ case `$LD -v 2>&1` in -+ *GNU\ gold*) supports_anon_versioning=yes ;; -+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 -+ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... -+ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... -+ *\ 2.11.*) ;; # other 2.11 versions -+ *) supports_anon_versioning=yes ;; -+ esac -+ -+ # See if GNU ld supports shared libraries. -+ case $host_os in -+ aix[[3-9]]*) -+ # On AIX/PPC, the GNU linker is very broken -+ if test "$host_cpu" != ia64; then -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ cat <<_LT_EOF 1>&2 -+ -+*** Warning: the GNU linker, at least up to release 2.19, is reported -+*** to be unable to reliably create shared libraries on AIX. -+*** Therefore, libtool is disabling shared libraries support. If you -+*** really care for shared libraries, you may want to install binutils -+*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -+*** You will then need to restart the configuration process. -+ -+_LT_EOF -+ fi -+ ;; -+ -+ amigaos*) -+ case $host_cpu in -+ powerpc) -+ # see comment about AmigaOS4 .so support -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='' -+ ;; -+ m68k) -+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ ;; -+ esac -+ ;; -+ -+ beos*) -+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ cygwin* | mingw* | pw32* | cegcc*) -+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, -+ # as there is no search path for DLLs. -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_TAGVAR(always_export_symbols, $1)=no -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' -+ _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] -+ -+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -+ # If the export-symbols file already is a .def file (1st line -+ # is EXPORTS), use it as is; otherwise, prepend... -+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ cp $export_symbols $output_objdir/$soname.def; -+ else -+ echo EXPORTS > $output_objdir/$soname.def; -+ cat $export_symbols >> $output_objdir/$soname.def; -+ fi~ -+ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ haiku*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ ;; -+ -+ interix[[3-9]]*) -+ _LT_TAGVAR(hardcode_direct, $1)=no -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. -+ # Instead, shared libraries are loaded at an image base (0x10000000 by -+ # default) and relocated if they conflict, which is a slow very memory -+ # consuming and fragmenting process. To avoid this, we pick a random, -+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link -+ # time. Moving up from 0x10000000 also allows more sbrk(2) space. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ ;; -+ -+ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) -+ tmp_diet=no -+ if test "$host_os" = linux-dietlibc; then -+ case $cc_basename in -+ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) -+ esac -+ fi -+ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ -+ && test "$tmp_diet" = no -+ then -+ tmp_addflag=' $pic_flag' -+ tmp_sharedflag='-shared' -+ case $cc_basename,$host_cpu in -+ pgcc*) # Portland Group C compiler -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ tmp_addflag=' $pic_flag' -+ ;; -+ pgf77* | pgf90* | pgf95* | pgfortran*) -+ # Portland Group f77 and f90 compilers -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ tmp_addflag=' $pic_flag -Mnomain' ;; -+ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 -+ tmp_addflag=' -i_dynamic' ;; -+ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 -+ tmp_addflag=' -i_dynamic -nofor_main' ;; -+ ifc* | ifort*) # Intel Fortran compiler -+ tmp_addflag=' -nofor_main' ;; -+ lf95*) # Lahey Fortran 8.1 -+ _LT_TAGVAR(whole_archive_flag_spec, $1)= -+ tmp_sharedflag='--shared' ;; -+ xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) -+ tmp_sharedflag='-qmkshrobj' -+ tmp_addflag= ;; -+ nvcc*) # Cuda Compiler Driver 2.2 -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ _LT_TAGVAR(compiler_needs_object, $1)=yes -+ ;; -+ esac -+ case `$CC -V 2>&1 | sed 5q` in -+ *Sun\ C*) # Sun C 5.9 -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ _LT_TAGVAR(compiler_needs_object, $1)=yes -+ tmp_sharedflag='-G' ;; -+ *Sun\ F*) # Sun Fortran 8.3 -+ tmp_sharedflag='-G' ;; -+ esac -+ _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ -+ if test "x$supports_anon_versioning" = xyes; then -+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ -+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -+ echo "local: *; };" >> $output_objdir/$libname.ver~ -+ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -+ fi -+ -+ case $cc_basename in -+ xlf* | bgf* | bgxlf* | mpixlf*) -+ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' -+ if test "x$supports_anon_versioning" = xyes; then -+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ -+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -+ echo "local: *; };" >> $output_objdir/$libname.ver~ -+ $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' -+ fi -+ ;; -+ esac -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ netbsd* | netbsdelf*-gnu) -+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then -+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' -+ wlarc= -+ else -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ fi -+ ;; -+ -+ solaris*) -+ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ cat <<_LT_EOF 1>&2 -+ -+*** Warning: The releases 2.8.* of the GNU linker cannot reliably -+*** create shared libraries on Solaris systems. Therefore, libtool -+*** is disabling shared libraries support. We urge you to upgrade GNU -+*** binutils to release 2.9.1 or newer. Another option is to modify -+*** your PATH or compiler configuration so that the native linker is -+*** used, and then restart. -+ -+_LT_EOF -+ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) -+ case `$LD -v 2>&1` in -+ *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ cat <<_LT_EOF 1>&2 -+ -+*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -+*** reliably create shared libraries on SCO systems. Therefore, libtool -+*** is disabling shared libraries support. We urge you to upgrade GNU -+*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -+*** your PATH or compiler configuration so that the native linker is -+*** used, and then restart. -+ -+_LT_EOF -+ ;; -+ *) -+ # For security reasons, it is highly recommended that you always -+ # use absolute paths for naming shared libraries, and exclude the -+ # DT_RUNPATH tag from executables and libraries. But doing so -+ # requires that you compile everything twice, which is a pain. -+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ -+ sunos4*) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ wlarc= -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ *) -+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ -+ if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then -+ runpath_var= -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)= -+ _LT_TAGVAR(whole_archive_flag_spec, $1)= -+ fi -+ else -+ # PORTME fill in a description of your system's linker (not GNU ld) -+ case $host_os in -+ aix3*) -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_TAGVAR(always_export_symbols, $1)=yes -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' -+ # Note: this linker hardcodes the directories in LIBPATH if there -+ # are no directories specified by -L. -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then -+ # Neither direct hardcoding nor static linking is supported with a -+ # broken collect2. -+ _LT_TAGVAR(hardcode_direct, $1)=unsupported -+ fi -+ ;; -+ -+ aix[[4-9]]*) -+ if test "$host_cpu" = ia64; then -+ # On IA64, the linker does run time linking by default, so we don't -+ # have to do anything special. -+ aix_use_runtimelinking=no -+ exp_sym_flag='-Bexport' -+ no_entry_flag="" -+ else -+ # If we're using GNU nm, then we don't want the "-C" option. -+ # -C means demangle to AIX nm, but means don't demangle with GNU nm -+ # Also, AIX nm treats weak defined symbols like other global -+ # defined symbols, whereas GNU nm marks them as "W". -+ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -+ else -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' -+ fi -+ aix_use_runtimelinking=no -+ -+ # Test if we are trying to use run time linking or normal -+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we -+ # need to do runtime linking. -+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) -+ for ld_flag in $LDFLAGS; do -+ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then -+ aix_use_runtimelinking=yes -+ break -+ fi -+ done -+ ;; -+ esac -+ -+ exp_sym_flag='-bexport' -+ no_entry_flag='-bnoentry' -+ fi -+ -+ # When large executables or shared objects are built, AIX ld can -+ # have problems creating the table of contents. If linking a library -+ # or program results in "error TOC overflow" add -mminimal-toc to -+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not -+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. -+ -+ _LT_TAGVAR(archive_cmds, $1)='' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':' -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' -+ -+ if test "$GCC" = yes; then -+ case $host_os in aix4.[[012]]|aix4.[[012]].*) -+ # We only want to do this on AIX 4.2 and lower, the check -+ # below for broken collect2 doesn't work under 4.3+ -+ collect2name=`${CC} -print-prog-name=collect2` -+ if test -f "$collect2name" && -+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null -+ then -+ # We have reworked collect2 -+ : -+ else -+ # We have old collect2 -+ _LT_TAGVAR(hardcode_direct, $1)=unsupported -+ # It fails to find uninstalled libraries when the uninstalled -+ # path is not listed in the libpath. Setting hardcode_minus_L -+ # to unsupported forces relinking -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)= -+ fi -+ ;; -+ esac -+ shared_flag='-shared' -+ if test "$aix_use_runtimelinking" = yes; then -+ shared_flag="$shared_flag "'${wl}-G' -+ fi -+ _LT_TAGVAR(link_all_deplibs, $1)=no -+ else -+ # not using gcc -+ if test "$host_cpu" = ia64; then -+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release -+ # chokes on -Wl,-G. The following line is correct: -+ shared_flag='-G' -+ else -+ if test "$aix_use_runtimelinking" = yes; then -+ shared_flag='${wl}-G' -+ else -+ shared_flag='${wl}-bM:SRE' -+ fi -+ fi -+ fi -+ -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' -+ # It seems that -bexpall does not export symbols beginning with -+ # underscore (_), so it is better to generate a list of symbols to export. -+ _LT_TAGVAR(always_export_symbols, $1)=yes -+ if test "$aix_use_runtimelinking" = yes; then -+ # Warning - without using the other runtime loading flags (-brtl), -+ # -berok will link without error, but may produce a broken library. -+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok' -+ # Determine the default libpath from the value encoded in an -+ # empty executable. -+ _LT_SYS_MODULE_PATH_AIX([$1]) -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ else -+ if test "$host_cpu" = ia64; then -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' -+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" -+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" -+ else -+ # Determine the default libpath from the value encoded in an -+ # empty executable. -+ _LT_SYS_MODULE_PATH_AIX([$1]) -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -+ # Warning - without using the other run time loading flags, -+ # -berok will link without error, but may produce a broken library. -+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' -+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' -+ if test "$with_gnu_ld" = yes; then -+ # We only use this code for GNU lds that support --whole-archive. -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ else -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -+ fi -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes -+ # This is similar to how AIX traditionally builds its shared libraries. -+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -+ fi -+ fi -+ ;; -+ -+ amigaos*) -+ case $host_cpu in -+ powerpc) -+ # see comment about AmigaOS4 .so support -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='' -+ ;; -+ m68k) -+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ ;; -+ esac -+ ;; -+ -+ bsdi[[45]]*) -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic -+ ;; -+ -+ cygwin* | mingw* | pw32* | cegcc*) -+ # When not using gcc, we currently assume that we are using -+ # Microsoft Visual C++. -+ # hardcode_libdir_flag_spec is actually meaningless, as there is -+ # no search path for DLLs. -+ case $cc_basename in -+ cl*) -+ # Native MSVC -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_TAGVAR(always_export_symbols, $1)=yes -+ _LT_TAGVAR(file_list_spec, $1)='@' -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; -+ else -+ sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; -+ fi~ -+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ -+ linknames=' -+ # The linker will not automatically build a static lib if we build a DLL. -+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ _LT_TAGVAR(exclude_expsyms, $1)='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*' -+ _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' -+ # Don't use ranlib -+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' -+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ -+ lt_tool_outputfile="@TOOL_OUTPUT@"~ -+ case $lt_outputfile in -+ *.exe|*.EXE) ;; -+ *) -+ lt_outputfile="$lt_outputfile.exe" -+ lt_tool_outputfile="$lt_tool_outputfile.exe" -+ ;; -+ esac~ -+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then -+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; -+ $RM "$lt_outputfile.manifest"; -+ fi' -+ ;; -+ *) -+ # Assume MSVC wrapper -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' -+ # The linker will automatically build a .lib file if we build a DLL. -+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' -+ # FIXME: Should let the user specify the lib program. -+ _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ ;; -+ esac -+ ;; -+ -+ darwin* | rhapsody*) -+ _LT_DARWIN_LINKER_FEATURES($1) -+ ;; -+ -+ dgux*) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor -+ # support. Future versions do this automatically, but an explicit c++rt0.o -+ # does not break anything, and helps significantly (at the cost of a little -+ # extra space). -+ freebsd2.2*) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ # Unfortunately, older versions of FreeBSD 2 do not have this feature. -+ freebsd2.*) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. -+ freebsd* | dragonfly*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ hpux9*) -+ if test "$GCC" = yes; then -+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ else -+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ fi -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ ;; -+ -+ hpux10*) -+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ if test "$with_gnu_ld" = no; then -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ fi -+ ;; -+ -+ hpux11*) -+ if test "$GCC" = yes && test "$with_gnu_ld" = no; then -+ case $host_cpu in -+ hppa*64*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ esac -+ else -+ case $host_cpu in -+ hppa*64*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ ia64*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ m4_if($1, [], [ -+ # Older versions of the 11.00 compiler do not understand -b yet -+ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) -+ _LT_LINKER_OPTION([if $CC understands -b], -+ _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], -+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], -+ [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], -+ [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) -+ ;; -+ esac -+ fi -+ if test "$with_gnu_ld" = no; then -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ case $host_cpu in -+ hppa*64*|ia64*) -+ _LT_TAGVAR(hardcode_direct, $1)=no -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ *) -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ -+ # hardcode_minus_L: Not really in the search PATH, -+ # but as the default location of the library. -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ ;; -+ esac -+ fi -+ ;; -+ -+ irix5* | irix6* | nonstopux*) -+ if test "$GCC" = yes; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ # Try to use the -exported_symbol ld option, if it does not -+ # work, assume that -exports_file does not work either and -+ # implicitly export all symbols. -+ # This should be the same for all languages, so no per-tag cache variable. -+ AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], -+ [lt_cv_irix_exported_symbol], -+ [save_LDFLAGS="$LDFLAGS" -+ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" -+ AC_LINK_IFELSE( -+ [AC_LANG_SOURCE( -+ [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], -+ [C++], [[int foo (void) { return 0; }]], -+ [Fortran 77], [[ -+ subroutine foo -+ end]], -+ [Fortran], [[ -+ subroutine foo -+ end]])])], -+ [lt_cv_irix_exported_symbol=yes], -+ [lt_cv_irix_exported_symbol=no]) -+ LDFLAGS="$save_LDFLAGS"]) -+ if test "$lt_cv_irix_exported_symbol" = yes; then -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' -+ fi -+ else -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' -+ fi -+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_TAGVAR(inherit_rpath, $1)=yes -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ ;; -+ -+ netbsd* | netbsdelf*-gnu) -+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then -+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out -+ else -+ _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF -+ fi -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ newsos6) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ *nto* | *qnx*) -+ ;; -+ -+ openbsd*) -+ if test -f /usr/libexec/ld.so; then -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -+ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ else -+ case $host_os in -+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ ;; -+ *) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ ;; -+ esac -+ fi -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ os2*) -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' -+ _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' -+ ;; -+ -+ osf3*) -+ if test "$GCC" = yes; then -+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ fi -+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ ;; -+ -+ osf4* | osf5*) # as osf3* with the addition of -msym flag -+ if test "$GCC" = yes; then -+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ else -+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ -+ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' -+ -+ # Both c and cxx compiler support -rpath directly -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -+ fi -+ _LT_TAGVAR(archive_cmds_need_lc, $1)='no' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ ;; -+ -+ solaris*) -+ _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' -+ if test "$GCC" = yes; then -+ wlarc='${wl}' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -+ $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' -+ else -+ case `$CC -V 2>&1` in -+ *"Compilers 5.0"*) -+ wlarc='' -+ _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -+ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' -+ ;; -+ *) -+ wlarc='${wl}' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -+ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' -+ ;; -+ esac -+ fi -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ case $host_os in -+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -+ *) -+ # The compiler driver will combine and reorder linker options, -+ # but understands `-z linker_flag'. GCC discards it without `$wl', -+ # but is careful enough not to reorder. -+ # Supported since Solaris 2.6 (maybe 2.5.1?) -+ if test "$GCC" = yes; then -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' -+ else -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' -+ fi -+ ;; -+ esac -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ ;; -+ -+ sunos4*) -+ if test "x$host_vendor" = xsequent; then -+ # Use $CC to link under sequent, because it throws in some extra .o -+ # files that make .init and .fini sections work. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' -+ fi -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ sysv4) -+ case $host_vendor in -+ sni) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? -+ ;; -+ siemens) -+ ## LD is ld it makes a PLAMLIB -+ ## CC just makes a GrossModule. -+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' -+ _LT_TAGVAR(hardcode_direct, $1)=no -+ ;; -+ motorola) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie -+ ;; -+ esac -+ runpath_var='LD_RUN_PATH' -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ sysv4.3*) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' -+ ;; -+ -+ sysv4*MP*) -+ if test -d /usr/nec; then -+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ runpath_var=LD_RUN_PATH -+ hardcode_runpath_var=yes -+ _LT_TAGVAR(ld_shlibs, $1)=yes -+ fi -+ ;; -+ -+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) -+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ ;; -+ -+ sysv5* | sco3.2v5* | sco5v6*) -+ # Note: We can NOT use -z defs as we might desire, because we do not -+ # link with -lc, and that would cause any symbols used from libc to -+ # always be unresolved, which means just about no library would -+ # ever link correctly. If we're not using GNU ld we use -z text -+ # though, which does catch some bad symbols but isn't as heavy-handed -+ # as -z defs. -+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':' -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' -+ runpath_var='LD_RUN_PATH' -+ -+ if test "$GCC" = yes; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ else -+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ fi -+ ;; -+ -+ uts4*) -+ _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ -+ *) -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ -+ if test x$host_vendor = xsni; then -+ case $host in -+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' -+ ;; -+ esac -+ fi -+ fi -+]) -+AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -+test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no -+ -+_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld -+ -+_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -+_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -+_LT_DECL([], [extract_expsyms_cmds], [2], -+ [The commands to extract the exported symbol list from a shared archive]) -+ -+# -+# Do we need to explicitly link libc? -+# -+case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -+x|xyes) -+ # Assume -lc should be added -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes -+ -+ if test "$enable_shared" = yes && test "$GCC" = yes; then -+ case $_LT_TAGVAR(archive_cmds, $1) in -+ *'~'*) -+ # FIXME: we may have to deal with multi-command sequences. -+ ;; -+ '$CC '*) -+ # Test whether the compiler implicitly links with -lc since on some -+ # systems, -lgcc has to come before -lc. If gcc already passes -lc -+ # to ld, don't add -lc before -lgcc. -+ AC_CACHE_CHECK([whether -lc should be explicitly linked in], -+ [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), -+ [$RM conftest* -+ echo "$lt_simple_compile_test_code" > conftest.$ac_ext -+ -+ if AC_TRY_EVAL(ac_compile) 2>conftest.err; then -+ soname=conftest -+ lib=conftest -+ libobjs=conftest.$ac_objext -+ deplibs= -+ wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) -+ pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) -+ compiler_flags=-v -+ linker_flags=-v -+ verstring= -+ output_objdir=. -+ libname=conftest -+ lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) -+ _LT_TAGVAR(allow_undefined_flag, $1)= -+ if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) -+ then -+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ else -+ lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes -+ fi -+ _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag -+ else -+ cat conftest.err 1>&5 -+ fi -+ $RM conftest* -+ ]) -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) -+ ;; -+ esac -+ fi -+ ;; -+esac -+ -+_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], -+ [Whether or not to add -lc for building shared libraries]) -+_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], -+ [enable_shared_with_static_runtimes], [0], -+ [Whether or not to disallow shared libs when runtime libs are static]) -+_LT_TAGDECL([], [export_dynamic_flag_spec], [1], -+ [Compiler flag to allow reflexive dlopens]) -+_LT_TAGDECL([], [whole_archive_flag_spec], [1], -+ [Compiler flag to generate shared objects directly from archives]) -+_LT_TAGDECL([], [compiler_needs_object], [1], -+ [Whether the compiler copes with passing no objects directly]) -+_LT_TAGDECL([], [old_archive_from_new_cmds], [2], -+ [Create an old-style archive from a shared archive]) -+_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], -+ [Create a temporary old-style archive to link instead of a shared archive]) -+_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -+_LT_TAGDECL([], [archive_expsym_cmds], [2]) -+_LT_TAGDECL([], [module_cmds], [2], -+ [Commands used to build a loadable module if different from building -+ a shared archive.]) -+_LT_TAGDECL([], [module_expsym_cmds], [2]) -+_LT_TAGDECL([], [with_gnu_ld], [1], -+ [Whether we are building with GNU ld or not]) -+_LT_TAGDECL([], [allow_undefined_flag], [1], -+ [Flag that allows shared libraries with undefined symbols to be built]) -+_LT_TAGDECL([], [no_undefined_flag], [1], -+ [Flag that enforces no undefined symbols]) -+_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], -+ [Flag to hardcode $libdir into a binary during linking. -+ This must work even if $libdir does not exist]) -+_LT_TAGDECL([], [hardcode_libdir_separator], [1], -+ [Whether we need a single "-rpath" flag with a separated argument]) -+_LT_TAGDECL([], [hardcode_direct], [0], -+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -+ DIR into the resulting binary]) -+_LT_TAGDECL([], [hardcode_direct_absolute], [0], -+ [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes -+ DIR into the resulting binary and the resulting library dependency is -+ "absolute", i.e impossible to change by setting ${shlibpath_var} if the -+ library is relocated]) -+_LT_TAGDECL([], [hardcode_minus_L], [0], -+ [Set to "yes" if using the -LDIR flag during linking hardcodes DIR -+ into the resulting binary]) -+_LT_TAGDECL([], [hardcode_shlibpath_var], [0], -+ [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -+ into the resulting binary]) -+_LT_TAGDECL([], [hardcode_automatic], [0], -+ [Set to "yes" if building a shared library automatically hardcodes DIR -+ into the library and all subsequent libraries and executables linked -+ against it]) -+_LT_TAGDECL([], [inherit_rpath], [0], -+ [Set to yes if linker adds runtime paths of dependent libraries -+ to runtime path list]) -+_LT_TAGDECL([], [link_all_deplibs], [0], -+ [Whether libtool must link a program against all its dependency libraries]) -+_LT_TAGDECL([], [always_export_symbols], [0], -+ [Set to "yes" if exported symbols are required]) -+_LT_TAGDECL([], [export_symbols_cmds], [2], -+ [The commands to list exported symbols]) -+_LT_TAGDECL([], [exclude_expsyms], [1], -+ [Symbols that should not be listed in the preloaded symbols]) -+_LT_TAGDECL([], [include_expsyms], [1], -+ [Symbols that must always be exported]) -+_LT_TAGDECL([], [prelink_cmds], [2], -+ [Commands necessary for linking programs (against libraries) with templates]) -+_LT_TAGDECL([], [postlink_cmds], [2], -+ [Commands necessary for finishing linking programs]) -+_LT_TAGDECL([], [file_list_spec], [1], -+ [Specify filename containing input files]) -+dnl FIXME: Not yet implemented -+dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -+dnl [Compiler flag to generate thread safe objects]) -+])# _LT_LINKER_SHLIBS -+ -+ -+# _LT_LANG_C_CONFIG([TAG]) -+# ------------------------ -+# Ensure that the configuration variables for a C compiler are suitably -+# defined. These variables are subsequently used by _LT_CONFIG to write -+# the compiler configuration to `libtool'. -+m4_defun([_LT_LANG_C_CONFIG], -+[m4_require([_LT_DECL_EGREP])dnl -+lt_save_CC="$CC" -+AC_LANG_PUSH(C) -+ -+# Source file extension for C test sources. -+ac_ext=c -+ -+# Object file extension for compiled C test sources. -+objext=o -+_LT_TAGVAR(objext, $1)=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="int some_variable = 0;" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='int main(){return(0);}' -+ -+_LT_TAG_COMPILER -+# Save the default compiler, since it gets overwritten when the other -+# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -+compiler_DEFAULT=$CC -+ -+# save warnings/boilerplate of simple test code -+_LT_COMPILER_BOILERPLATE -+_LT_LINKER_BOILERPLATE -+ -+## CAVEAT EMPTOR: -+## There is no encapsulation within the following macros, do not change -+## the running order or otherwise move them around unless you know exactly -+## what you are doing... -+if test -n "$compiler"; then -+ _LT_COMPILER_NO_RTTI($1) -+ _LT_COMPILER_PIC($1) -+ _LT_COMPILER_C_O($1) -+ _LT_COMPILER_FILE_LOCKS($1) -+ _LT_LINKER_SHLIBS($1) -+ _LT_SYS_DYNAMIC_LINKER($1) -+ _LT_LINKER_HARDCODE_LIBPATH($1) -+ LT_SYS_DLOPEN_SELF -+ _LT_CMD_STRIPLIB -+ -+ # Report which library types will actually be built -+ AC_MSG_CHECKING([if libtool supports shared libraries]) -+ AC_MSG_RESULT([$can_build_shared]) -+ -+ AC_MSG_CHECKING([whether to build shared libraries]) -+ test "$can_build_shared" = "no" && enable_shared=no -+ -+ # On AIX, shared libraries and static libraries use the same namespace, and -+ # are all built from PIC. -+ case $host_os in -+ aix3*) -+ test "$enable_shared" = yes && enable_static=no -+ if test -n "$RANLIB"; then -+ archive_cmds="$archive_cmds~\$RANLIB \$lib" -+ postinstall_cmds='$RANLIB $lib' -+ fi -+ ;; -+ -+ aix[[4-9]]*) -+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then -+ test "$enable_shared" = yes && enable_static=no -+ fi -+ ;; -+ esac -+ AC_MSG_RESULT([$enable_shared]) -+ -+ AC_MSG_CHECKING([whether to build static libraries]) -+ # Make sure either enable_shared or enable_static is yes. -+ test "$enable_shared" = yes || enable_static=yes -+ AC_MSG_RESULT([$enable_static]) -+ -+ _LT_CONFIG($1) -+fi -+AC_LANG_POP -+CC="$lt_save_CC" -+])# _LT_LANG_C_CONFIG -+ -+ -+# _LT_LANG_CXX_CONFIG([TAG]) -+# -------------------------- -+# Ensure that the configuration variables for a C++ compiler are suitably -+# defined. These variables are subsequently used by _LT_CONFIG to write -+# the compiler configuration to `libtool'. -+m4_defun([_LT_LANG_CXX_CONFIG], -+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+m4_require([_LT_DECL_EGREP])dnl -+m4_require([_LT_PATH_MANIFEST_TOOL])dnl -+if test -n "$CXX" && ( test "X$CXX" != "Xno" && -+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || -+ (test "X$CXX" != "Xg++"))) ; then -+ AC_PROG_CXXCPP -+else -+ _lt_caught_CXX_error=yes -+fi -+ -+AC_LANG_PUSH(C++) -+_LT_TAGVAR(archive_cmds_need_lc, $1)=no -+_LT_TAGVAR(allow_undefined_flag, $1)= -+_LT_TAGVAR(always_export_symbols, $1)=no -+_LT_TAGVAR(archive_expsym_cmds, $1)= -+_LT_TAGVAR(compiler_needs_object, $1)=no -+_LT_TAGVAR(export_dynamic_flag_spec, $1)= -+_LT_TAGVAR(hardcode_direct, $1)=no -+_LT_TAGVAR(hardcode_direct_absolute, $1)=no -+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -+_LT_TAGVAR(hardcode_libdir_separator, $1)= -+_LT_TAGVAR(hardcode_minus_L, $1)=no -+_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -+_LT_TAGVAR(hardcode_automatic, $1)=no -+_LT_TAGVAR(inherit_rpath, $1)=no -+_LT_TAGVAR(module_cmds, $1)= -+_LT_TAGVAR(module_expsym_cmds, $1)= -+_LT_TAGVAR(link_all_deplibs, $1)=unknown -+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -+_LT_TAGVAR(no_undefined_flag, $1)= -+_LT_TAGVAR(whole_archive_flag_spec, $1)= -+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no -+ -+# Source file extension for C++ test sources. -+ac_ext=cpp -+ -+# Object file extension for compiled C++ test sources. -+objext=o -+_LT_TAGVAR(objext, $1)=$objext -+ -+# No sense in running all these tests if we already determined that -+# the CXX compiler isn't working. Some variables (like enable_shared) -+# are currently assumed to apply to all compilers on this platform, -+# and will be corrupted by setting them based on a non-working compiler. -+if test "$_lt_caught_CXX_error" != yes; then -+ # Code to be used in simple compile tests -+ lt_simple_compile_test_code="int some_variable = 0;" -+ -+ # Code to be used in simple link tests -+ lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' -+ -+ # ltmain only uses $CC for tagged configurations so make sure $CC is set. -+ _LT_TAG_COMPILER -+ -+ # save warnings/boilerplate of simple test code -+ _LT_COMPILER_BOILERPLATE -+ _LT_LINKER_BOILERPLATE -+ -+ # Allow CC to be a program name with arguments. -+ lt_save_CC=$CC -+ lt_save_CFLAGS=$CFLAGS -+ lt_save_LD=$LD -+ lt_save_GCC=$GCC -+ GCC=$GXX -+ lt_save_with_gnu_ld=$with_gnu_ld -+ lt_save_path_LD=$lt_cv_path_LD -+ if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then -+ lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx -+ else -+ $as_unset lt_cv_prog_gnu_ld -+ fi -+ if test -n "${lt_cv_path_LDCXX+set}"; then -+ lt_cv_path_LD=$lt_cv_path_LDCXX -+ else -+ $as_unset lt_cv_path_LD -+ fi -+ test -z "${LDCXX+set}" || LD=$LDCXX -+ CC=${CXX-"c++"} -+ CFLAGS=$CXXFLAGS -+ compiler=$CC -+ _LT_TAGVAR(compiler, $1)=$CC -+ _LT_CC_BASENAME([$compiler]) -+ -+ if test -n "$compiler"; then -+ # We don't want -fno-exception when compiling C++ code, so set the -+ # no_builtin_flag separately -+ if test "$GXX" = yes; then -+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' -+ else -+ _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= -+ fi -+ -+ if test "$GXX" = yes; then -+ # Set up default GNU C++ configuration -+ -+ LT_PATH_LD -+ -+ # Check if GNU C++ uses GNU ld as the underlying linker, since the -+ # archiving commands below assume that GNU ld is being used. -+ if test "$with_gnu_ld" = yes; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -+ -+ # If archive_cmds runs LD, not CC, wlarc should be empty -+ # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to -+ # investigate it a little bit more. (MM) -+ wlarc='${wl}' -+ -+ # ancient GNU ld didn't support --whole-archive et. al. -+ if eval "`$CC -print-prog-name=ld` --help 2>&1" | -+ $GREP 'no-whole-archive' > /dev/null; then -+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ else -+ _LT_TAGVAR(whole_archive_flag_spec, $1)= -+ fi -+ else -+ with_gnu_ld=no -+ wlarc= -+ -+ # A generic and very simple default shared library creation -+ # command for GNU C++ for the case where it uses the native -+ # linker, instead of GNU ld. If possible, this setting should -+ # overridden to take advantage of the native linker features on -+ # the platform it is being used on. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' -+ fi -+ -+ # Commands to make compiler produce verbose output that lists -+ # what "hidden" libraries, object files and flags are used when -+ # linking a shared library. -+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' -+ -+ else -+ GXX=no -+ with_gnu_ld=no -+ wlarc= -+ fi -+ -+ # PORTME: fill in a description of your system's C++ link characteristics -+ AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -+ _LT_TAGVAR(ld_shlibs, $1)=yes -+ case $host_os in -+ aix3*) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ aix[[4-9]]*) -+ if test "$host_cpu" = ia64; then -+ # On IA64, the linker does run time linking by default, so we don't -+ # have to do anything special. -+ aix_use_runtimelinking=no -+ exp_sym_flag='-Bexport' -+ no_entry_flag="" -+ else -+ aix_use_runtimelinking=no -+ -+ # Test if we are trying to use run time linking or normal -+ # AIX style linking. If -brtl is somewhere in LDFLAGS, we -+ # need to do runtime linking. -+ case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) -+ for ld_flag in $LDFLAGS; do -+ case $ld_flag in -+ *-brtl*) -+ aix_use_runtimelinking=yes -+ break -+ ;; -+ esac -+ done -+ ;; -+ esac -+ -+ exp_sym_flag='-bexport' -+ no_entry_flag='-bnoentry' -+ fi -+ -+ # When large executables or shared objects are built, AIX ld can -+ # have problems creating the table of contents. If linking a library -+ # or program results in "error TOC overflow" add -mminimal-toc to -+ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not -+ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. -+ -+ _LT_TAGVAR(archive_cmds, $1)='' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':' -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' -+ -+ if test "$GXX" = yes; then -+ case $host_os in aix4.[[012]]|aix4.[[012]].*) -+ # We only want to do this on AIX 4.2 and lower, the check -+ # below for broken collect2 doesn't work under 4.3+ -+ collect2name=`${CC} -print-prog-name=collect2` -+ if test -f "$collect2name" && -+ strings "$collect2name" | $GREP resolve_lib_name >/dev/null -+ then -+ # We have reworked collect2 -+ : -+ else -+ # We have old collect2 -+ _LT_TAGVAR(hardcode_direct, $1)=unsupported -+ # It fails to find uninstalled libraries when the uninstalled -+ # path is not listed in the libpath. Setting hardcode_minus_L -+ # to unsupported forces relinking -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)= -+ fi -+ esac -+ shared_flag='-shared' -+ if test "$aix_use_runtimelinking" = yes; then -+ shared_flag="$shared_flag "'${wl}-G' -+ fi -+ else -+ # not using gcc -+ if test "$host_cpu" = ia64; then -+ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release -+ # chokes on -Wl,-G. The following line is correct: -+ shared_flag='-G' -+ else -+ if test "$aix_use_runtimelinking" = yes; then -+ shared_flag='${wl}-G' -+ else -+ shared_flag='${wl}-bM:SRE' -+ fi -+ fi -+ fi -+ -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' -+ # It seems that -bexpall does not export symbols beginning with -+ # underscore (_), so it is better to generate a list of symbols to -+ # export. -+ _LT_TAGVAR(always_export_symbols, $1)=yes -+ if test "$aix_use_runtimelinking" = yes; then -+ # Warning - without using the other runtime loading flags (-brtl), -+ # -berok will link without error, but may produce a broken library. -+ _LT_TAGVAR(allow_undefined_flag, $1)='-berok' -+ # Determine the default libpath from the value encoded in an empty -+ # executable. -+ _LT_SYS_MODULE_PATH_AIX([$1]) -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -+ -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" -+ else -+ if test "$host_cpu" = ia64; then -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' -+ _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" -+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" -+ else -+ # Determine the default libpath from the value encoded in an -+ # empty executable. -+ _LT_SYS_MODULE_PATH_AIX([$1]) -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" -+ # Warning - without using the other run time loading flags, -+ # -berok will link without error, but may produce a broken library. -+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' -+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' -+ if test "$with_gnu_ld" = yes; then -+ # We only use this code for GNU lds that support --whole-archive. -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ else -+ # Exported symbols can be pulled into shared objects from archives -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' -+ fi -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=yes -+ # This is similar to how AIX traditionally builds its shared -+ # libraries. -+ _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' -+ fi -+ fi -+ ;; -+ -+ beos*) -+ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ # Joseph Beckenbach says some releases of gcc -+ # support --undefined. This deserves some investigation. FIXME -+ _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ chorus*) -+ case $cc_basename in -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ -+ cygwin* | mingw* | pw32* | cegcc*) -+ case $GXX,$cc_basename in -+ ,cl* | no,cl*) -+ # Native MSVC -+ # hardcode_libdir_flag_spec is actually meaningless, as there is -+ # no search path for DLLs. -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_TAGVAR(always_export_symbols, $1)=yes -+ _LT_TAGVAR(file_list_spec, $1)='@' -+ # Tell ltmain to make .lib files, not .a files. -+ libext=lib -+ # Tell ltmain to make .dll files, not .so files. -+ shrext_cmds=".dll" -+ # FIXME: Setting linknames here is a bad hack. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; -+ else -+ $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; -+ fi~ -+ $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ -+ linknames=' -+ # The linker will not automatically build a static lib if we build a DLL. -+ # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ # Don't use ranlib -+ _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' -+ _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ -+ lt_tool_outputfile="@TOOL_OUTPUT@"~ -+ case $lt_outputfile in -+ *.exe|*.EXE) ;; -+ *) -+ lt_outputfile="$lt_outputfile.exe" -+ lt_tool_outputfile="$lt_tool_outputfile.exe" -+ ;; -+ esac~ -+ func_to_tool_file "$lt_outputfile"~ -+ if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then -+ $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; -+ $RM "$lt_outputfile.manifest"; -+ fi' -+ ;; -+ *) -+ # g++ -+ # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, -+ # as there is no search path for DLLs. -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' -+ _LT_TAGVAR(allow_undefined_flag, $1)=unsupported -+ _LT_TAGVAR(always_export_symbols, $1)=no -+ _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes -+ -+ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -+ # If the export-symbols file already is a .def file (1st line -+ # is EXPORTS), use it as is; otherwise, prepend... -+ _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then -+ cp $export_symbols $output_objdir/$soname.def; -+ else -+ echo EXPORTS > $output_objdir/$soname.def; -+ cat $export_symbols >> $output_objdir/$soname.def; -+ fi~ -+ $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ darwin* | rhapsody*) -+ _LT_DARWIN_LINKER_FEATURES($1) -+ ;; -+ -+ dgux*) -+ case $cc_basename in -+ ec++*) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ ghcx*) -+ # Green Hills C++ Compiler -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ -+ freebsd2.*) -+ # C++ shared libraries reported to be fairly broken before -+ # switch to ELF -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ -+ freebsd-elf*) -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ ;; -+ -+ freebsd* | dragonfly*) -+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF -+ # conventions -+ _LT_TAGVAR(ld_shlibs, $1)=yes -+ ;; -+ -+ gnu*) -+ ;; -+ -+ haiku*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ ;; -+ -+ hpux9*) -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, -+ # but as the default -+ # location of the library. -+ -+ case $cc_basename in -+ CC*) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ aCC*) -+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ # Commands to make compiler produce verbose output that lists -+ # what "hidden" libraries, object files and flags are used when -+ # linking a shared library. -+ # -+ # There doesn't appear to be a way to prevent this compiler from -+ # explicitly linking system object files so we need to strip them -+ # from the output so that they don't get included in the library -+ # dependencies. -+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' -+ ;; -+ *) -+ if test "$GXX" = yes; then -+ _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' -+ else -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ -+ hpux10*|hpux11*) -+ if test $with_gnu_ld = no; then -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ case $host_cpu in -+ hppa*64*|ia64*) -+ ;; -+ *) -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ ;; -+ esac -+ fi -+ case $host_cpu in -+ hppa*64*|ia64*) -+ _LT_TAGVAR(hardcode_direct, $1)=no -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ ;; -+ *) -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -+ _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, -+ # but as the default -+ # location of the library. -+ ;; -+ esac -+ -+ case $cc_basename in -+ CC*) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ aCC*) -+ case $host_cpu in -+ hppa*64*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ ia64*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ *) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ esac -+ # Commands to make compiler produce verbose output that lists -+ # what "hidden" libraries, object files and flags are used when -+ # linking a shared library. -+ # -+ # There doesn't appear to be a way to prevent this compiler from -+ # explicitly linking system object files so we need to strip them -+ # from the output so that they don't get included in the library -+ # dependencies. -+ output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' -+ ;; -+ *) -+ if test "$GXX" = yes; then -+ if test $with_gnu_ld = no; then -+ case $host_cpu in -+ hppa*64*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ ia64*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ *) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ ;; -+ esac -+ fi -+ else -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ -+ interix[[3-9]]*) -+ _LT_TAGVAR(hardcode_direct, $1)=no -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. -+ # Instead, shared libraries are loaded at an image base (0x10000000 by -+ # default) and relocated if they conflict, which is a slow very memory -+ # consuming and fragmenting process. To avoid this, we pick a random, -+ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link -+ # time. Moving up from 0x10000000 also allows more sbrk(2) space. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' -+ ;; -+ irix5* | irix6*) -+ case $cc_basename in -+ CC*) -+ # SGI C++ -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ -+ # Archives containing C++ object files must be created using -+ # "CC -ar", where "CC" is the IRIX C++ compiler. This is -+ # necessary to make sure instantiated templates are included -+ # in the archive. -+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' -+ ;; -+ *) -+ if test "$GXX" = yes; then -+ if test "$with_gnu_ld" = no; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ else -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' -+ fi -+ fi -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ ;; -+ esac -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ _LT_TAGVAR(inherit_rpath, $1)=yes -+ ;; -+ -+ linux* | k*bsd*-gnu | kopensolaris*-gnu) -+ case $cc_basename in -+ KCC*) -+ # Kuck and Associates, Inc. (KAI) C++ Compiler -+ -+ # KCC will only create a shared library if the output file -+ # ends with ".so" (or ".sl" for HP-UX), so rename the library -+ # to its proper name (with version) after linking. -+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' -+ # Commands to make compiler produce verbose output that lists -+ # what "hidden" libraries, object files and flags are used when -+ # linking a shared library. -+ # -+ # There doesn't appear to be a way to prevent this compiler from -+ # explicitly linking system object files so we need to strip them -+ # from the output so that they don't get included in the library -+ # dependencies. -+ output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' -+ -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -+ -+ # Archives containing C++ object files must be created using -+ # "CC -Bstatic", where "CC" is the KAI C++ compiler. -+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' -+ ;; -+ icpc* | ecpc* ) -+ # Intel C++ -+ with_gnu_ld=yes -+ # version 8.0 and above of icpc choke on multiply defined symbols -+ # if we add $predep_objects and $postdep_objects, however 7.1 and -+ # earlier do not add the objects themselves. -+ case `$CC -V 2>&1` in -+ *"Version 7."*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ ;; -+ *) # Version 8.0 or newer -+ tmp_idyn= -+ case $host_cpu in -+ ia64*) tmp_idyn=' -i_dynamic';; -+ esac -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' -+ ;; -+ esac -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' -+ ;; -+ pgCC* | pgcpp*) -+ # Portland Group C++ compiler -+ case `$CC -V` in -+ *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) -+ _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ -+ rm -rf $tpldir~ -+ $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ -+ compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' -+ _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ -+ rm -rf $tpldir~ -+ $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ -+ $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ -+ $RANLIB $oldlib' -+ _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ -+ rm -rf $tpldir~ -+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ -+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ -+ rm -rf $tpldir~ -+ $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ -+ $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' -+ ;; -+ *) # Version 6 and above use weak symbols -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' -+ ;; -+ esac -+ -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ ;; -+ cxx*) -+ # Compaq C++ -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' -+ -+ runpath_var=LD_RUN_PATH -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ # Commands to make compiler produce verbose output that lists -+ # what "hidden" libraries, object files and flags are used when -+ # linking a shared library. -+ # -+ # There doesn't appear to be a way to prevent this compiler from -+ # explicitly linking system object files so we need to strip them -+ # from the output so that they don't get included in the library -+ # dependencies. -+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' -+ ;; -+ xl* | mpixl* | bgxl*) -+ # IBM XL 8.0 on PPC, with GNU ld -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' -+ if test "x$supports_anon_versioning" = xyes; then -+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ -+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ -+ echo "local: *; };" >> $output_objdir/$libname.ver~ -+ $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' -+ fi -+ ;; -+ *) -+ case `$CC -V 2>&1 | sed 5q` in -+ *Sun\ C*) -+ # Sun C++ 5.9 -+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' -+ _LT_TAGVAR(compiler_needs_object, $1)=yes -+ -+ # Not sure whether something based on -+ # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 -+ # would be better. -+ output_verbose_link_cmd='func_echo_all' -+ -+ # Archives containing C++ object files must be created using -+ # "CC -xar", where "CC" is the Sun C++ compiler. This is -+ # necessary to make sure instantiated templates are included -+ # in the archive. -+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' -+ ;; -+ esac -+ ;; -+ esac -+ ;; -+ -+ lynxos*) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ -+ m88k*) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ -+ mvs*) -+ case $cc_basename in -+ cxx*) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ -+ netbsd*) -+ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then -+ _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' -+ wlarc= -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ fi -+ # Workaround some broken pre-1.5 toolchains -+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' -+ ;; -+ -+ *nto* | *qnx*) -+ _LT_TAGVAR(ld_shlibs, $1)=yes -+ ;; -+ -+ openbsd2*) -+ # C++ shared libraries are fairly broken -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ -+ openbsd*) -+ if test -f /usr/libexec/ld.so; then -+ _LT_TAGVAR(hardcode_direct, $1)=yes -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_TAGVAR(hardcode_direct_absolute, $1)=yes -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' -+ _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' -+ fi -+ output_verbose_link_cmd=func_echo_all -+ else -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ -+ osf3* | osf4* | osf5*) -+ case $cc_basename in -+ KCC*) -+ # Kuck and Associates, Inc. (KAI) C++ Compiler -+ -+ # KCC will only create a shared library if the output file -+ # ends with ".so" (or ".sl" for HP-UX), so rename the library -+ # to its proper name (with version) after linking. -+ _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' -+ -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ # Archives containing C++ object files must be created using -+ # the KAI C++ compiler. -+ case $host in -+ osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; -+ *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; -+ esac -+ ;; -+ RCC*) -+ # Rational C++ 2.4.1 -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ cxx*) -+ case $host in -+ osf3*) -+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ ;; -+ *) -+ _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ -+ echo "-hidden">> $lib.exp~ -+ $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ -+ $RM $lib.exp' -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' -+ ;; -+ esac -+ -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ # Commands to make compiler produce verbose output that lists -+ # what "hidden" libraries, object files and flags are used when -+ # linking a shared library. -+ # -+ # There doesn't appear to be a way to prevent this compiler from -+ # explicitly linking system object files so we need to strip them -+ # from the output so that they don't get included in the library -+ # dependencies. -+ output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' -+ ;; -+ *) -+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then -+ _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' -+ case $host in -+ osf3*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ ;; -+ *) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' -+ ;; -+ esac -+ -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=: -+ -+ # Commands to make compiler produce verbose output that lists -+ # what "hidden" libraries, object files and flags are used when -+ # linking a shared library. -+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' -+ -+ else -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ fi -+ ;; -+ esac -+ ;; -+ -+ psos*) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ -+ sunos4*) -+ case $cc_basename in -+ CC*) -+ # Sun C++ 4.x -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ lcc*) -+ # Lucid -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ -+ solaris*) -+ case $cc_basename in -+ CC* | sunCC*) -+ # Sun C++ 4.2, 5.x and Centerline C++ -+ _LT_TAGVAR(archive_cmds_need_lc,$1)=yes -+ _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' -+ _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -+ $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' -+ -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ case $host_os in -+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -+ *) -+ # The compiler driver will combine and reorder linker options, -+ # but understands `-z linker_flag'. -+ # Supported since Solaris 2.6 (maybe 2.5.1?) -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' -+ ;; -+ esac -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ -+ output_verbose_link_cmd='func_echo_all' -+ -+ # Archives containing C++ object files must be created using -+ # "CC -xar", where "CC" is the Sun C++ compiler. This is -+ # necessary to make sure instantiated templates are included -+ # in the archive. -+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' -+ ;; -+ gcx*) -+ # Green Hills C++ Compiler -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -+ -+ # The C++ compiler must be used to create the archive. -+ _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' -+ ;; -+ *) -+ # GNU C++ compiler with Solaris linker -+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then -+ _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' -+ if $CC --version | $GREP -v '^2\.7' > /dev/null; then -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -+ $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' -+ -+ # Commands to make compiler produce verbose output that lists -+ # what "hidden" libraries, object files and flags are used when -+ # linking a shared library. -+ output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' -+ else -+ # g++ 2.7 appears to require `-G' NOT `-shared' on this -+ # platform. -+ _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ -+ $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' -+ -+ # Commands to make compiler produce verbose output that lists -+ # what "hidden" libraries, object files and flags are used when -+ # linking a shared library. -+ output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' -+ fi -+ -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' -+ case $host_os in -+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; -+ *) -+ _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' -+ ;; -+ esac -+ fi -+ ;; -+ esac -+ ;; -+ -+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) -+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ runpath_var='LD_RUN_PATH' -+ -+ case $cc_basename in -+ CC*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ *) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ esac -+ ;; -+ -+ sysv5* | sco3.2v5* | sco5v6*) -+ # Note: We can NOT use -z defs as we might desire, because we do not -+ # link with -lc, and that would cause any symbols used from libc to -+ # always be unresolved, which means just about no library would -+ # ever link correctly. If we're not using GNU ld we use -z text -+ # though, which does catch some bad symbols but isn't as heavy-handed -+ # as -z defs. -+ _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' -+ _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' -+ _LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ _LT_TAGVAR(hardcode_shlibpath_var, $1)=no -+ _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' -+ _LT_TAGVAR(hardcode_libdir_separator, $1)=':' -+ _LT_TAGVAR(link_all_deplibs, $1)=yes -+ _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' -+ runpath_var='LD_RUN_PATH' -+ -+ case $cc_basename in -+ CC*) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ -+ '"$_LT_TAGVAR(old_archive_cmds, $1)" -+ _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ -+ '"$_LT_TAGVAR(reload_cmds, $1)" -+ ;; -+ *) -+ _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' -+ ;; -+ esac -+ ;; -+ -+ tandem*) -+ case $cc_basename in -+ NCC*) -+ # NonStop-UX NCC 3.20 -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ ;; -+ -+ vxworks*) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ -+ *) -+ # FIXME: insert proper C++ library support -+ _LT_TAGVAR(ld_shlibs, $1)=no -+ ;; -+ esac -+ -+ AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -+ test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no -+ -+ _LT_TAGVAR(GCC, $1)="$GXX" -+ _LT_TAGVAR(LD, $1)="$LD" -+ -+ ## CAVEAT EMPTOR: -+ ## There is no encapsulation within the following macros, do not change -+ ## the running order or otherwise move them around unless you know exactly -+ ## what you are doing... -+ _LT_SYS_HIDDEN_LIBDEPS($1) -+ _LT_COMPILER_PIC($1) -+ _LT_COMPILER_C_O($1) -+ _LT_COMPILER_FILE_LOCKS($1) -+ _LT_LINKER_SHLIBS($1) -+ _LT_SYS_DYNAMIC_LINKER($1) -+ _LT_LINKER_HARDCODE_LIBPATH($1) -+ -+ _LT_CONFIG($1) -+ fi # test -n "$compiler" -+ -+ CC=$lt_save_CC -+ CFLAGS=$lt_save_CFLAGS -+ LDCXX=$LD -+ LD=$lt_save_LD -+ GCC=$lt_save_GCC -+ with_gnu_ld=$lt_save_with_gnu_ld -+ lt_cv_path_LDCXX=$lt_cv_path_LD -+ lt_cv_path_LD=$lt_save_path_LD -+ lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld -+ lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -+fi # test "$_lt_caught_CXX_error" != yes -+ -+AC_LANG_POP -+])# _LT_LANG_CXX_CONFIG -+ -+ -+# _LT_FUNC_STRIPNAME_CNF -+# ---------------------- -+# func_stripname_cnf prefix suffix name -+# strip PREFIX and SUFFIX off of NAME. -+# PREFIX and SUFFIX must not contain globbing or regex special -+# characters, hashes, percent signs, but SUFFIX may contain a leading -+# dot (in which case that matches only a dot). -+# -+# This function is identical to the (non-XSI) version of func_stripname, -+# except this one can be used by m4 code that may be executed by configure, -+# rather than the libtool script. -+m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -+AC_REQUIRE([_LT_DECL_SED]) -+AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -+func_stripname_cnf () -+{ -+ case ${2} in -+ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; -+ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; -+ esac -+} # func_stripname_cnf -+])# _LT_FUNC_STRIPNAME_CNF -+ -+# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -+# --------------------------------- -+# Figure out "hidden" library dependencies from verbose -+# compiler output when linking a shared library. -+# Parse the compiler output and extract the necessary -+# objects, libraries and library flags. -+m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -+[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -+AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -+# Dependencies to place before and after the object being linked: -+_LT_TAGVAR(predep_objects, $1)= -+_LT_TAGVAR(postdep_objects, $1)= -+_LT_TAGVAR(predeps, $1)= -+_LT_TAGVAR(postdeps, $1)= -+_LT_TAGVAR(compiler_lib_search_path, $1)= -+ -+dnl we can't use the lt_simple_compile_test_code here, -+dnl because it contains code intended for an executable, -+dnl not a library. It's possible we should let each -+dnl tag define a new lt_????_link_test_code variable, -+dnl but it's only used here... -+m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -+int a; -+void foo (void) { a = 0; } -+_LT_EOF -+], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -+class Foo -+{ -+public: -+ Foo (void) { a = 0; } -+private: -+ int a; -+}; -+_LT_EOF -+], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF -+ subroutine foo -+ implicit none -+ integer*4 a -+ a=0 -+ return -+ end -+_LT_EOF -+], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF -+ subroutine foo -+ implicit none -+ integer a -+ a=0 -+ return -+ end -+_LT_EOF -+], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -+public class foo { -+ private int a; -+ public void bar (void) { -+ a = 0; -+ } -+}; -+_LT_EOF -+], [$1], [GO], [cat > conftest.$ac_ext <<_LT_EOF -+package foo -+func foo() { -+} -+_LT_EOF -+]) -+ -+_lt_libdeps_save_CFLAGS=$CFLAGS -+case "$CC $CFLAGS " in #( -+*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -+*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -+*\ -fuse-linker-plugin*\ *) CFLAGS="$CFLAGS -fno-use-linker-plugin" ;; -+esac -+ -+dnl Parse the compiler output and extract the necessary -+dnl objects, libraries and library flags. -+if AC_TRY_EVAL(ac_compile); then -+ # Parse the compiler output and extract the necessary -+ # objects, libraries and library flags. -+ -+ # Sentinel used to keep track of whether or not we are before -+ # the conftest object file. -+ pre_test_object_deps_done=no -+ -+ for p in `eval "$output_verbose_link_cmd"`; do -+ case ${prev}${p} in -+ -+ -L* | -R* | -l*) -+ # Some compilers place space between "-{L,R}" and the path. -+ # Remove the space. -+ if test $p = "-L" || -+ test $p = "-R"; then -+ prev=$p -+ continue -+ fi -+ -+ # Expand the sysroot to ease extracting the directories later. -+ if test -z "$prev"; then -+ case $p in -+ -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; -+ -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; -+ -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; -+ esac -+ fi -+ case $p in -+ =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; -+ esac -+ if test "$pre_test_object_deps_done" = no; then -+ case ${prev} in -+ -L | -R) -+ # Internal compiler library paths should come after those -+ # provided the user. The postdeps already come after the -+ # user supplied libs so there is no need to process them. -+ if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then -+ _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" -+ else -+ _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" -+ fi -+ ;; -+ # The "-l" case would never come before the object being -+ # linked, so don't bother handling this case. -+ esac -+ else -+ if test -z "$_LT_TAGVAR(postdeps, $1)"; then -+ _LT_TAGVAR(postdeps, $1)="${prev}${p}" -+ else -+ _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" -+ fi -+ fi -+ prev= -+ ;; -+ -+ *.lto.$objext) ;; # Ignore GCC LTO objects -+ *.$objext) -+ # This assumes that the test object file only shows up -+ # once in the compiler output. -+ if test "$p" = "conftest.$objext"; then -+ pre_test_object_deps_done=yes -+ continue -+ fi -+ -+ if test "$pre_test_object_deps_done" = no; then -+ if test -z "$_LT_TAGVAR(predep_objects, $1)"; then -+ _LT_TAGVAR(predep_objects, $1)="$p" -+ else -+ _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" -+ fi -+ else -+ if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then -+ _LT_TAGVAR(postdep_objects, $1)="$p" -+ else -+ _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" -+ fi -+ fi -+ ;; -+ -+ *) ;; # Ignore the rest. -+ -+ esac -+ done -+ -+ # Clean up. -+ rm -f a.out a.exe -+else -+ echo "libtool.m4: error: problem compiling $1 test program" -+fi -+ -+$RM -f confest.$objext -+CFLAGS=$_lt_libdeps_save_CFLAGS -+ -+# PORTME: override above test on systems where it is broken -+m4_if([$1], [CXX], -+[case $host_os in -+interix[[3-9]]*) -+ # Interix 3.5 installs completely hosed .la files for C++, so rather than -+ # hack all around it, let's just trust "g++" to DTRT. -+ _LT_TAGVAR(predep_objects,$1)= -+ _LT_TAGVAR(postdep_objects,$1)= -+ _LT_TAGVAR(postdeps,$1)= -+ ;; -+ -+linux*) -+ case `$CC -V 2>&1 | sed 5q` in -+ *Sun\ C*) -+ # Sun C++ 5.9 -+ -+ # The more standards-conforming stlport4 library is -+ # incompatible with the Cstd library. Avoid specifying -+ # it if it's in CXXFLAGS. Ignore libCrun as -+ # -library=stlport4 depends on it. -+ case " $CXX $CXXFLAGS " in -+ *" -library=stlport4 "*) -+ solaris_use_stlport4=yes -+ ;; -+ esac -+ -+ if test "$solaris_use_stlport4" != yes; then -+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' -+ fi -+ ;; -+ esac -+ ;; -+ -+solaris*) -+ case $cc_basename in -+ CC* | sunCC*) -+ # The more standards-conforming stlport4 library is -+ # incompatible with the Cstd library. Avoid specifying -+ # it if it's in CXXFLAGS. Ignore libCrun as -+ # -library=stlport4 depends on it. -+ case " $CXX $CXXFLAGS " in -+ *" -library=stlport4 "*) -+ solaris_use_stlport4=yes -+ ;; -+ esac -+ -+ # Adding this requires a known-good setup of shared libraries for -+ # Sun compiler versions before 5.6, else PIC objects from an old -+ # archive will be linked into the output, leading to subtle bugs. -+ if test "$solaris_use_stlport4" != yes; then -+ _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' -+ fi -+ ;; -+ esac -+ ;; -+esac -+]) -+ -+case " $_LT_TAGVAR(postdeps, $1) " in -+*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -+esac -+ _LT_TAGVAR(compiler_lib_search_dirs, $1)= -+if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then -+ _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -+fi -+_LT_TAGDECL([], [compiler_lib_search_dirs], [1], -+ [The directories searched by this compiler when creating a shared library]) -+_LT_TAGDECL([], [predep_objects], [1], -+ [Dependencies to place before and after the objects being linked to -+ create a shared library]) -+_LT_TAGDECL([], [postdep_objects], [1]) -+_LT_TAGDECL([], [predeps], [1]) -+_LT_TAGDECL([], [postdeps], [1]) -+_LT_TAGDECL([], [compiler_lib_search_path], [1], -+ [The library search path used internally by the compiler when linking -+ a shared library]) -+])# _LT_SYS_HIDDEN_LIBDEPS -+ -+ -+# _LT_LANG_F77_CONFIG([TAG]) -+# -------------------------- -+# Ensure that the configuration variables for a Fortran 77 compiler are -+# suitably defined. These variables are subsequently used by _LT_CONFIG -+# to write the compiler configuration to `libtool'. -+m4_defun([_LT_LANG_F77_CONFIG], -+[AC_LANG_PUSH(Fortran 77) -+if test -z "$F77" || test "X$F77" = "Xno"; then -+ _lt_disable_F77=yes -+fi -+ -+_LT_TAGVAR(archive_cmds_need_lc, $1)=no -+_LT_TAGVAR(allow_undefined_flag, $1)= -+_LT_TAGVAR(always_export_symbols, $1)=no -+_LT_TAGVAR(archive_expsym_cmds, $1)= -+_LT_TAGVAR(export_dynamic_flag_spec, $1)= -+_LT_TAGVAR(hardcode_direct, $1)=no -+_LT_TAGVAR(hardcode_direct_absolute, $1)=no -+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -+_LT_TAGVAR(hardcode_libdir_separator, $1)= -+_LT_TAGVAR(hardcode_minus_L, $1)=no -+_LT_TAGVAR(hardcode_automatic, $1)=no -+_LT_TAGVAR(inherit_rpath, $1)=no -+_LT_TAGVAR(module_cmds, $1)= -+_LT_TAGVAR(module_expsym_cmds, $1)= -+_LT_TAGVAR(link_all_deplibs, $1)=unknown -+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -+_LT_TAGVAR(no_undefined_flag, $1)= -+_LT_TAGVAR(whole_archive_flag_spec, $1)= -+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no -+ -+# Source file extension for f77 test sources. -+ac_ext=f -+ -+# Object file extension for compiled f77 test sources. -+objext=o -+_LT_TAGVAR(objext, $1)=$objext -+ -+# No sense in running all these tests if we already determined that -+# the F77 compiler isn't working. Some variables (like enable_shared) -+# are currently assumed to apply to all compilers on this platform, -+# and will be corrupted by setting them based on a non-working compiler. -+if test "$_lt_disable_F77" != yes; then -+ # Code to be used in simple compile tests -+ lt_simple_compile_test_code="\ -+ subroutine t -+ return -+ end -+" -+ -+ # Code to be used in simple link tests -+ lt_simple_link_test_code="\ -+ program t -+ end -+" -+ -+ # ltmain only uses $CC for tagged configurations so make sure $CC is set. -+ _LT_TAG_COMPILER -+ -+ # save warnings/boilerplate of simple test code -+ _LT_COMPILER_BOILERPLATE -+ _LT_LINKER_BOILERPLATE -+ -+ # Allow CC to be a program name with arguments. -+ lt_save_CC="$CC" -+ lt_save_GCC=$GCC -+ lt_save_CFLAGS=$CFLAGS -+ CC=${F77-"f77"} -+ CFLAGS=$FFLAGS -+ compiler=$CC -+ _LT_TAGVAR(compiler, $1)=$CC -+ _LT_CC_BASENAME([$compiler]) -+ GCC=$G77 -+ if test -n "$compiler"; then -+ AC_MSG_CHECKING([if libtool supports shared libraries]) -+ AC_MSG_RESULT([$can_build_shared]) -+ -+ AC_MSG_CHECKING([whether to build shared libraries]) -+ test "$can_build_shared" = "no" && enable_shared=no -+ -+ # On AIX, shared libraries and static libraries use the same namespace, and -+ # are all built from PIC. -+ case $host_os in -+ aix3*) -+ test "$enable_shared" = yes && enable_static=no -+ if test -n "$RANLIB"; then -+ archive_cmds="$archive_cmds~\$RANLIB \$lib" -+ postinstall_cmds='$RANLIB $lib' -+ fi -+ ;; -+ aix[[4-9]]*) -+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then -+ test "$enable_shared" = yes && enable_static=no -+ fi -+ ;; -+ esac -+ AC_MSG_RESULT([$enable_shared]) -+ -+ AC_MSG_CHECKING([whether to build static libraries]) -+ # Make sure either enable_shared or enable_static is yes. -+ test "$enable_shared" = yes || enable_static=yes -+ AC_MSG_RESULT([$enable_static]) -+ -+ _LT_TAGVAR(GCC, $1)="$G77" -+ _LT_TAGVAR(LD, $1)="$LD" -+ -+ ## CAVEAT EMPTOR: -+ ## There is no encapsulation within the following macros, do not change -+ ## the running order or otherwise move them around unless you know exactly -+ ## what you are doing... -+ _LT_COMPILER_PIC($1) -+ _LT_COMPILER_C_O($1) -+ _LT_COMPILER_FILE_LOCKS($1) -+ _LT_LINKER_SHLIBS($1) -+ _LT_SYS_DYNAMIC_LINKER($1) -+ _LT_LINKER_HARDCODE_LIBPATH($1) -+ -+ _LT_CONFIG($1) -+ fi # test -n "$compiler" -+ -+ GCC=$lt_save_GCC -+ CC="$lt_save_CC" -+ CFLAGS="$lt_save_CFLAGS" -+fi # test "$_lt_disable_F77" != yes -+ -+AC_LANG_POP -+])# _LT_LANG_F77_CONFIG -+ -+ -+# _LT_LANG_FC_CONFIG([TAG]) -+# ------------------------- -+# Ensure that the configuration variables for a Fortran compiler are -+# suitably defined. These variables are subsequently used by _LT_CONFIG -+# to write the compiler configuration to `libtool'. -+m4_defun([_LT_LANG_FC_CONFIG], -+[AC_LANG_PUSH(Fortran) -+ -+if test -z "$FC" || test "X$FC" = "Xno"; then -+ _lt_disable_FC=yes -+fi -+ -+_LT_TAGVAR(archive_cmds_need_lc, $1)=no -+_LT_TAGVAR(allow_undefined_flag, $1)= -+_LT_TAGVAR(always_export_symbols, $1)=no -+_LT_TAGVAR(archive_expsym_cmds, $1)= -+_LT_TAGVAR(export_dynamic_flag_spec, $1)= -+_LT_TAGVAR(hardcode_direct, $1)=no -+_LT_TAGVAR(hardcode_direct_absolute, $1)=no -+_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -+_LT_TAGVAR(hardcode_libdir_separator, $1)= -+_LT_TAGVAR(hardcode_minus_L, $1)=no -+_LT_TAGVAR(hardcode_automatic, $1)=no -+_LT_TAGVAR(inherit_rpath, $1)=no -+_LT_TAGVAR(module_cmds, $1)= -+_LT_TAGVAR(module_expsym_cmds, $1)= -+_LT_TAGVAR(link_all_deplibs, $1)=unknown -+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -+_LT_TAGVAR(no_undefined_flag, $1)= -+_LT_TAGVAR(whole_archive_flag_spec, $1)= -+_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no -+ -+# Source file extension for fc test sources. -+ac_ext=${ac_fc_srcext-f} -+ -+# Object file extension for compiled fc test sources. -+objext=o -+_LT_TAGVAR(objext, $1)=$objext -+ -+# No sense in running all these tests if we already determined that -+# the FC compiler isn't working. Some variables (like enable_shared) -+# are currently assumed to apply to all compilers on this platform, -+# and will be corrupted by setting them based on a non-working compiler. -+if test "$_lt_disable_FC" != yes; then -+ # Code to be used in simple compile tests -+ lt_simple_compile_test_code="\ -+ subroutine t -+ return -+ end -+" -+ -+ # Code to be used in simple link tests -+ lt_simple_link_test_code="\ -+ program t -+ end -+" -+ -+ # ltmain only uses $CC for tagged configurations so make sure $CC is set. -+ _LT_TAG_COMPILER -+ -+ # save warnings/boilerplate of simple test code -+ _LT_COMPILER_BOILERPLATE -+ _LT_LINKER_BOILERPLATE -+ -+ # Allow CC to be a program name with arguments. -+ lt_save_CC="$CC" -+ lt_save_GCC=$GCC -+ lt_save_CFLAGS=$CFLAGS -+ CC=${FC-"f95"} -+ CFLAGS=$FCFLAGS -+ compiler=$CC -+ GCC=$ac_cv_fc_compiler_gnu -+ -+ _LT_TAGVAR(compiler, $1)=$CC -+ _LT_CC_BASENAME([$compiler]) -+ -+ if test -n "$compiler"; then -+ AC_MSG_CHECKING([if libtool supports shared libraries]) -+ AC_MSG_RESULT([$can_build_shared]) -+ -+ AC_MSG_CHECKING([whether to build shared libraries]) -+ test "$can_build_shared" = "no" && enable_shared=no -+ -+ # On AIX, shared libraries and static libraries use the same namespace, and -+ # are all built from PIC. -+ case $host_os in -+ aix3*) -+ test "$enable_shared" = yes && enable_static=no -+ if test -n "$RANLIB"; then -+ archive_cmds="$archive_cmds~\$RANLIB \$lib" -+ postinstall_cmds='$RANLIB $lib' -+ fi -+ ;; -+ aix[[4-9]]*) -+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then -+ test "$enable_shared" = yes && enable_static=no -+ fi -+ ;; -+ esac -+ AC_MSG_RESULT([$enable_shared]) -+ -+ AC_MSG_CHECKING([whether to build static libraries]) -+ # Make sure either enable_shared or enable_static is yes. -+ test "$enable_shared" = yes || enable_static=yes -+ AC_MSG_RESULT([$enable_static]) -+ -+ _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" -+ _LT_TAGVAR(LD, $1)="$LD" -+ -+ ## CAVEAT EMPTOR: -+ ## There is no encapsulation within the following macros, do not change -+ ## the running order or otherwise move them around unless you know exactly -+ ## what you are doing... -+ _LT_SYS_HIDDEN_LIBDEPS($1) -+ _LT_COMPILER_PIC($1) -+ _LT_COMPILER_C_O($1) -+ _LT_COMPILER_FILE_LOCKS($1) -+ _LT_LINKER_SHLIBS($1) -+ _LT_SYS_DYNAMIC_LINKER($1) -+ _LT_LINKER_HARDCODE_LIBPATH($1) -+ -+ _LT_CONFIG($1) -+ fi # test -n "$compiler" -+ -+ GCC=$lt_save_GCC -+ CC=$lt_save_CC -+ CFLAGS=$lt_save_CFLAGS -+fi # test "$_lt_disable_FC" != yes -+ -+AC_LANG_POP -+])# _LT_LANG_FC_CONFIG -+ -+ -+# _LT_LANG_GCJ_CONFIG([TAG]) -+# -------------------------- -+# Ensure that the configuration variables for the GNU Java Compiler compiler -+# are suitably defined. These variables are subsequently used by _LT_CONFIG -+# to write the compiler configuration to `libtool'. -+m4_defun([_LT_LANG_GCJ_CONFIG], -+[AC_REQUIRE([LT_PROG_GCJ])dnl -+AC_LANG_SAVE -+ -+# Source file extension for Java test sources. -+ac_ext=java -+ -+# Object file extension for compiled Java test sources. -+objext=o -+_LT_TAGVAR(objext, $1)=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="class foo {}" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' -+ -+# ltmain only uses $CC for tagged configurations so make sure $CC is set. -+_LT_TAG_COMPILER -+ -+# save warnings/boilerplate of simple test code -+_LT_COMPILER_BOILERPLATE -+_LT_LINKER_BOILERPLATE -+ -+# Allow CC to be a program name with arguments. -+lt_save_CC=$CC -+lt_save_CFLAGS=$CFLAGS -+lt_save_GCC=$GCC -+GCC=yes -+CC=${GCJ-"gcj"} -+CFLAGS=$GCJFLAGS -+compiler=$CC -+_LT_TAGVAR(compiler, $1)=$CC -+_LT_TAGVAR(LD, $1)="$LD" -+_LT_CC_BASENAME([$compiler]) -+ -+# GCJ did not exist at the time GCC didn't implicitly link libc in. -+_LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ -+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -+ -+## CAVEAT EMPTOR: -+## There is no encapsulation within the following macros, do not change -+## the running order or otherwise move them around unless you know exactly -+## what you are doing... -+if test -n "$compiler"; then -+ _LT_COMPILER_NO_RTTI($1) -+ _LT_COMPILER_PIC($1) -+ _LT_COMPILER_C_O($1) -+ _LT_COMPILER_FILE_LOCKS($1) -+ _LT_LINKER_SHLIBS($1) -+ _LT_LINKER_HARDCODE_LIBPATH($1) -+ -+ _LT_CONFIG($1) -+fi -+ -+AC_LANG_RESTORE -+ -+GCC=$lt_save_GCC -+CC=$lt_save_CC -+CFLAGS=$lt_save_CFLAGS -+])# _LT_LANG_GCJ_CONFIG -+ -+ -+# _LT_LANG_GO_CONFIG([TAG]) -+# -------------------------- -+# Ensure that the configuration variables for the GNU Go compiler -+# are suitably defined. These variables are subsequently used by _LT_CONFIG -+# to write the compiler configuration to `libtool'. -+m4_defun([_LT_LANG_GO_CONFIG], -+[AC_REQUIRE([LT_PROG_GO])dnl -+AC_LANG_SAVE -+ -+# Source file extension for Go test sources. -+ac_ext=go -+ -+# Object file extension for compiled Go test sources. -+objext=o -+_LT_TAGVAR(objext, $1)=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code="package main; func main() { }" -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code='package main; func main() { }' -+ -+# ltmain only uses $CC for tagged configurations so make sure $CC is set. -+_LT_TAG_COMPILER -+ -+# save warnings/boilerplate of simple test code -+_LT_COMPILER_BOILERPLATE -+_LT_LINKER_BOILERPLATE -+ -+# Allow CC to be a program name with arguments. -+lt_save_CC=$CC -+lt_save_CFLAGS=$CFLAGS -+lt_save_GCC=$GCC -+GCC=yes -+CC=${GOC-"gccgo"} -+CFLAGS=$GOFLAGS -+compiler=$CC -+_LT_TAGVAR(compiler, $1)=$CC -+_LT_TAGVAR(LD, $1)="$LD" -+_LT_CC_BASENAME([$compiler]) -+ -+# Go did not exist at the time GCC didn't implicitly link libc in. -+_LT_TAGVAR(archive_cmds_need_lc, $1)=no -+ -+_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -+_LT_TAGVAR(reload_flag, $1)=$reload_flag -+_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -+ -+## CAVEAT EMPTOR: -+## There is no encapsulation within the following macros, do not change -+## the running order or otherwise move them around unless you know exactly -+## what you are doing... -+if test -n "$compiler"; then -+ _LT_COMPILER_NO_RTTI($1) -+ _LT_COMPILER_PIC($1) -+ _LT_COMPILER_C_O($1) -+ _LT_COMPILER_FILE_LOCKS($1) -+ _LT_LINKER_SHLIBS($1) -+ _LT_LINKER_HARDCODE_LIBPATH($1) -+ -+ _LT_CONFIG($1) -+fi -+ -+AC_LANG_RESTORE -+ -+GCC=$lt_save_GCC -+CC=$lt_save_CC -+CFLAGS=$lt_save_CFLAGS -+])# _LT_LANG_GO_CONFIG -+ -+ -+# _LT_LANG_RC_CONFIG([TAG]) -+# ------------------------- -+# Ensure that the configuration variables for the Windows resource compiler -+# are suitably defined. These variables are subsequently used by _LT_CONFIG -+# to write the compiler configuration to `libtool'. -+m4_defun([_LT_LANG_RC_CONFIG], -+[AC_REQUIRE([LT_PROG_RC])dnl -+AC_LANG_SAVE -+ -+# Source file extension for RC test sources. -+ac_ext=rc -+ -+# Object file extension for compiled RC test sources. -+objext=o -+_LT_TAGVAR(objext, $1)=$objext -+ -+# Code to be used in simple compile tests -+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' -+ -+# Code to be used in simple link tests -+lt_simple_link_test_code="$lt_simple_compile_test_code" -+ -+# ltmain only uses $CC for tagged configurations so make sure $CC is set. -+_LT_TAG_COMPILER -+ -+# save warnings/boilerplate of simple test code -+_LT_COMPILER_BOILERPLATE -+_LT_LINKER_BOILERPLATE -+ -+# Allow CC to be a program name with arguments. -+lt_save_CC="$CC" -+lt_save_CFLAGS=$CFLAGS -+lt_save_GCC=$GCC -+GCC= -+CC=${RC-"windres"} -+CFLAGS= -+compiler=$CC -+_LT_TAGVAR(compiler, $1)=$CC -+_LT_CC_BASENAME([$compiler]) -+_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes -+ -+if test -n "$compiler"; then -+ : -+ _LT_CONFIG($1) -+fi -+ -+GCC=$lt_save_GCC -+AC_LANG_RESTORE -+CC=$lt_save_CC -+CFLAGS=$lt_save_CFLAGS -+])# _LT_LANG_RC_CONFIG -+ -+ -+# LT_PROG_GCJ -+# ----------- -+AC_DEFUN([LT_PROG_GCJ], -+[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], -+ [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], -+ [AC_CHECK_TOOL(GCJ, gcj,) -+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" -+ AC_SUBST(GCJFLAGS)])])[]dnl -+]) -+ -+# Old name: -+AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([LT_AC_PROG_GCJ], []) -+ -+ -+# LT_PROG_GO -+# ---------- -+AC_DEFUN([LT_PROG_GO], -+[AC_CHECK_TOOL(GOC, gccgo,) -+]) -+ -+ -+# LT_PROG_RC -+# ---------- -+AC_DEFUN([LT_PROG_RC], -+[AC_CHECK_TOOL(RC, windres,) -+]) -+ -+# Old name: -+AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([LT_AC_PROG_RC], []) -+ -+ -+# _LT_DECL_EGREP -+# -------------- -+# If we don't have a new enough Autoconf to choose the best grep -+# available, choose the one first in the user's PATH. -+m4_defun([_LT_DECL_EGREP], -+[AC_REQUIRE([AC_PROG_EGREP])dnl -+AC_REQUIRE([AC_PROG_FGREP])dnl -+test -z "$GREP" && GREP=grep -+_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -+_LT_DECL([], [EGREP], [1], [An ERE matcher]) -+_LT_DECL([], [FGREP], [1], [A literal string matcher]) -+dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -+AC_SUBST([GREP]) -+]) -+ -+ -+# _LT_DECL_OBJDUMP -+# -------------- -+# If we don't have a new enough Autoconf to choose the best objdump -+# available, choose the one first in the user's PATH. -+m4_defun([_LT_DECL_OBJDUMP], -+[AC_CHECK_TOOL(OBJDUMP, objdump, false) -+test -z "$OBJDUMP" && OBJDUMP=objdump -+_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -+AC_SUBST([OBJDUMP]) -+]) -+ -+# _LT_DECL_DLLTOOL -+# ---------------- -+# Ensure DLLTOOL variable is set. -+m4_defun([_LT_DECL_DLLTOOL], -+[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -+test -z "$DLLTOOL" && DLLTOOL=dlltool -+_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -+AC_SUBST([DLLTOOL]) -+]) -+ -+# _LT_DECL_SED -+# ------------ -+# Check for a fully-functional sed program, that truncates -+# as few characters as possible. Prefer GNU sed if found. -+m4_defun([_LT_DECL_SED], -+[AC_PROG_SED -+test -z "$SED" && SED=sed -+Xsed="$SED -e 1s/^X//" -+_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -+_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], -+ [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -+])# _LT_DECL_SED -+ -+m4_ifndef([AC_PROG_SED], [ -+############################################################ -+# NOTE: This macro has been submitted for inclusion into # -+# GNU Autoconf as AC_PROG_SED. When it is available in # -+# a released version of Autoconf we should remove this # -+# macro and use it instead. # -+############################################################ -+ -+m4_defun([AC_PROG_SED], -+[AC_MSG_CHECKING([for a sed that does not truncate output]) -+AC_CACHE_VAL(lt_cv_path_SED, -+[# Loop through the user's path and test for sed and gsed. -+# Then use that list of sed's as ones to test for truncation. -+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -+for as_dir in $PATH -+do -+ IFS=$as_save_IFS -+ test -z "$as_dir" && as_dir=. -+ for lt_ac_prog in sed gsed; do -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then -+ lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" -+ fi -+ done -+ done -+done -+IFS=$as_save_IFS -+lt_ac_max=0 -+lt_ac_count=0 -+# Add /usr/xpg4/bin/sed as it is typically found on Solaris -+# along with /bin/sed that truncates output. -+for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do -+ test ! -f $lt_ac_sed && continue -+ cat /dev/null > conftest.in -+ lt_ac_count=0 -+ echo $ECHO_N "0123456789$ECHO_C" >conftest.in -+ # Check for GNU sed and select it if it is found. -+ if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then -+ lt_cv_path_SED=$lt_ac_sed -+ break -+ fi -+ while true; do -+ cat conftest.in conftest.in >conftest.tmp -+ mv conftest.tmp conftest.in -+ cp conftest.in conftest.nl -+ echo >>conftest.nl -+ $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break -+ cmp -s conftest.out conftest.nl || break -+ # 10000 chars as input seems more than enough -+ test $lt_ac_count -gt 10 && break -+ lt_ac_count=`expr $lt_ac_count + 1` -+ if test $lt_ac_count -gt $lt_ac_max; then -+ lt_ac_max=$lt_ac_count -+ lt_cv_path_SED=$lt_ac_sed -+ fi -+ done -+done -+]) -+SED=$lt_cv_path_SED -+AC_SUBST([SED]) -+AC_MSG_RESULT([$SED]) -+])#AC_PROG_SED -+])#m4_ifndef -+ -+# Old name: -+AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([LT_AC_PROG_SED], []) -+ -+ -+# _LT_CHECK_SHELL_FEATURES -+# ------------------------ -+# Find out whether the shell is Bourne or XSI compatible, -+# or has some other useful features. -+m4_defun([_LT_CHECK_SHELL_FEATURES], -+[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -+# Try some XSI features -+xsi_shell=no -+( _lt_dummy="a/b/c" -+ test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ -+ = c,a/b,b/c, \ -+ && eval 'test $(( 1 + 1 )) -eq 2 \ -+ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ -+ && xsi_shell=yes -+AC_MSG_RESULT([$xsi_shell]) -+_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) -+ -+AC_MSG_CHECKING([whether the shell understands "+="]) -+lt_shell_append=no -+( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ -+ >/dev/null 2>&1 \ -+ && lt_shell_append=yes -+AC_MSG_RESULT([$lt_shell_append]) -+_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) -+ -+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then -+ lt_unset=unset -+else -+ lt_unset=false -+fi -+_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl -+ -+# test EBCDIC or ASCII -+case `echo X|tr X '\101'` in -+ A) # ASCII based system -+ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr -+ lt_SP2NL='tr \040 \012' -+ lt_NL2SP='tr \015\012 \040\040' -+ ;; -+ *) # EBCDIC based system -+ lt_SP2NL='tr \100 \n' -+ lt_NL2SP='tr \r\n \100\100' -+ ;; -+esac -+_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -+_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -+])# _LT_CHECK_SHELL_FEATURES -+ -+ -+# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -+# ------------------------------------------------------ -+# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -+# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -+m4_defun([_LT_PROG_FUNCTION_REPLACE], -+[dnl { -+sed -e '/^$1 ()$/,/^} # $1 /c\ -+$1 ()\ -+{\ -+m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -+} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+test 0 -eq $? || _lt_function_replace_fail=: -+]) -+ -+ -+# _LT_PROG_REPLACE_SHELLFNS -+# ------------------------- -+# Replace existing portable implementations of several shell functions with -+# equivalent extended shell implementations where those features are available.. -+m4_defun([_LT_PROG_REPLACE_SHELLFNS], -+[if test x"$xsi_shell" = xyes; then -+ _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl -+ func_basename_result="${1##*/}"]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl -+ case ${1} in -+ */*) func_dirname_result="${1%/*}${2}" ;; -+ * ) func_dirname_result="${3}" ;; -+ esac -+ func_basename_result="${1##*/}"]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl -+ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are -+ # positional parameters, so assign one to ordinary parameter first. -+ func_stripname_result=${3} -+ func_stripname_result=${func_stripname_result#"${1}"} -+ func_stripname_result=${func_stripname_result%"${2}"}]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl -+ func_split_long_opt_name=${1%%=*} -+ func_split_long_opt_arg=${1#*=}]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl -+ func_split_short_opt_arg=${1#??} -+ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl -+ case ${1} in -+ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; -+ *) func_lo2o_result=${1} ;; -+ esac]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -+fi -+ -+if test x"$lt_shell_append" = xyes; then -+ _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) -+ -+ _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl -+ func_quote_for_eval "${2}" -+dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ -+ eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) -+ -+ # Save a `func_append' function call where possible by direct use of '+=' -+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+ test 0 -eq $? || _lt_function_replace_fail=: -+else -+ # Save a `func_append' function call even when '+=' is not available -+ sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ -+ && mv -f "$cfgfile.tmp" "$cfgfile" \ -+ || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -+ test 0 -eq $? || _lt_function_replace_fail=: -+fi -+ -+if test x"$_lt_function_replace_fail" = x":"; then -+ AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -+fi -+]) -+ -+# _LT_PATH_CONVERSION_FUNCTIONS -+# ----------------------------- -+# Determine which file name conversion functions should be used by -+# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -+# for certain cross-compile configurations and native mingw. -+m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl -+AC_REQUIRE([AC_CANONICAL_BUILD])dnl -+AC_MSG_CHECKING([how to convert $build file names to $host format]) -+AC_CACHE_VAL(lt_cv_to_host_file_cmd, -+[case $host in -+ *-*-mingw* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 -+ ;; -+ *-*-cygwin* ) -+ lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 -+ ;; -+ * ) # otherwise, assume *nix -+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 -+ ;; -+ esac -+ ;; -+ *-*-cygwin* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin -+ ;; -+ *-*-cygwin* ) -+ lt_cv_to_host_file_cmd=func_convert_file_noop -+ ;; -+ * ) # otherwise, assume *nix -+ lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin -+ ;; -+ esac -+ ;; -+ * ) # unhandled hosts (and "normal" native builds) -+ lt_cv_to_host_file_cmd=func_convert_file_noop -+ ;; -+esac -+]) -+to_host_file_cmd=$lt_cv_to_host_file_cmd -+AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -+_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], -+ [0], [convert $build file names to $host format])dnl -+ -+AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -+AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -+[#assume ordinary cross tools, or native build. -+lt_cv_to_tool_file_cmd=func_convert_file_noop -+case $host in -+ *-*-mingw* ) -+ case $build in -+ *-*-mingw* ) # actually msys -+ lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 -+ ;; -+ esac -+ ;; -+esac -+]) -+to_tool_file_cmd=$lt_cv_to_tool_file_cmd -+AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -+_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], -+ [0], [convert $build files to toolchain format])dnl -+])# _LT_PATH_CONVERSION_FUNCTIONS -diff --git a/libclamav/libmspack-0.4alpha/m4/ltoptions.m4 b/libclamav/libmspack-0.4alpha/m4/ltoptions.m4 -new file mode 100644 -index 000000000000..5d9acd8e23bc ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/m4/ltoptions.m4 -@@ -0,0 +1,384 @@ -+# Helper functions for option handling. -*- Autoconf -*- -+# -+# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -+# Inc. -+# Written by Gary V. Vaughan, 2004 -+# -+# This file is free software; the Free Software Foundation gives -+# unlimited permission to copy and/or distribute it, with or without -+# modifications, as long as this notice is preserved. -+ -+# serial 7 ltoptions.m4 -+ -+# This is to help aclocal find these macros, as it can't see m4_define. -+AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) -+ -+ -+# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -+# ------------------------------------------ -+m4_define([_LT_MANGLE_OPTION], -+[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) -+ -+ -+# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -+# --------------------------------------- -+# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -+# matching handler defined, dispatch to it. Other OPTION-NAMEs are -+# saved as a flag. -+m4_define([_LT_SET_OPTION], -+[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -+m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), -+ _LT_MANGLE_DEFUN([$1], [$2]), -+ [m4_warning([Unknown $1 option `$2'])])[]dnl -+]) -+ -+ -+# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -+# ------------------------------------------------------------ -+# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -+m4_define([_LT_IF_OPTION], -+[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) -+ -+ -+# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -+# ------------------------------------------------------- -+# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -+# are set. -+m4_define([_LT_UNLESS_OPTIONS], -+[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), -+ [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), -+ [m4_define([$0_found])])])[]dnl -+m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -+])[]dnl -+]) -+ -+ -+# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -+# ---------------------------------------- -+# OPTION-LIST is a space-separated list of Libtool options associated -+# with MACRO-NAME. If any OPTION has a matching handler declared with -+# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -+# the unknown option and exit. -+m4_defun([_LT_SET_OPTIONS], -+[# Set options -+m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), -+ [_LT_SET_OPTION([$1], _LT_Option)]) -+ -+m4_if([$1],[LT_INIT],[ -+ dnl -+ dnl Simply set some default values (i.e off) if boolean options were not -+ dnl specified: -+ _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no -+ ]) -+ _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no -+ ]) -+ dnl -+ dnl If no reference was made to various pairs of opposing options, then -+ dnl we run the default mode handler for the pair. For example, if neither -+ dnl `shared' nor `disable-shared' was passed, we enable building of shared -+ dnl archives by default: -+ _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) -+ _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) -+ _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) -+ _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], -+ [_LT_ENABLE_FAST_INSTALL]) -+ ]) -+])# _LT_SET_OPTIONS -+ -+ -+## --------------------------------- ## -+## Macros to handle LT_INIT options. ## -+## --------------------------------- ## -+ -+# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -+# ----------------------------------------- -+m4_define([_LT_MANGLE_DEFUN], -+[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) -+ -+ -+# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -+# ----------------------------------------------- -+m4_define([LT_OPTION_DEFINE], -+[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -+])# LT_OPTION_DEFINE -+ -+ -+# dlopen -+# ------ -+LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -+]) -+ -+AU_DEFUN([AC_LIBTOOL_DLOPEN], -+[_LT_SET_OPTION([LT_INIT], [dlopen]) -+AC_DIAGNOSE([obsolete], -+[$0: Remove this warning and the call to _LT_SET_OPTION when you -+put the `dlopen' option into LT_INIT's first parameter.]) -+]) -+ -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) -+ -+ -+# win32-dll -+# --------- -+# Declare package support for building win32 dll's. -+LT_OPTION_DEFINE([LT_INIT], [win32-dll], -+[enable_win32_dll=yes -+ -+case $host in -+*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) -+ AC_CHECK_TOOL(AS, as, false) -+ AC_CHECK_TOOL(DLLTOOL, dlltool, false) -+ AC_CHECK_TOOL(OBJDUMP, objdump, false) -+ ;; -+esac -+ -+test -z "$AS" && AS=as -+_LT_DECL([], [AS], [1], [Assembler program])dnl -+ -+test -z "$DLLTOOL" && DLLTOOL=dlltool -+_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl -+ -+test -z "$OBJDUMP" && OBJDUMP=objdump -+_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -+])# win32-dll -+ -+AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -+[AC_REQUIRE([AC_CANONICAL_HOST])dnl -+_LT_SET_OPTION([LT_INIT], [win32-dll]) -+AC_DIAGNOSE([obsolete], -+[$0: Remove this warning and the call to _LT_SET_OPTION when you -+put the `win32-dll' option into LT_INIT's first parameter.]) -+]) -+ -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) -+ -+ -+# _LT_ENABLE_SHARED([DEFAULT]) -+# ---------------------------- -+# implement the --enable-shared flag, and supports the `shared' and -+# `disable-shared' LT_INIT options. -+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -+m4_define([_LT_ENABLE_SHARED], -+[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -+AC_ARG_ENABLE([shared], -+ [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], -+ [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], -+ [p=${PACKAGE-default} -+ case $enableval in -+ yes) enable_shared=yes ;; -+ no) enable_shared=no ;; -+ *) -+ enable_shared=no -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_shared=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac], -+ [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) -+ -+ _LT_DECL([build_libtool_libs], [enable_shared], [0], -+ [Whether or not to build shared libraries]) -+])# _LT_ENABLE_SHARED -+ -+LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -+LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) -+ -+# Old names: -+AC_DEFUN([AC_ENABLE_SHARED], -+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -+]) -+ -+AC_DEFUN([AC_DISABLE_SHARED], -+[_LT_SET_OPTION([LT_INIT], [disable-shared]) -+]) -+ -+AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -+AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) -+ -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AM_ENABLE_SHARED], []) -+dnl AC_DEFUN([AM_DISABLE_SHARED], []) -+ -+ -+ -+# _LT_ENABLE_STATIC([DEFAULT]) -+# ---------------------------- -+# implement the --enable-static flag, and support the `static' and -+# `disable-static' LT_INIT options. -+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -+m4_define([_LT_ENABLE_STATIC], -+[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -+AC_ARG_ENABLE([static], -+ [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], -+ [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], -+ [p=${PACKAGE-default} -+ case $enableval in -+ yes) enable_static=yes ;; -+ no) enable_static=no ;; -+ *) -+ enable_static=no -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_static=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac], -+ [enable_static=]_LT_ENABLE_STATIC_DEFAULT) -+ -+ _LT_DECL([build_old_libs], [enable_static], [0], -+ [Whether or not to build static libraries]) -+])# _LT_ENABLE_STATIC -+ -+LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -+LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) -+ -+# Old names: -+AC_DEFUN([AC_ENABLE_STATIC], -+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -+]) -+ -+AC_DEFUN([AC_DISABLE_STATIC], -+[_LT_SET_OPTION([LT_INIT], [disable-static]) -+]) -+ -+AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -+AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) -+ -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AM_ENABLE_STATIC], []) -+dnl AC_DEFUN([AM_DISABLE_STATIC], []) -+ -+ -+ -+# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -+# ---------------------------------- -+# implement the --enable-fast-install flag, and support the `fast-install' -+# and `disable-fast-install' LT_INIT options. -+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -+m4_define([_LT_ENABLE_FAST_INSTALL], -+[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -+AC_ARG_ENABLE([fast-install], -+ [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], -+ [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], -+ [p=${PACKAGE-default} -+ case $enableval in -+ yes) enable_fast_install=yes ;; -+ no) enable_fast_install=no ;; -+ *) -+ enable_fast_install=no -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for pkg in $enableval; do -+ IFS="$lt_save_ifs" -+ if test "X$pkg" = "X$p"; then -+ enable_fast_install=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac], -+ [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) -+ -+_LT_DECL([fast_install], [enable_fast_install], [0], -+ [Whether or not to optimize for fast installation])dnl -+])# _LT_ENABLE_FAST_INSTALL -+ -+LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -+LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) -+ -+# Old names: -+AU_DEFUN([AC_ENABLE_FAST_INSTALL], -+[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -+AC_DIAGNOSE([obsolete], -+[$0: Remove this warning and the call to _LT_SET_OPTION when you put -+the `fast-install' option into LT_INIT's first parameter.]) -+]) -+ -+AU_DEFUN([AC_DISABLE_FAST_INSTALL], -+[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -+AC_DIAGNOSE([obsolete], -+[$0: Remove this warning and the call to _LT_SET_OPTION when you put -+the `disable-fast-install' option into LT_INIT's first parameter.]) -+]) -+ -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -+dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) -+ -+ -+# _LT_WITH_PIC([MODE]) -+# -------------------- -+# implement the --with-pic flag, and support the `pic-only' and `no-pic' -+# LT_INIT options. -+# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -+m4_define([_LT_WITH_PIC], -+[AC_ARG_WITH([pic], -+ [AS_HELP_STRING([--with-pic@<:@=PKGS@:>@], -+ [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], -+ [lt_p=${PACKAGE-default} -+ case $withval in -+ yes|no) pic_mode=$withval ;; -+ *) -+ pic_mode=default -+ # Look at the argument we got. We use all the common list separators. -+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," -+ for lt_pkg in $withval; do -+ IFS="$lt_save_ifs" -+ if test "X$lt_pkg" = "X$lt_p"; then -+ pic_mode=yes -+ fi -+ done -+ IFS="$lt_save_ifs" -+ ;; -+ esac], -+ [pic_mode=default]) -+ -+test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) -+ -+_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -+])# _LT_WITH_PIC -+ -+LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -+LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) -+ -+# Old name: -+AU_DEFUN([AC_LIBTOOL_PICMODE], -+[_LT_SET_OPTION([LT_INIT], [pic-only]) -+AC_DIAGNOSE([obsolete], -+[$0: Remove this warning and the call to _LT_SET_OPTION when you -+put the `pic-only' option into LT_INIT's first parameter.]) -+]) -+ -+dnl aclocal-1.4 backwards compatibility: -+dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) -+ -+## ----------------- ## -+## LTDL_INIT Options ## -+## ----------------- ## -+ -+m4_define([_LTDL_MODE], []) -+LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], -+ [m4_define([_LTDL_MODE], [nonrecursive])]) -+LT_OPTION_DEFINE([LTDL_INIT], [recursive], -+ [m4_define([_LTDL_MODE], [recursive])]) -+LT_OPTION_DEFINE([LTDL_INIT], [subproject], -+ [m4_define([_LTDL_MODE], [subproject])]) -+ -+m4_define([_LTDL_TYPE], []) -+LT_OPTION_DEFINE([LTDL_INIT], [installable], -+ [m4_define([_LTDL_TYPE], [installable])]) -+LT_OPTION_DEFINE([LTDL_INIT], [convenience], -+ [m4_define([_LTDL_TYPE], [convenience])]) -diff --git a/libclamav/libmspack-0.4alpha/m4/ltsugar.m4 b/libclamav/libmspack-0.4alpha/m4/ltsugar.m4 -new file mode 100644 -index 000000000000..9000a057d31d ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/m4/ltsugar.m4 -@@ -0,0 +1,123 @@ -+# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -+# -+# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -+# Written by Gary V. Vaughan, 2004 -+# -+# This file is free software; the Free Software Foundation gives -+# unlimited permission to copy and/or distribute it, with or without -+# modifications, as long as this notice is preserved. -+ -+# serial 6 ltsugar.m4 -+ -+# This is to help aclocal find these macros, as it can't see m4_define. -+AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) -+ -+ -+# lt_join(SEP, ARG1, [ARG2...]) -+# ----------------------------- -+# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -+# associated separator. -+# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -+# versions in m4sugar had bugs. -+m4_define([lt_join], -+[m4_if([$#], [1], [], -+ [$#], [2], [[$2]], -+ [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -+m4_define([_lt_join], -+[m4_if([$#$2], [2], [], -+ [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) -+ -+ -+# lt_car(LIST) -+# lt_cdr(LIST) -+# ------------ -+# Manipulate m4 lists. -+# These macros are necessary as long as will still need to support -+# Autoconf-2.59 which quotes differently. -+m4_define([lt_car], [[$1]]) -+m4_define([lt_cdr], -+[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], -+ [$#], 1, [], -+ [m4_dquote(m4_shift($@))])]) -+m4_define([lt_unquote], $1) -+ -+ -+# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -+# ------------------------------------------ -+# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -+# Note that neither SEPARATOR nor STRING are expanded; they are appended -+# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -+# No SEPARATOR is output if MACRO-NAME was previously undefined (different -+# than defined and empty). -+# -+# This macro is needed until we can rely on Autoconf 2.62, since earlier -+# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -+m4_define([lt_append], -+[m4_define([$1], -+ m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) -+ -+ -+ -+# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -+# ---------------------------------------------------------- -+# Produce a SEP delimited list of all paired combinations of elements of -+# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -+# has the form PREFIXmINFIXSUFFIXn. -+# Needed until we can rely on m4_combine added in Autoconf 2.62. -+m4_define([lt_combine], -+[m4_if(m4_eval([$# > 3]), [1], -+ [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -+[[m4_foreach([_Lt_prefix], [$2], -+ [m4_foreach([_Lt_suffix], -+ ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, -+ [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) -+ -+ -+# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -+# ----------------------------------------------------------------------- -+# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -+# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -+m4_define([lt_if_append_uniq], -+[m4_ifdef([$1], -+ [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], -+ [lt_append([$1], [$2], [$3])$4], -+ [$5])], -+ [lt_append([$1], [$2], [$3])$4])]) -+ -+ -+# lt_dict_add(DICT, KEY, VALUE) -+# ----------------------------- -+m4_define([lt_dict_add], -+[m4_define([$1($2)], [$3])]) -+ -+ -+# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -+# -------------------------------------------- -+m4_define([lt_dict_add_subkey], -+[m4_define([$1($2:$3)], [$4])]) -+ -+ -+# lt_dict_fetch(DICT, KEY, [SUBKEY]) -+# ---------------------------------- -+m4_define([lt_dict_fetch], -+[m4_ifval([$3], -+ m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), -+ m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) -+ -+ -+# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -+# ----------------------------------------------------------------- -+m4_define([lt_if_dict_fetch], -+[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], -+ [$5], -+ [$6])]) -+ -+ -+# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -+# -------------------------------------------------------------- -+m4_define([lt_dict_filter], -+[m4_if([$5], [], [], -+ [lt_join(m4_quote(m4_default([$4], [[, ]])), -+ lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), -+ [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -+]) -diff --git a/libclamav/libmspack-0.4alpha/m4/ltversion.m4 b/libclamav/libmspack-0.4alpha/m4/ltversion.m4 -new file mode 100644 -index 000000000000..07a8602d48d6 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/m4/ltversion.m4 -@@ -0,0 +1,23 @@ -+# ltversion.m4 -- version numbers -*- Autoconf -*- -+# -+# Copyright (C) 2004 Free Software Foundation, Inc. -+# Written by Scott James Remnant, 2004 -+# -+# This file is free software; the Free Software Foundation gives -+# unlimited permission to copy and/or distribute it, with or without -+# modifications, as long as this notice is preserved. -+ -+# @configure_input@ -+ -+# serial 3337 ltversion.m4 -+# This file is part of GNU Libtool -+ -+m4_define([LT_PACKAGE_VERSION], [2.4.2]) -+m4_define([LT_PACKAGE_REVISION], [1.3337]) -+ -+AC_DEFUN([LTVERSION_VERSION], -+[macro_version='2.4.2' -+macro_revision='1.3337' -+_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -+_LT_DECL(, macro_revision, 0) -+]) -diff --git a/libclamav/libmspack-0.4alpha/m4/lt~obsolete.m4 b/libclamav/libmspack-0.4alpha/m4/lt~obsolete.m4 -new file mode 100644 -index 000000000000..c573da90c5cc ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/m4/lt~obsolete.m4 -@@ -0,0 +1,98 @@ -+# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -+# -+# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -+# Written by Scott James Remnant, 2004. -+# -+# This file is free software; the Free Software Foundation gives -+# unlimited permission to copy and/or distribute it, with or without -+# modifications, as long as this notice is preserved. -+ -+# serial 5 lt~obsolete.m4 -+ -+# These exist entirely to fool aclocal when bootstrapping libtool. -+# -+# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -+# which have later been changed to m4_define as they aren't part of the -+# exported API, or moved to Autoconf or Automake where they belong. -+# -+# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -+# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -+# using a macro with the same name in our local m4/libtool.m4 it'll -+# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -+# and doesn't know about Autoconf macros at all.) -+# -+# So we provide this file, which has a silly filename so it's always -+# included after everything else. This provides aclocal with the -+# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -+# because those macros already exist, or will be overwritten later. -+# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -+# -+# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -+# Yes, that means every name once taken will need to remain here until -+# we give up compatibility with versions before 1.7, at which point -+# we need to keep only those names which we still refer to. -+ -+# This is to help aclocal find these macros, as it can't see m4_define. -+AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) -+ -+m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -+m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -+m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -+m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -+m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -+m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -+m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -+m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -+m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -+m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -+m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -+m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -+m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -+m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -+m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -+m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -+m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -+m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -+m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -+m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -+m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -+m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -+m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -+m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -+m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -+m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -+m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -+m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -+m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -+m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -+m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -+m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -+m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -+m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -+m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -+m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -+m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -+m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -+m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -+m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -+m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -+m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -+m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -+m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -+m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -+m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -+m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -+m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -+m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -+m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -+m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -+m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -+m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -+m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -+m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -+m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -+m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -+m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -+m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) -diff --git a/libclamav/libmspack-0.4alpha/missing b/libclamav/libmspack-0.4alpha/missing -new file mode 100755 -index 000000000000..86a8fc31e3c2 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/missing -@@ -0,0 +1,331 @@ -+#! /bin/sh -+# Common stub for a few missing GNU programs while installing. -+ -+scriptversion=2012-01-06.13; # UTC -+ -+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -+# 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. -+# Originally by Fran,cois Pinard , 1996. -+ -+# This program is free software; you can redistribute it and/or modify -+# it under the terms of the GNU General Public License as published by -+# the Free Software Foundation; either version 2, or (at your option) -+# any later version. -+ -+# This program is distributed in the hope that it will be useful, -+# but WITHOUT ANY WARRANTY; without even the implied warranty of -+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+# GNU General Public License for more details. -+ -+# You should have received a copy of the GNU General Public License -+# along with this program. If not, see . -+ -+# As a special exception to the GNU General Public License, if you -+# distribute this file as part of a program that contains a -+# configuration script generated by Autoconf, you may include it under -+# the same distribution terms that you use for the rest of that program. -+ -+if test $# -eq 0; then -+ echo 1>&2 "Try \`$0 --help' for more information" -+ exit 1 -+fi -+ -+run=: -+sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -+sed_minuso='s/.* -o \([^ ]*\).*/\1/p' -+ -+# In the cases where this matters, `missing' is being run in the -+# srcdir already. -+if test -f configure.ac; then -+ configure_ac=configure.ac -+else -+ configure_ac=configure.in -+fi -+ -+msg="missing on your system" -+ -+case $1 in -+--run) -+ # Try to run requested program, and just exit if it succeeds. -+ run= -+ shift -+ "$@" && exit 0 -+ # Exit code 63 means version mismatch. This often happens -+ # when the user try to use an ancient version of a tool on -+ # a file that requires a minimum version. In this case we -+ # we should proceed has if the program had been absent, or -+ # if --run hadn't been passed. -+ if test $? = 63; then -+ run=: -+ msg="probably too old" -+ fi -+ ;; -+ -+ -h|--h|--he|--hel|--help) -+ echo "\ -+$0 [OPTION]... PROGRAM [ARGUMENT]... -+ -+Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -+error status if there is no known handling for PROGRAM. -+ -+Options: -+ -h, --help display this help and exit -+ -v, --version output version information and exit -+ --run try to run the given command, and emulate it if it fails -+ -+Supported PROGRAM values: -+ aclocal touch file \`aclocal.m4' -+ autoconf touch file \`configure' -+ autoheader touch file \`config.h.in' -+ autom4te touch the output file, or create a stub one -+ automake touch all \`Makefile.in' files -+ bison create \`y.tab.[ch]', if possible, from existing .[ch] -+ flex create \`lex.yy.c', if possible, from existing .c -+ help2man touch the output file -+ lex create \`lex.yy.c', if possible, from existing .c -+ makeinfo touch the output file -+ yacc create \`y.tab.[ch]', if possible, from existing .[ch] -+ -+Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -+\`g' are ignored when checking the name. -+ -+Send bug reports to ." -+ exit $? -+ ;; -+ -+ -v|--v|--ve|--ver|--vers|--versi|--versio|--version) -+ echo "missing $scriptversion (GNU Automake)" -+ exit $? -+ ;; -+ -+ -*) -+ echo 1>&2 "$0: Unknown \`$1' option" -+ echo 1>&2 "Try \`$0 --help' for more information" -+ exit 1 -+ ;; -+ -+esac -+ -+# normalize program name to check for. -+program=`echo "$1" | sed ' -+ s/^gnu-//; t -+ s/^gnu//; t -+ s/^g//; t'` -+ -+# Now exit if we have it, but it failed. Also exit now if we -+# don't have it and --version was passed (most likely to detect -+# the program). This is about non-GNU programs, so use $1 not -+# $program. -+case $1 in -+ lex*|yacc*) -+ # Not GNU programs, they don't have --version. -+ ;; -+ -+ *) -+ if test -z "$run" && ($1 --version) > /dev/null 2>&1; then -+ # We have it, but it failed. -+ exit 1 -+ elif test "x$2" = "x--version" || test "x$2" = "x--help"; then -+ # Could not run --version or --help. This is probably someone -+ # running `$TOOL --version' or `$TOOL --help' to check whether -+ # $TOOL exists and not knowing $TOOL uses missing. -+ exit 1 -+ fi -+ ;; -+esac -+ -+# If it does not exist, or fails to run (possibly an outdated version), -+# try to emulate it. -+case $program in -+ aclocal*) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified \`acinclude.m4' or \`${configure_ac}'. You might want -+ to install the \`Automake' and \`Perl' packages. Grab them from -+ any GNU archive site." -+ touch aclocal.m4 -+ ;; -+ -+ autoconf*) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified \`${configure_ac}'. You might want to install the -+ \`Autoconf' and \`GNU m4' packages. Grab them from any GNU -+ archive site." -+ touch configure -+ ;; -+ -+ autoheader*) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified \`acconfig.h' or \`${configure_ac}'. You might want -+ to install the \`Autoconf' and \`GNU m4' packages. Grab them -+ from any GNU archive site." -+ files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` -+ test -z "$files" && files="config.h" -+ touch_files= -+ for f in $files; do -+ case $f in -+ *:*) touch_files="$touch_files "`echo "$f" | -+ sed -e 's/^[^:]*://' -e 's/:.*//'`;; -+ *) touch_files="$touch_files $f.in";; -+ esac -+ done -+ touch $touch_files -+ ;; -+ -+ automake*) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. -+ You might want to install the \`Automake' and \`Perl' packages. -+ Grab them from any GNU archive site." -+ find . -type f -name Makefile.am -print | -+ sed 's/\.am$/.in/' | -+ while read f; do touch "$f"; done -+ ;; -+ -+ autom4te*) -+ echo 1>&2 "\ -+WARNING: \`$1' is needed, but is $msg. -+ You might have modified some files without having the -+ proper tools for further handling them. -+ You can get \`$1' as part of \`Autoconf' from any GNU -+ archive site." -+ -+ file=`echo "$*" | sed -n "$sed_output"` -+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` -+ if test -f "$file"; then -+ touch $file -+ else -+ test -z "$file" || exec >$file -+ echo "#! /bin/sh" -+ echo "# Created by GNU Automake missing as a replacement of" -+ echo "# $ $@" -+ echo "exit 0" -+ chmod +x $file -+ exit 1 -+ fi -+ ;; -+ -+ bison*|yacc*) -+ echo 1>&2 "\ -+WARNING: \`$1' $msg. You should only need it if -+ you modified a \`.y' file. You may need the \`Bison' package -+ in order for those modifications to take effect. You can get -+ \`Bison' from any GNU archive site." -+ rm -f y.tab.c y.tab.h -+ if test $# -ne 1; then -+ eval LASTARG=\${$#} -+ case $LASTARG in -+ *.y) -+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` -+ if test -f "$SRCFILE"; then -+ cp "$SRCFILE" y.tab.c -+ fi -+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` -+ if test -f "$SRCFILE"; then -+ cp "$SRCFILE" y.tab.h -+ fi -+ ;; -+ esac -+ fi -+ if test ! -f y.tab.h; then -+ echo >y.tab.h -+ fi -+ if test ! -f y.tab.c; then -+ echo 'main() { return 0; }' >y.tab.c -+ fi -+ ;; -+ -+ lex*|flex*) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified a \`.l' file. You may need the \`Flex' package -+ in order for those modifications to take effect. You can get -+ \`Flex' from any GNU archive site." -+ rm -f lex.yy.c -+ if test $# -ne 1; then -+ eval LASTARG=\${$#} -+ case $LASTARG in -+ *.l) -+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` -+ if test -f "$SRCFILE"; then -+ cp "$SRCFILE" lex.yy.c -+ fi -+ ;; -+ esac -+ fi -+ if test ! -f lex.yy.c; then -+ echo 'main() { return 0; }' >lex.yy.c -+ fi -+ ;; -+ -+ help2man*) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified a dependency of a manual page. You may need the -+ \`Help2man' package in order for those modifications to take -+ effect. You can get \`Help2man' from any GNU archive site." -+ -+ file=`echo "$*" | sed -n "$sed_output"` -+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` -+ if test -f "$file"; then -+ touch $file -+ else -+ test -z "$file" || exec >$file -+ echo ".ab help2man is required to generate this page" -+ exit $? -+ fi -+ ;; -+ -+ makeinfo*) -+ echo 1>&2 "\ -+WARNING: \`$1' is $msg. You should only need it if -+ you modified a \`.texi' or \`.texinfo' file, or any other file -+ indirectly affecting the aspect of the manual. The spurious -+ call might also be the consequence of using a buggy \`make' (AIX, -+ DU, IRIX). You might want to install the \`Texinfo' package or -+ the \`GNU make' package. Grab either from any GNU archive site." -+ # The file to touch is that specified with -o ... -+ file=`echo "$*" | sed -n "$sed_output"` -+ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` -+ if test -z "$file"; then -+ # ... or it is the one specified with @setfilename ... -+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` -+ file=`sed -n ' -+ /^@setfilename/{ -+ s/.* \([^ ]*\) *$/\1/ -+ p -+ q -+ }' $infile` -+ # ... or it is derived from the source name (dir/f.texi becomes f.info) -+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info -+ fi -+ # If the file does not exist, the user really needs makeinfo; -+ # let's fail without touching anything. -+ test -f $file || exit 1 -+ touch $file -+ ;; -+ -+ *) -+ echo 1>&2 "\ -+WARNING: \`$1' is needed, and is $msg. -+ You might have modified some files without having the -+ proper tools for further handling them. Check the \`README' file, -+ it often tells you about the needed prerequisites for installing -+ this package. You may also peek at any GNU archive site, in case -+ some other package would contain this missing \`$1' program." -+ exit 1 -+ ;; -+esac -+ -+exit 0 -+ -+# Local variables: -+# eval: (add-hook 'write-file-hooks 'time-stamp) -+# time-stamp-start: "scriptversion=" -+# time-stamp-format: "%:y-%02m-%02d.%02H" -+# time-stamp-time-zone: "UTC" -+# time-stamp-end: "; # UTC" -+# End: -diff --git a/libclamav/libmspack-0.4alpha/mspack/cab.h b/libclamav/libmspack-0.4alpha/mspack/cab.h -new file mode 100644 -index 000000000000..9f449d1f29bd ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/cab.h -@@ -0,0 +1,127 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_CAB_H -+#define MSPACK_CAB_H 1 -+ -+#include -+#include -+#include -+ -+/* generic CAB definitions */ -+ -+/* structure offsets */ -+#define cfhead_Signature (0x00) -+#define cfhead_CabinetSize (0x08) -+#define cfhead_FileOffset (0x10) -+#define cfhead_MinorVersion (0x18) -+#define cfhead_MajorVersion (0x19) -+#define cfhead_NumFolders (0x1A) -+#define cfhead_NumFiles (0x1C) -+#define cfhead_Flags (0x1E) -+#define cfhead_SetID (0x20) -+#define cfhead_CabinetIndex (0x22) -+#define cfhead_SIZEOF (0x24) -+#define cfheadext_HeaderReserved (0x00) -+#define cfheadext_FolderReserved (0x02) -+#define cfheadext_DataReserved (0x03) -+#define cfheadext_SIZEOF (0x04) -+#define cffold_DataOffset (0x00) -+#define cffold_NumBlocks (0x04) -+#define cffold_CompType (0x06) -+#define cffold_SIZEOF (0x08) -+#define cffile_UncompressedSize (0x00) -+#define cffile_FolderOffset (0x04) -+#define cffile_FolderIndex (0x08) -+#define cffile_Date (0x0A) -+#define cffile_Time (0x0C) -+#define cffile_Attribs (0x0E) -+#define cffile_SIZEOF (0x10) -+#define cfdata_CheckSum (0x00) -+#define cfdata_CompressedSize (0x04) -+#define cfdata_UncompressedSize (0x06) -+#define cfdata_SIZEOF (0x08) -+ -+/* flags */ -+#define cffoldCOMPTYPE_MASK (0x000f) -+#define cffoldCOMPTYPE_NONE (0x0000) -+#define cffoldCOMPTYPE_MSZIP (0x0001) -+#define cffoldCOMPTYPE_QUANTUM (0x0002) -+#define cffoldCOMPTYPE_LZX (0x0003) -+#define cfheadPREV_CABINET (0x0001) -+#define cfheadNEXT_CABINET (0x0002) -+#define cfheadRESERVE_PRESENT (0x0004) -+#define cffileCONTINUED_FROM_PREV (0xFFFD) -+#define cffileCONTINUED_TO_NEXT (0xFFFE) -+#define cffileCONTINUED_PREV_AND_NEXT (0xFFFF) -+ -+/* CAB data blocks are <= 32768 bytes in uncompressed form. Uncompressed -+ * blocks have zero growth. MSZIP guarantees that it won't grow above -+ * uncompressed size by more than 12 bytes. LZX guarantees it won't grow -+ * more than 6144 bytes. Quantum has no documentation, but the largest -+ * block seen in the wild is 337 bytes above uncompressed size. -+ */ -+#define CAB_BLOCKMAX (32768) -+#define CAB_INPUTMAX (CAB_BLOCKMAX+6144) -+ -+/* CAB compression definitions */ -+ -+struct mscab_compressor_p { -+ struct mscab_compressor base; -+ struct mspack_system *system; -+ /* todo */ -+}; -+ -+/* CAB decompression definitions */ -+ -+struct mscabd_decompress_state { -+ struct mscabd_folder_p *folder; /* current folder we're extracting from */ -+ struct mscabd_folder_data *data; /* current folder split we're in */ -+ unsigned int offset; /* uncompressed offset within folder */ -+ unsigned int block; /* which block are we decompressing? */ -+ struct mspack_system sys; /* special I/O code for decompressor */ -+ int comp_type; /* type of compression used by folder */ -+ int (*decompress)(void *, off_t); /* decompressor code */ -+ void *state; /* decompressor state */ -+ struct mscabd_cabinet_p *incab; /* cabinet where input data comes from */ -+ struct mspack_file *infh; /* input file handle */ -+ struct mspack_file *outfh; /* output file handle */ -+ unsigned char *i_ptr, *i_end; /* input data consumed, end */ -+ unsigned char input[CAB_INPUTMAX]; /* one input block of data */ -+}; -+ -+struct mscab_decompressor_p { -+ struct mscab_decompressor base; -+ struct mscabd_decompress_state *d; -+ struct mspack_system *system; -+ int param[3]; /* !!! MATCH THIS TO NUM OF PARAMS IN MSPACK.H !!! */ -+ int error, read_error; -+}; -+ -+struct mscabd_cabinet_p { -+ struct mscabd_cabinet base; -+ off_t blocks_off; /* offset to data blocks */ -+ int block_resv; /* reserved space in data blocks */ -+}; -+ -+/* there is one of these for every cabinet a folder spans */ -+struct mscabd_folder_data { -+ struct mscabd_folder_data *next; -+ struct mscabd_cabinet_p *cab; /* cabinet file of this folder span */ -+ off_t offset; /* cabinet offset of first datablock */ -+}; -+ -+struct mscabd_folder_p { -+ struct mscabd_folder base; -+ struct mscabd_folder_data data; /* where are the data blocks? */ -+ struct mscabd_file *merge_prev; /* first file needing backwards merge */ -+ struct mscabd_file *merge_next; /* first file needing forwards merge */ -+}; -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/cabc.c b/libclamav/libmspack-0.4alpha/mspack/cabc.c -new file mode 100644 -index 000000000000..242e0347c3f9 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/cabc.c -@@ -0,0 +1,24 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* CAB compression implementation */ -+ -+#include -+#include -+ -+struct mscab_compressor * -+ mspack_create_cab_compressor(struct mspack_system *sys) -+{ -+ /* todo */ -+ return NULL; -+} -+ -+void mspack_destroy_cab_compressor(struct mscab_compressor *self) { -+ /* todo */ -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/cabd.c b/libclamav/libmspack-0.4alpha/mspack/cabd.c -new file mode 100644 -index 000000000000..cce5c60e869a ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/cabd.c -@@ -0,0 +1,1444 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2011 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* Cabinet (.CAB) files are a form of file archive. Each cabinet contains -+ * "folders", which are compressed spans of data. Each cabinet has -+ * "files", whose metadata is in the cabinet header, but whose actual data -+ * is stored compressed in one of the "folders". Cabinets can span more -+ * than one physical file on disk, in which case they are a "cabinet set", -+ * and usually the last folder of each cabinet extends into the next -+ * cabinet. -+ * -+ * For a complete description of the format, see the MSDN site: -+ * http://msdn.microsoft.com/en-us/library/bb267310.aspx -+ */ -+ -+/* CAB decompression implementation */ -+ -+#include -+#include -+#include -+ -+/* Notes on compliance with cabinet specification: -+ * -+ * One of the main changes between cabextract 0.6 and libmspack's cab -+ * decompressor is the move from block-oriented decompression to -+ * stream-oriented decompression. -+ * -+ * cabextract would read one data block from disk, decompress it with the -+ * appropriate method, then write the decompressed data. The CAB -+ * specification is specifically designed to work like this, as it ensures -+ * compression matches do not span the maximum decompressed block size -+ * limit of 32kb. -+ * -+ * However, the compression algorithms used are stream oriented, with -+ * specific hacks added to them to enforce the "individual 32kb blocks" -+ * rule in CABs. In other file formats, they do not have this limitation. -+ * -+ * In order to make more generalised decompressors, libmspack's CAB -+ * decompressor has moved from being block-oriented to more stream -+ * oriented. This also makes decompression slightly faster. -+ * -+ * However, this leads to incompliance with the CAB specification. The -+ * CAB controller can no longer ensure each block of input given to the -+ * decompressors is matched with their output. The "decompressed size" of -+ * each individual block is thrown away. -+ * -+ * Each CAB block is supposed to be seen as individually compressed. This -+ * means each consecutive data block can have completely different -+ * "uncompressed" sizes, ranging from 1 to 32768 bytes. However, in -+ * reality, all data blocks in a folder decompress to exactly 32768 bytes, -+ * excepting the final block. -+ * -+ * Given this situation, the decompression algorithms are designed to -+ * realign their input bitstreams on 32768 output-byte boundaries, and -+ * various other special cases have been made. libmspack will not -+ * correctly decompress LZX or Quantum compressed folders where the blocks -+ * do not follow this "32768 bytes until last block" pattern. It could be -+ * implemented if needed, but hopefully this is not necessary -- it has -+ * not been seen in over 3Gb of CAB archives. -+ */ -+ -+/* prototypes */ -+static struct mscabd_cabinet * cabd_open( -+ struct mscab_decompressor *base, const char *filename); -+static void cabd_close( -+ struct mscab_decompressor *base, struct mscabd_cabinet *origcab); -+static int cabd_read_headers( -+ struct mspack_system *sys, struct mspack_file *fh, -+ struct mscabd_cabinet_p *cab, off_t offset, int quiet); -+static char *cabd_read_string( -+ struct mspack_system *sys, struct mspack_file *fh, -+ struct mscabd_cabinet_p *cab, int *error); -+ -+static struct mscabd_cabinet *cabd_search( -+ struct mscab_decompressor *base, const char *filename); -+static int cabd_find( -+ struct mscab_decompressor_p *self, unsigned char *buf, -+ struct mspack_file *fh, const char *filename, off_t flen, -+ off_t *firstlen, struct mscabd_cabinet_p **firstcab); -+ -+static int cabd_prepend( -+ struct mscab_decompressor *base, struct mscabd_cabinet *cab, -+ struct mscabd_cabinet *prevcab); -+static int cabd_append( -+ struct mscab_decompressor *base, struct mscabd_cabinet *cab, -+ struct mscabd_cabinet *nextcab); -+static int cabd_merge( -+ struct mscab_decompressor *base, struct mscabd_cabinet *lcab, -+ struct mscabd_cabinet *rcab); -+static int cabd_can_merge_folders( -+ struct mspack_system *sys, struct mscabd_folder_p *lfol, -+ struct mscabd_folder_p *rfol); -+ -+static int cabd_extract( -+ struct mscab_decompressor *base, struct mscabd_file *file, -+ const char *filename); -+static int cabd_init_decomp( -+ struct mscab_decompressor_p *self, unsigned int ct); -+static void cabd_free_decomp( -+ struct mscab_decompressor_p *self); -+static int cabd_sys_read( -+ struct mspack_file *file, void *buffer, int bytes); -+static int cabd_sys_write( -+ struct mspack_file *file, void *buffer, int bytes); -+static int cabd_sys_read_block( -+ struct mspack_system *sys, struct mscabd_decompress_state *d, int *out, -+ int ignore_cksum); -+static unsigned int cabd_checksum( -+ unsigned char *data, unsigned int bytes, unsigned int cksum); -+static struct noned_state *noned_init( -+ struct mspack_system *sys, struct mspack_file *in, struct mspack_file *out, -+ int bufsize); -+ -+static int noned_decompress( -+ struct noned_state *s, off_t bytes); -+static void noned_free( -+ struct noned_state *state); -+ -+static int cabd_param( -+ struct mscab_decompressor *base, int param, int value); -+ -+static int cabd_error( -+ struct mscab_decompressor *base); -+ -+ -+/*************************************** -+ * MSPACK_CREATE_CAB_DECOMPRESSOR -+ *************************************** -+ * constructor -+ */ -+struct mscab_decompressor * -+ mspack_create_cab_decompressor(struct mspack_system *sys) -+{ -+ struct mscab_decompressor_p *self = NULL; -+ -+ if (!sys) sys = mspack_default_system; -+ if (!mspack_valid_system(sys)) return NULL; -+ -+ if ((self = (struct mscab_decompressor_p *) sys->alloc(sys, sizeof(struct mscab_decompressor_p)))) { -+ self->base.open = &cabd_open; -+ self->base.close = &cabd_close; -+ self->base.search = &cabd_search; -+ self->base.extract = &cabd_extract; -+ self->base.prepend = &cabd_prepend; -+ self->base.append = &cabd_append; -+ self->base.set_param = &cabd_param; -+ self->base.last_error = &cabd_error; -+ self->system = sys; -+ self->d = NULL; -+ self->error = MSPACK_ERR_OK; -+ -+ self->param[MSCABD_PARAM_SEARCHBUF] = 32768; -+ self->param[MSCABD_PARAM_FIXMSZIP] = 0; -+ self->param[MSCABD_PARAM_DECOMPBUF] = 4096; -+ } -+ return (struct mscab_decompressor *) self; -+} -+ -+/*************************************** -+ * MSPACK_DESTROY_CAB_DECOMPRESSOR -+ *************************************** -+ * destructor -+ */ -+void mspack_destroy_cab_decompressor(struct mscab_decompressor *base) { -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) base; -+ if (self) { -+ struct mspack_system *sys = self->system; -+ cabd_free_decomp(self); -+ if (self->d) { -+ if (self->d->infh) sys->close(self->d->infh); -+ sys->free(self->d); -+ } -+ sys->free(self); -+ } -+} -+ -+ -+/*************************************** -+ * CABD_OPEN -+ *************************************** -+ * opens a file and tries to read it as a cabinet file -+ */ -+static struct mscabd_cabinet *cabd_open(struct mscab_decompressor *base, -+ const char *filename) -+{ -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) base; -+ struct mscabd_cabinet_p *cab = NULL; -+ struct mspack_system *sys; -+ struct mspack_file *fh; -+ int error; -+ -+ if (!base) return NULL; -+ sys = self->system; -+ -+ if ((fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ))) { -+ if ((cab = (struct mscabd_cabinet_p *) sys->alloc(sys, sizeof(struct mscabd_cabinet_p)))) { -+ cab->base.filename = filename; -+ error = cabd_read_headers(sys, fh, cab, (off_t) 0, 0); -+ if (error) { -+ cabd_close(base, (struct mscabd_cabinet *) cab); -+ cab = NULL; -+ } -+ self->error = error; -+ } -+ else { -+ self->error = MSPACK_ERR_NOMEMORY; -+ } -+ sys->close(fh); -+ } -+ else { -+ self->error = MSPACK_ERR_OPEN; -+ } -+ return (struct mscabd_cabinet *) cab; -+} -+ -+/*************************************** -+ * CABD_CLOSE -+ *************************************** -+ * frees all memory associated with a given mscabd_cabinet. -+ */ -+static void cabd_close(struct mscab_decompressor *base, -+ struct mscabd_cabinet *origcab) -+{ -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) base; -+ struct mscabd_folder_data *dat, *ndat; -+ struct mscabd_cabinet *cab, *ncab; -+ struct mscabd_folder *fol, *nfol; -+ struct mscabd_file *fi, *nfi; -+ struct mspack_system *sys; -+ -+ if (!base) return; -+ sys = self->system; -+ -+ self->error = MSPACK_ERR_OK; -+ -+ while (origcab) { -+ /* free files */ -+ for (fi = origcab->files; fi; fi = nfi) { -+ nfi = fi->next; -+ sys->free(fi->filename); -+ sys->free(fi); -+ } -+ -+ /* free folders */ -+ for (fol = origcab->folders; fol; fol = nfol) { -+ nfol = fol->next; -+ -+ /* free folder decompression state if it has been decompressed */ -+ if (self->d && (self->d->folder == (struct mscabd_folder_p *) fol)) { -+ if (self->d->infh) sys->close(self->d->infh); -+ cabd_free_decomp(self); -+ sys->free(self->d); -+ self->d = NULL; -+ } -+ -+ /* free folder data segments */ -+ for (dat = ((struct mscabd_folder_p *)fol)->data.next; dat; dat = ndat) { -+ ndat = dat->next; -+ sys->free(dat); -+ } -+ sys->free(fol); -+ } -+ -+ /* free predecessor cabinets (and the original cabinet's strings) */ -+ for (cab = origcab; cab; cab = ncab) { -+ ncab = cab->prevcab; -+ sys->free(cab->prevname); -+ sys->free(cab->nextname); -+ sys->free(cab->previnfo); -+ sys->free(cab->nextinfo); -+ if (cab != origcab) sys->free(cab); -+ } -+ -+ /* free successor cabinets */ -+ for (cab = origcab->nextcab; cab; cab = ncab) { -+ ncab = cab->nextcab; -+ sys->free(cab->prevname); -+ sys->free(cab->nextname); -+ sys->free(cab->previnfo); -+ sys->free(cab->nextinfo); -+ sys->free(cab); -+ } -+ -+ /* free actual cabinet structure */ -+ cab = origcab->next; -+ sys->free(origcab); -+ -+ /* repeat full procedure again with the cab->next pointer (if set) */ -+ origcab = cab; -+ } -+} -+ -+/*************************************** -+ * CABD_READ_HEADERS -+ *************************************** -+ * reads the cabinet file header, folder list and file list. -+ * fills out a pre-existing mscabd_cabinet structure, allocates memory -+ * for folders and files as necessary -+ */ -+static int cabd_read_headers(struct mspack_system *sys, -+ struct mspack_file *fh, -+ struct mscabd_cabinet_p *cab, -+ off_t offset, int quiet) -+{ -+ int num_folders, num_files, folder_resv, i, x; -+ struct mscabd_folder_p *fol, *linkfol = NULL; -+ struct mscabd_file *file, *linkfile = NULL; -+ unsigned char buf[64]; -+ -+ /* initialise pointers */ -+ cab->base.next = NULL; -+ cab->base.files = NULL; -+ cab->base.folders = NULL; -+ cab->base.prevcab = cab->base.nextcab = NULL; -+ cab->base.prevname = cab->base.nextname = NULL; -+ cab->base.previnfo = cab->base.nextinfo = NULL; -+ -+ cab->base.base_offset = offset; -+ -+ /* seek to CFHEADER */ -+ if (sys->seek(fh, offset, MSPACK_SYS_SEEK_START)) { -+ return MSPACK_ERR_SEEK; -+ } -+ -+ /* read in the CFHEADER */ -+ if (sys->read(fh, &buf[0], cfhead_SIZEOF) != cfhead_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ -+ /* check for "MSCF" signature */ -+ if (EndGetI32(&buf[cfhead_Signature]) != 0x4643534D) { -+ return MSPACK_ERR_SIGNATURE; -+ } -+ -+ /* some basic header fields */ -+ cab->base.length = EndGetI32(&buf[cfhead_CabinetSize]); -+ cab->base.set_id = EndGetI16(&buf[cfhead_SetID]); -+ cab->base.set_index = EndGetI16(&buf[cfhead_CabinetIndex]); -+ -+ /* get the number of folders */ -+ num_folders = EndGetI16(&buf[cfhead_NumFolders]); -+ if (num_folders == 0) { -+ if (!quiet) sys->message(fh, "no folders in cabinet."); -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* get the number of files */ -+ num_files = EndGetI16(&buf[cfhead_NumFiles]); -+ if (num_files == 0) { -+ if (!quiet) sys->message(fh, "no files in cabinet."); -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* check cabinet version */ -+ if ((buf[cfhead_MajorVersion] != 1) && (buf[cfhead_MinorVersion] != 3)) { -+ if (!quiet) sys->message(fh, "WARNING; cabinet version is not 1.3"); -+ } -+ -+ /* read the reserved-sizes part of header, if present */ -+ cab->base.flags = EndGetI16(&buf[cfhead_Flags]); -+ if (cab->base.flags & cfheadRESERVE_PRESENT) { -+ if (sys->read(fh, &buf[0], cfheadext_SIZEOF) != cfheadext_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ cab->base.header_resv = EndGetI16(&buf[cfheadext_HeaderReserved]); -+ folder_resv = buf[cfheadext_FolderReserved]; -+ cab->block_resv = buf[cfheadext_DataReserved]; -+ -+ if (cab->base.header_resv > 60000) { -+ if (!quiet) sys->message(fh, "WARNING; reserved header > 60000."); -+ } -+ -+ /* skip the reserved header */ -+ if (cab->base.header_resv) { -+ if (sys->seek(fh, (off_t) cab->base.header_resv, MSPACK_SYS_SEEK_CUR)) { -+ return MSPACK_ERR_SEEK; -+ } -+ } -+ } -+ else { -+ cab->base.header_resv = 0; -+ folder_resv = 0; -+ cab->block_resv = 0; -+ } -+ -+ /* read name and info of preceeding cabinet in set, if present */ -+ if (cab->base.flags & cfheadPREV_CABINET) { -+ cab->base.prevname = cabd_read_string(sys, fh, cab, &x); if (x) return x; -+ cab->base.previnfo = cabd_read_string(sys, fh, cab, &x); if (x) return x; -+ } -+ -+ /* read name and info of next cabinet in set, if present */ -+ if (cab->base.flags & cfheadNEXT_CABINET) { -+ cab->base.nextname = cabd_read_string(sys, fh, cab, &x); if (x) return x; -+ cab->base.nextinfo = cabd_read_string(sys, fh, cab, &x); if (x) return x; -+ } -+ -+ /* read folders */ -+ for (i = 0; i < num_folders; i++) { -+ if (sys->read(fh, &buf[0], cffold_SIZEOF) != cffold_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ if (folder_resv) { -+ if (sys->seek(fh, (off_t) folder_resv, MSPACK_SYS_SEEK_CUR)) { -+ return MSPACK_ERR_SEEK; -+ } -+ } -+ -+ if (!(fol = (struct mscabd_folder_p *) sys->alloc(sys, sizeof(struct mscabd_folder_p)))) { -+ return MSPACK_ERR_NOMEMORY; -+ } -+ fol->base.next = NULL; -+ fol->base.comp_type = EndGetI16(&buf[cffold_CompType]); -+ fol->base.num_blocks = EndGetI16(&buf[cffold_NumBlocks]); -+ fol->data.next = NULL; -+ fol->data.cab = (struct mscabd_cabinet_p *) cab; -+ fol->data.offset = offset + (off_t) -+ ( (unsigned int) EndGetI32(&buf[cffold_DataOffset]) ); -+ fol->merge_prev = NULL; -+ fol->merge_next = NULL; -+ -+ /* link folder into list of folders */ -+ if (!linkfol) cab->base.folders = (struct mscabd_folder *) fol; -+ else linkfol->base.next = (struct mscabd_folder *) fol; -+ linkfol = fol; -+ } -+ -+ /* read files */ -+ for (i = 0; i < num_files; i++) { -+ if (sys->read(fh, &buf[0], cffile_SIZEOF) != cffile_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ -+ if (!(file = (struct mscabd_file *) sys->alloc(sys, sizeof(struct mscabd_file)))) { -+ return MSPACK_ERR_NOMEMORY; -+ } -+ -+ file->next = NULL; -+ file->length = EndGetI32(&buf[cffile_UncompressedSize]); -+ file->attribs = EndGetI16(&buf[cffile_Attribs]); -+ file->offset = EndGetI32(&buf[cffile_FolderOffset]); -+ -+ /* set folder pointer */ -+ x = EndGetI16(&buf[cffile_FolderIndex]); -+ if (x < cffileCONTINUED_FROM_PREV) { -+ /* normal folder index; count up to the correct folder. the folder -+ * pointer will be NULL if folder index is invalid */ -+ struct mscabd_folder *ifol = cab->base.folders; -+ while (x--) if (ifol) ifol = ifol->next; -+ file->folder = ifol; -+ -+ if (!ifol) { -+ sys->free(file); -+ D(("invalid folder index")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ } -+ else { -+ /* either CONTINUED_TO_NEXT, CONTINUED_FROM_PREV or -+ * CONTINUED_PREV_AND_NEXT */ -+ if ((x == cffileCONTINUED_TO_NEXT) || -+ (x == cffileCONTINUED_PREV_AND_NEXT)) -+ { -+ /* get last folder */ -+ struct mscabd_folder *ifol = cab->base.folders; -+ while (ifol->next) ifol = ifol->next; -+ file->folder = ifol; -+ -+ /* set "merge next" pointer */ -+ fol = (struct mscabd_folder_p *) ifol; -+ if (!fol->merge_next) fol->merge_next = file; -+ } -+ -+ if ((x == cffileCONTINUED_FROM_PREV) || -+ (x == cffileCONTINUED_PREV_AND_NEXT)) -+ { -+ /* get first folder */ -+ file->folder = cab->base.folders; -+ -+ /* set "merge prev" pointer */ -+ fol = (struct mscabd_folder_p *) file->folder; -+ if (!fol->merge_prev) fol->merge_prev = file; -+ } -+ } -+ -+ /* get time */ -+ x = EndGetI16(&buf[cffile_Time]); -+ file->time_h = x >> 11; -+ file->time_m = (x >> 5) & 0x3F; -+ file->time_s = (x << 1) & 0x3E; -+ -+ /* get date */ -+ x = EndGetI16(&buf[cffile_Date]); -+ file->date_d = x & 0x1F; -+ file->date_m = (x >> 5) & 0xF; -+ file->date_y = (x >> 9) + 1980; -+ -+ /* get filename */ -+ file->filename = cabd_read_string(sys, fh, cab, &x); -+ if (x) { -+ sys->free(file); -+ return x; -+ } -+ -+ /* link file entry into file list */ -+ if (!linkfile) cab->base.files = file; -+ else linkfile->next = file; -+ linkfile = file; -+ } -+ -+ return MSPACK_ERR_OK; -+} -+ -+static char *cabd_read_string(struct mspack_system *sys, -+ struct mspack_file *fh, -+ struct mscabd_cabinet_p *cab, int *error) -+{ -+ off_t base = sys->tell(fh); -+ char buf[256], *str; -+ unsigned int len, i, ok; -+ -+ /* read up to 256 bytes */ -+ len = sys->read(fh, &buf[0], 256); -+ -+ /* search for a null terminator in the buffer */ -+ for (i = 0, ok = 0; i < len; i++) if (!buf[i]) { ok = 1; break; } -+ if (!ok) { -+ *error = MSPACK_ERR_DATAFORMAT; -+ return NULL; -+ } -+ -+ len = i + 1; -+ -+ /* set the data stream to just after the string and return */ -+ if (sys->seek(fh, base + (off_t)len, MSPACK_SYS_SEEK_START)) { -+ *error = MSPACK_ERR_SEEK; -+ return NULL; -+ } -+ -+ if (!(str = (char *) sys->alloc(sys, len))) { -+ *error = MSPACK_ERR_NOMEMORY; -+ return NULL; -+ } -+ -+ sys->copy(&buf[0], str, len); -+ *error = MSPACK_ERR_OK; -+ return str; -+} -+ -+/*************************************** -+ * CABD_SEARCH, CABD_FIND -+ *************************************** -+ * cabd_search opens a file, finds its extent, allocates a search buffer, -+ * then reads through the whole file looking for possible cabinet headers. -+ * if it finds any, it tries to read them as real cabinets. returns a linked -+ * list of results -+ * -+ * cabd_find is the inner loop of cabd_search, to make it easier to -+ * break out of the loop and be sure that all resources are freed -+ */ -+static struct mscabd_cabinet *cabd_search(struct mscab_decompressor *base, -+ const char *filename) -+{ -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) base; -+ struct mscabd_cabinet_p *cab = NULL; -+ struct mspack_system *sys; -+ unsigned char *search_buf; -+ struct mspack_file *fh; -+ off_t filelen, firstlen = 0; -+ -+ if (!base) return NULL; -+ sys = self->system; -+ -+ /* allocate a search buffer */ -+ search_buf = (unsigned char *) sys->alloc(sys, (size_t) self->param[MSCABD_PARAM_SEARCHBUF]); -+ if (!search_buf) { -+ self->error = MSPACK_ERR_NOMEMORY; -+ return NULL; -+ } -+ -+ /* open file and get its full file length */ -+ if ((fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ))) { -+ if (!(self->error = mspack_sys_filelen(sys, fh, &filelen))) { -+ self->error = cabd_find(self, search_buf, fh, filename, -+ filelen, &firstlen, &cab); -+ } -+ -+ /* truncated / extraneous data warning: */ -+ if (firstlen && (firstlen != filelen) && -+ (!cab || (cab->base.base_offset == 0))) -+ { -+ if (firstlen < filelen) { -+ sys->message(fh, "WARNING; possible %" LD -+ " extra bytes at end of file.", -+ filelen - firstlen); -+ } -+ else { -+ sys->message(fh, "WARNING; file possibly truncated by %" LD " bytes.", -+ firstlen - filelen); -+ } -+ } -+ -+ sys->close(fh); -+ } -+ else { -+ self->error = MSPACK_ERR_OPEN; -+ } -+ -+ /* free the search buffer */ -+ sys->free(search_buf); -+ -+ return (struct mscabd_cabinet *) cab; -+} -+ -+static int cabd_find(struct mscab_decompressor_p *self, unsigned char *buf, -+ struct mspack_file *fh, const char *filename, off_t flen, -+ off_t *firstlen, struct mscabd_cabinet_p **firstcab) -+{ -+ struct mscabd_cabinet_p *cab, *link = NULL; -+ off_t caboff, offset, length; -+ struct mspack_system *sys = self->system; -+ unsigned char *p, *pend, state = 0; -+ unsigned int cablen_u32 = 0, foffset_u32 = 0; -+ int false_cabs = 0; -+ -+#ifndef LARGEFILE_SUPPORT -+ /* detect 32-bit off_t overflow */ -+ if (flen < 0) { -+ sys->message(fh, largefile_msg); -+ return MSPACK_ERR_OK; -+ } -+#endif -+ -+ /* search through the full file length */ -+ for (offset = 0; offset < flen; offset += length) { -+ /* search length is either the full length of the search buffer, or the -+ * amount of data remaining to the end of the file, whichever is less. */ -+ length = flen - offset; -+ if (length > self->param[MSCABD_PARAM_SEARCHBUF]) { -+ length = self->param[MSCABD_PARAM_SEARCHBUF]; -+ } -+ -+ /* fill the search buffer with data from disk */ -+ if (sys->read(fh, &buf[0], (int) length) != (int) length) { -+ return MSPACK_ERR_READ; -+ } -+ -+ /* FAQ avoidance strategy */ -+ if ((offset == 0) && (EndGetI32(&buf[0]) == 0x28635349)) { -+ sys->message(fh, "WARNING; found InstallShield header. " -+ "This is probably an InstallShield file. " -+ "Use UNSHIELD from www.synce.org to unpack it."); -+ } -+ -+ /* read through the entire buffer. */ -+ for (p = &buf[0], pend = &buf[length]; p < pend; ) { -+ switch (state) { -+ /* starting state */ -+ case 0: -+ /* we spend most of our time in this while loop, looking for -+ * a leading 'M' of the 'MSCF' signature */ -+ while (p < pend && *p != 0x4D) p++; -+ /* if we found tht 'M', advance state */ -+ if (p++ < pend) state = 1; -+ break; -+ -+ /* verify that the next 3 bytes are 'S', 'C' and 'F' */ -+ case 1: state = (*p++ == 0x53) ? 2 : 0; break; -+ case 2: state = (*p++ == 0x43) ? 3 : 0; break; -+ case 3: state = (*p++ == 0x46) ? 4 : 0; break; -+ -+ /* we don't care about bytes 4-7 (see default: for action) */ -+ -+ /* bytes 8-11 are the overall length of the cabinet */ -+ case 8: cablen_u32 = *p++; state++; break; -+ case 9: cablen_u32 |= *p++ << 8; state++; break; -+ case 10: cablen_u32 |= *p++ << 16; state++; break; -+ case 11: cablen_u32 |= *p++ << 24; state++; break; -+ -+ /* we don't care about bytes 12-15 (see default: for action) */ -+ -+ /* bytes 16-19 are the offset within the cabinet of the filedata */ -+ case 16: foffset_u32 = *p++; state++; break; -+ case 17: foffset_u32 |= *p++ << 8; state++; break; -+ case 18: foffset_u32 |= *p++ << 16; state++; break; -+ case 19: foffset_u32 |= *p++ << 24; -+ /* now we have recieved 20 bytes of potential cab header. work out -+ * the offset in the file of this potential cabinet */ -+ caboff = offset + (p - &buf[0]) - 20; -+ -+ /* should reading cabinet fail, restart search just after 'MSCF' */ -+ offset = caboff + 4; -+ -+ /* capture the "length of cabinet" field if there is a cabinet at -+ * offset 0 in the file, regardless of whether the cabinet can be -+ * read correctly or not */ -+ if (caboff == 0) *firstlen = (off_t) cablen_u32; -+ -+ /* check that the files offset is less than the alleged length of -+ * the cabinet, and that the offset + the alleged length are -+ * 'roughly' within the end of overall file length */ -+ if ((foffset_u32 < cablen_u32) && -+ ((caboff + (off_t) foffset_u32) < (flen + 32)) && -+ ((caboff + (off_t) cablen_u32) < (flen + 32)) ) -+ { -+ /* likely cabinet found -- try reading it */ -+ if (!(cab = (struct mscabd_cabinet_p *) sys->alloc(sys, sizeof(struct mscabd_cabinet_p)))) { -+ return MSPACK_ERR_NOMEMORY; -+ } -+ cab->base.filename = filename; -+ if (cabd_read_headers(sys, fh, cab, caboff, 1)) { -+ /* destroy the failed cabinet */ -+ cabd_close((struct mscab_decompressor *) self, -+ (struct mscabd_cabinet *) cab); -+ false_cabs++; -+ } -+ else { -+ /* cabinet read correctly! */ -+ -+ /* link the cab into the list */ -+ if (!link) *firstcab = cab; -+ else link->base.next = (struct mscabd_cabinet *) cab; -+ link = cab; -+ -+ /* cause the search to restart after this cab's data. */ -+ offset = caboff + (off_t) cablen_u32; -+ -+#ifndef LARGEFILE_SUPPORT -+ /* detect 32-bit off_t overflow */ -+ if (offset < caboff) { -+ sys->message(fh, largefile_msg); -+ return MSPACK_ERR_OK; -+ } -+#endif -+ } -+ } -+ -+ /* restart search */ -+ if (offset >= flen) return MSPACK_ERR_OK; -+ if (sys->seek(fh, offset, MSPACK_SYS_SEEK_START)) { -+ return MSPACK_ERR_SEEK; -+ } -+ length = 0; -+ p = pend; -+ state = 0; -+ break; -+ -+ /* for bytes 4-7 and 12-15, just advance state/pointer */ -+ default: -+ p++, state++; -+ } /* switch(state) */ -+ } /* for (... p < pend ...) */ -+ } /* for (... offset < length ...) */ -+ -+ if (false_cabs) { -+ D(("%d false cabinets found", false_cabs)) -+ } -+ -+ return MSPACK_ERR_OK; -+} -+ -+/*************************************** -+ * CABD_MERGE, CABD_PREPEND, CABD_APPEND -+ *************************************** -+ * joins cabinets together, also merges split folders between these two -+ * cabinets only. This includes freeing the duplicate folder and file(s) -+ * and allocating a further mscabd_folder_data structure to append to the -+ * merged folder's data parts list. -+ */ -+static int cabd_prepend(struct mscab_decompressor *base, -+ struct mscabd_cabinet *cab, -+ struct mscabd_cabinet *prevcab) -+{ -+ return cabd_merge(base, prevcab, cab); -+} -+ -+static int cabd_append(struct mscab_decompressor *base, -+ struct mscabd_cabinet *cab, -+ struct mscabd_cabinet *nextcab) -+{ -+ return cabd_merge(base, cab, nextcab); -+} -+ -+static int cabd_merge(struct mscab_decompressor *base, -+ struct mscabd_cabinet *lcab, -+ struct mscabd_cabinet *rcab) -+{ -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) base; -+ struct mscabd_folder_data *data, *ndata; -+ struct mscabd_folder_p *lfol, *rfol; -+ struct mscabd_file *fi, *rfi, *lfi; -+ struct mscabd_cabinet *cab; -+ struct mspack_system *sys; -+ -+ if (!self) return MSPACK_ERR_ARGS; -+ sys = self->system; -+ -+ /* basic args check */ -+ if (!lcab || !rcab || (lcab == rcab)) { -+ D(("lcab NULL, rcab NULL or lcab = rcab")) -+ return self->error = MSPACK_ERR_ARGS; -+ } -+ -+ /* check there's not already a cabinet attached */ -+ if (lcab->nextcab || rcab->prevcab) { -+ D(("cabs already joined")) -+ return self->error = MSPACK_ERR_ARGS; -+ } -+ -+ /* do not create circular cabinet chains */ -+ for (cab = lcab->prevcab; cab; cab = cab->prevcab) { -+ if (cab == rcab) {D(("circular!")) return self->error = MSPACK_ERR_ARGS;} -+ } -+ for (cab = rcab->nextcab; cab; cab = cab->nextcab) { -+ if (cab == lcab) {D(("circular!")) return self->error = MSPACK_ERR_ARGS;} -+ } -+ -+ /* warn about odd set IDs or indices */ -+ if (lcab->set_id != rcab->set_id) { -+ sys->message(NULL, "WARNING; merged cabinets with differing Set IDs."); -+ } -+ -+ if (lcab->set_index > rcab->set_index) { -+ sys->message(NULL, "WARNING; merged cabinets with odd order."); -+ } -+ -+ /* merging the last folder in lcab with the first folder in rcab */ -+ lfol = (struct mscabd_folder_p *) lcab->folders; -+ rfol = (struct mscabd_folder_p *) rcab->folders; -+ while (lfol->base.next) lfol = (struct mscabd_folder_p *) lfol->base.next; -+ -+ /* do we need to merge folders? */ -+ if (!lfol->merge_next && !rfol->merge_prev) { -+ /* no, at least one of the folders is not for merging */ -+ -+ /* attach cabs */ -+ lcab->nextcab = rcab; -+ rcab->prevcab = lcab; -+ -+ /* attach folders */ -+ lfol->base.next = (struct mscabd_folder *) rfol; -+ -+ /* attach files */ -+ fi = lcab->files; -+ while (fi->next) fi = fi->next; -+ fi->next = rcab->files; -+ } -+ else { -+ /* folder merge required - do the files match? */ -+ if (! cabd_can_merge_folders(sys, lfol, rfol)) { -+ return self->error = MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* allocate a new folder data structure */ -+ if (!(data = (struct mscabd_folder_data *) sys->alloc(sys, sizeof(struct mscabd_folder_data)))) { -+ return self->error = MSPACK_ERR_NOMEMORY; -+ } -+ -+ /* attach cabs */ -+ lcab->nextcab = rcab; -+ rcab->prevcab = lcab; -+ -+ /* append rfol's data to lfol */ -+ ndata = &lfol->data; -+ while (ndata->next) ndata = ndata->next; -+ ndata->next = data; -+ *data = rfol->data; -+ rfol->data.next = NULL; -+ -+ /* lfol becomes rfol. -+ * NOTE: special case, don't merge if rfol is merge prev and next, -+ * rfol->merge_next is going to be deleted, so keep lfol's version -+ * instead */ -+ lfol->base.num_blocks += rfol->base.num_blocks - 1; -+ if ((rfol->merge_next == NULL) || -+ (rfol->merge_next->folder != (struct mscabd_folder *) rfol)) -+ { -+ lfol->merge_next = rfol->merge_next; -+ } -+ -+ /* attach the rfol's folder (except the merge folder) */ -+ while (lfol->base.next) lfol = (struct mscabd_folder_p *) lfol->base.next; -+ lfol->base.next = rfol->base.next; -+ -+ /* free disused merge folder */ -+ sys->free(rfol); -+ -+ /* attach rfol's files */ -+ fi = lcab->files; -+ while (fi->next) fi = fi->next; -+ fi->next = rcab->files; -+ -+ /* delete all files from rfol's merge folder */ -+ lfi = NULL; -+ for (fi = lcab->files; fi ; fi = rfi) { -+ rfi = fi->next; -+ /* if file's folder matches the merge folder, unlink and free it */ -+ if (fi->folder == (struct mscabd_folder *) rfol) { -+ if (lfi) lfi->next = rfi; else lcab->files = rfi; -+ sys->free(fi->filename); -+ sys->free(fi); -+ } -+ else lfi = fi; -+ } -+ } -+ -+ /* all done! fix files and folders pointers in all cabs so they all -+ * point to the same list */ -+ for (cab = lcab->prevcab; cab; cab = cab->prevcab) { -+ cab->files = lcab->files; -+ cab->folders = lcab->folders; -+ } -+ -+ for (cab = lcab->nextcab; cab; cab = cab->nextcab) { -+ cab->files = lcab->files; -+ cab->folders = lcab->folders; -+ } -+ -+ return self->error = MSPACK_ERR_OK; -+} -+ -+/* decides if two folders are OK to merge */ -+static int cabd_can_merge_folders(struct mspack_system *sys, -+ struct mscabd_folder_p *lfol, -+ struct mscabd_folder_p *rfol) -+{ -+ struct mscabd_file *lfi, *rfi, *l, *r; -+ int matching = 1; -+ -+ /* check that both folders use the same compression method/settings */ -+ if (lfol->base.comp_type != rfol->base.comp_type) { -+ D(("folder merge: compression type mismatch")) -+ return 0; -+ } -+ -+ if (!(lfi = lfol->merge_next) || !(rfi = rfol->merge_prev)) { -+ D(("folder merge: one cabinet has no files to merge")) -+ return 0; -+ } -+ -+ /* for all files in lfol (which is the last folder in whichever cab and -+ * only has files to merge), compare them to the files from rfol. They -+ * should be identical in number and order. to verify this, check the -+ * offset and length of each file. */ -+ for (l=lfi, r=rfi; l; l=l->next, r=r->next) { -+ if (!r || (l->offset != r->offset) || (l->length != r->length)) { -+ matching = 0; -+ break; -+ } -+ } -+ -+ if (matching) return 1; -+ -+ /* if rfol does not begin with an identical copy of the files in lfol, make -+ * make a judgement call; if at least ONE file from lfol is in rfol, allow -+ * the merge with a warning about missing files. */ -+ matching = 0; -+ for (l = lfi; l; l = l->next) { -+ for (r = rfi; r; r = r->next) { -+ if (l->offset == r->offset && l->length == r->length) break; -+ } -+ if (r) matching = 1; else sys->message(NULL, -+ "WARNING; merged file %s not listed in both cabinets", l->filename); -+ } -+ return matching; -+} -+ -+ -+/*************************************** -+ * CABD_EXTRACT -+ *************************************** -+ * extracts a file from a cabinet -+ */ -+static int cabd_extract(struct mscab_decompressor *base, -+ struct mscabd_file *file, const char *filename) -+{ -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) base; -+ struct mscabd_folder_p *fol; -+ struct mspack_system *sys; -+ struct mspack_file *fh; -+ -+ if (!self) return MSPACK_ERR_ARGS; -+ if (!file) return self->error = MSPACK_ERR_ARGS; -+ -+ sys = self->system; -+ fol = (struct mscabd_folder_p *) file->folder; -+ -+ /* check if file can be extracted */ -+ if ((!fol) || (fol->merge_prev) || -+ (((file->offset + file->length) / CAB_BLOCKMAX) > fol->base.num_blocks)) -+ { -+ sys->message(NULL, "ERROR; file \"%s\" cannot be extracted, " -+ "cabinet set is incomplete.", file->filename); -+ return self->error = MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* allocate generic decompression state */ -+ if (!self->d) { -+ self->d = (struct mscabd_decompress_state *) sys->alloc(sys, sizeof(struct mscabd_decompress_state)); -+ if (!self->d) return self->error = MSPACK_ERR_NOMEMORY; -+ self->d->folder = NULL; -+ self->d->data = NULL; -+ self->d->sys = *sys; -+ self->d->sys.read = &cabd_sys_read; -+ self->d->sys.write = &cabd_sys_write; -+ self->d->state = NULL; -+ self->d->infh = NULL; -+ self->d->incab = NULL; -+ } -+ -+ /* do we need to change folder or reset the current folder? */ -+ if ((self->d->folder != fol) || (self->d->offset > file->offset)) { -+ /* do we need to open a new cab file? */ -+ if (!self->d->infh || (fol->data.cab != self->d->incab)) { -+ /* close previous file handle if from a different cab */ -+ if (self->d->infh) sys->close(self->d->infh); -+ self->d->incab = fol->data.cab; -+ self->d->infh = sys->open(sys, fol->data.cab->base.filename, -+ MSPACK_SYS_OPEN_READ); -+ if (!self->d->infh) return self->error = MSPACK_ERR_OPEN; -+ } -+ /* seek to start of data blocks */ -+ if (sys->seek(self->d->infh, fol->data.offset, MSPACK_SYS_SEEK_START)) { -+ return self->error = MSPACK_ERR_SEEK; -+ } -+ -+ /* set up decompressor */ -+ if (cabd_init_decomp(self, (unsigned int) fol->base.comp_type)) { -+ return self->error; -+ } -+ -+ /* initialise new folder state */ -+ self->d->folder = fol; -+ self->d->data = &fol->data; -+ self->d->offset = 0; -+ self->d->block = 0; -+ self->d->i_ptr = self->d->i_end = &self->d->input[0]; -+ -+ /* read_error lasts for the lifetime of a decompressor */ -+ self->read_error = MSPACK_ERR_OK; -+ } -+ -+ /* open file for output */ -+ if (!(fh = sys->open(sys, filename, MSPACK_SYS_OPEN_WRITE))) { -+ return self->error = MSPACK_ERR_OPEN; -+ } -+ -+ self->error = MSPACK_ERR_OK; -+ -+ /* if file has more than 0 bytes */ -+ if (file->length) { -+ off_t bytes; -+ int error; -+ /* get to correct offset. -+ * - use NULL fh to say 'no writing' to cabd_sys_write() -+ * - if cabd_sys_read() has an error, it will set self->read_error -+ * and pass back MSPACK_ERR_READ -+ */ -+ self->d->outfh = NULL; -+ if ((bytes = file->offset - self->d->offset)) { -+ error = self->d->decompress(self->d->state, bytes); -+ self->error = (error == MSPACK_ERR_READ) ? self->read_error : error; -+ } -+ -+ /* if getting to the correct offset was error free, unpack file */ -+ if (!self->error) { -+ self->d->outfh = fh; -+ error = self->d->decompress(self->d->state, (off_t) file->length); -+ self->error = (error == MSPACK_ERR_READ) ? self->read_error : error; -+ } -+ } -+ -+ /* close output file */ -+ sys->close(fh); -+ self->d->outfh = NULL; -+ -+ return self->error; -+} -+ -+/*************************************** -+ * CABD_INIT_DECOMP, CABD_FREE_DECOMP -+ *************************************** -+ * cabd_init_decomp initialises decompression state, according to which -+ * decompression method was used. relies on self->d->folder being the same -+ * as when initialised. -+ * -+ * cabd_free_decomp frees decompression state, according to which method -+ * was used. -+ */ -+static int cabd_init_decomp(struct mscab_decompressor_p *self, unsigned int ct) -+{ -+ struct mspack_file *fh = (struct mspack_file *) self; -+ -+ assert(self && self->d); -+ -+ /* free any existing decompressor */ -+ cabd_free_decomp(self); -+ -+ self->d->comp_type = ct; -+ -+ switch (ct & cffoldCOMPTYPE_MASK) { -+ case cffoldCOMPTYPE_NONE: -+ self->d->decompress = (int (*)(void *, off_t)) &noned_decompress; -+ self->d->state = noned_init(&self->d->sys, fh, fh, -+ self->param[MSCABD_PARAM_DECOMPBUF]); -+ break; -+ case cffoldCOMPTYPE_MSZIP: -+ self->d->decompress = (int (*)(void *, off_t)) &mszipd_decompress; -+ self->d->state = mszipd_init(&self->d->sys, fh, fh, -+ self->param[MSCABD_PARAM_DECOMPBUF], -+ self->param[MSCABD_PARAM_FIXMSZIP]); -+ break; -+ case cffoldCOMPTYPE_QUANTUM: -+ self->d->decompress = (int (*)(void *, off_t)) &qtmd_decompress; -+ self->d->state = qtmd_init(&self->d->sys, fh, fh, (int) (ct >> 8) & 0x1f, -+ self->param[MSCABD_PARAM_DECOMPBUF]); -+ break; -+ case cffoldCOMPTYPE_LZX: -+ self->d->decompress = (int (*)(void *, off_t)) &lzxd_decompress; -+ self->d->state = lzxd_init(&self->d->sys, fh, fh, (int) (ct >> 8) & 0x1f, 0, -+ self->param[MSCABD_PARAM_DECOMPBUF], (off_t)0,0); -+ break; -+ default: -+ return self->error = MSPACK_ERR_DATAFORMAT; -+ } -+ return self->error = (self->d->state) ? MSPACK_ERR_OK : MSPACK_ERR_NOMEMORY; -+} -+ -+static void cabd_free_decomp(struct mscab_decompressor_p *self) { -+ if (!self || !self->d || !self->d->folder || !self->d->state) return; -+ -+ switch (self->d->comp_type & cffoldCOMPTYPE_MASK) { -+ case cffoldCOMPTYPE_NONE: noned_free((struct noned_state *) self->d->state); break; -+ case cffoldCOMPTYPE_MSZIP: mszipd_free((struct mszipd_stream *) self->d->state); break; -+ case cffoldCOMPTYPE_QUANTUM: qtmd_free((struct qtmd_stream *) self->d->state); break; -+ case cffoldCOMPTYPE_LZX: lzxd_free((struct lzxd_stream *) self->d->state); break; -+ } -+ self->d->decompress = NULL; -+ self->d->state = NULL; -+} -+ -+/*************************************** -+ * CABD_SYS_READ, CABD_SYS_WRITE -+ *************************************** -+ * cabd_sys_read is the internal reader function which the decompressors -+ * use. will read data blocks (and merge split blocks) from the cabinet -+ * and serve the read bytes to the decompressors -+ * -+ * cabd_sys_write is the internal writer function which the decompressors -+ * use. it either writes data to disk (self->d->outfh) with the real -+ * sys->write() function, or does nothing with the data when -+ * self->d->outfh == NULL. advances self->d->offset -+ */ -+static int cabd_sys_read(struct mspack_file *file, void *buffer, int bytes) { -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) file; -+ unsigned char *buf = (unsigned char *) buffer; -+ struct mspack_system *sys = self->system; -+ int avail, todo, outlen, ignore_cksum; -+ -+ ignore_cksum = self->param[MSCABD_PARAM_FIXMSZIP] && -+ ((self->d->comp_type & cffoldCOMPTYPE_MASK) == cffoldCOMPTYPE_MSZIP); -+ -+ todo = bytes; -+ while (todo > 0) { -+ avail = self->d->i_end - self->d->i_ptr; -+ -+ /* if out of input data, read a new block */ -+ if (avail) { -+ /* copy as many input bytes available as possible */ -+ if (avail > todo) avail = todo; -+ sys->copy(self->d->i_ptr, buf, (size_t) avail); -+ self->d->i_ptr += avail; -+ buf += avail; -+ todo -= avail; -+ } -+ else { -+ /* out of data, read a new block */ -+ -+ /* check if we're out of input blocks, advance block counter */ -+ if (self->d->block++ >= self->d->folder->base.num_blocks) { -+ self->read_error = MSPACK_ERR_DATAFORMAT; -+ break; -+ } -+ -+ /* read a block */ -+ self->read_error = cabd_sys_read_block(sys, self->d, &outlen, ignore_cksum); -+ if (self->read_error) return -1; -+ -+ /* special Quantum hack -- trailer byte to allow the decompressor -+ * to realign itself. CAB Quantum blocks, unlike LZX blocks, can have -+ * anything from 0 to 4 trailing null bytes. */ -+ if ((self->d->comp_type & cffoldCOMPTYPE_MASK)==cffoldCOMPTYPE_QUANTUM) { -+ *self->d->i_end++ = 0xFF; -+ } -+ -+ /* is this the last block? */ -+ if (self->d->block >= self->d->folder->base.num_blocks) { -+ /* last block */ -+ if ((self->d->comp_type & cffoldCOMPTYPE_MASK) == cffoldCOMPTYPE_LZX) { -+ /* special LZX hack -- on the last block, inform LZX of the -+ * size of the output data stream. */ -+ lzxd_set_output_length((struct lzxd_stream *) self->d->state, (off_t) -+ ((self->d->block-1) * CAB_BLOCKMAX + outlen)); -+ } -+ } -+ else { -+ /* not the last block */ -+ if (outlen != CAB_BLOCKMAX) { -+ self->system->message(self->d->infh, -+ "WARNING; non-maximal data block"); -+ } -+ } -+ } /* if (avail) */ -+ } /* while (todo > 0) */ -+ return bytes - todo; -+} -+ -+static int cabd_sys_write(struct mspack_file *file, void *buffer, int bytes) { -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) file; -+ self->d->offset += bytes; -+ if (self->d->outfh) { -+ return self->system->write(self->d->outfh, buffer, bytes); -+ } -+ return bytes; -+} -+ -+/*************************************** -+ * CABD_SYS_READ_BLOCK -+ *************************************** -+ * reads a whole data block from a cab file. the block may span more than -+ * one cab file, if it does then the fragments will be reassembled -+ */ -+static int cabd_sys_read_block(struct mspack_system *sys, -+ struct mscabd_decompress_state *d, -+ int *out, int ignore_cksum) -+{ -+ unsigned char hdr[cfdata_SIZEOF]; -+ unsigned int cksum; -+ int len; -+ -+ /* reset the input block pointer and end of block pointer */ -+ d->i_ptr = d->i_end = &d->input[0]; -+ -+ do { -+ /* read the block header */ -+ if (sys->read(d->infh, &hdr[0], cfdata_SIZEOF) != cfdata_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ -+ /* skip any reserved block headers */ -+ if (d->data->cab->block_resv && -+ sys->seek(d->infh, (off_t) d->data->cab->block_resv, -+ MSPACK_SYS_SEEK_CUR)) -+ { -+ return MSPACK_ERR_SEEK; -+ } -+ -+ /* blocks must not be over CAB_INPUTMAX in size */ -+ len = EndGetI16(&hdr[cfdata_CompressedSize]); -+ if (((d->i_end - d->i_ptr) + len) > CAB_INPUTMAX) { -+ D(("block size > CAB_INPUTMAX (%ld + %d)", d->i_end - d->i_ptr, len)) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* blocks must not expand to more than CAB_BLOCKMAX */ -+ if (EndGetI16(&hdr[cfdata_UncompressedSize]) > CAB_BLOCKMAX) { -+ D(("block size > CAB_BLOCKMAX")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* read the block data */ -+ if (sys->read(d->infh, d->i_end, len) != len) { -+ return MSPACK_ERR_READ; -+ } -+ -+ /* perform checksum test on the block (if one is stored) */ -+ if ((cksum = EndGetI32(&hdr[cfdata_CheckSum]))) { -+ unsigned int sum2 = cabd_checksum(d->i_end, (unsigned int) len, 0); -+ if (cabd_checksum(&hdr[4], 4, sum2) != cksum) { -+ if (!ignore_cksum) return MSPACK_ERR_CHECKSUM; -+ sys->message(d->infh, "WARNING; bad block checksum found"); -+ } -+ } -+ -+ /* advance end of block pointer to include newly read data */ -+ d->i_end += len; -+ -+ /* uncompressed size == 0 means this block was part of a split block -+ * and it continues as the first block of the next cabinet in the set. -+ * otherwise, this is the last part of the block, and no more block -+ * reading needs to be done. -+ */ -+ /* EXIT POINT OF LOOP -- uncompressed size != 0 */ -+ if ((*out = EndGetI16(&hdr[cfdata_UncompressedSize]))) { -+ return MSPACK_ERR_OK; -+ } -+ -+ /* otherwise, advance to next cabinet */ -+ -+ /* close current file handle */ -+ sys->close(d->infh); -+ d->infh = NULL; -+ -+ /* advance to next member in the cabinet set */ -+ if (!(d->data = d->data->next)) { -+ D(("ran out of splits in cabinet set")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* open next cab file */ -+ d->incab = d->data->cab; -+ if (!(d->infh = sys->open(sys, d->incab->base.filename, -+ MSPACK_SYS_OPEN_READ))) -+ { -+ return MSPACK_ERR_OPEN; -+ } -+ -+ /* seek to start of data blocks */ -+ if (sys->seek(d->infh, d->data->offset, MSPACK_SYS_SEEK_START)) { -+ return MSPACK_ERR_SEEK; -+ } -+ } while (1); -+ -+ /* not reached */ -+ return MSPACK_ERR_OK; -+} -+ -+static unsigned int cabd_checksum(unsigned char *data, unsigned int bytes, -+ unsigned int cksum) -+{ -+ unsigned int len, ul = 0; -+ -+ for (len = bytes >> 2; len--; data += 4) { -+ cksum ^= ((data[0]) | (data[1]<<8) | (data[2]<<16) | (data[3]<<24)); -+ } -+ -+ switch (bytes & 3) { -+ case 3: ul |= *data++ << 16; -+ case 2: ul |= *data++ << 8; -+ case 1: ul |= *data; -+ } -+ cksum ^= ul; -+ -+ return cksum; -+} -+ -+/*************************************** -+ * NONED_INIT, NONED_DECOMPRESS, NONED_FREE -+ *************************************** -+ * the "not compressed" method decompressor -+ */ -+struct noned_state { -+ struct mspack_system *sys; -+ struct mspack_file *i; -+ struct mspack_file *o; -+ unsigned char *buf; -+ int bufsize; -+}; -+ -+static struct noned_state *noned_init(struct mspack_system *sys, -+ struct mspack_file *in, -+ struct mspack_file *out, -+ int bufsize) -+{ -+ struct noned_state *state = (struct noned_state *) sys->alloc(sys, sizeof(struct noned_state)); -+ unsigned char *buf = (unsigned char *) sys->alloc(sys, (size_t) bufsize); -+ if (state && buf) { -+ state->sys = sys; -+ state->i = in; -+ state->o = out; -+ state->buf = buf; -+ state->bufsize = bufsize; -+ } -+ else { -+ sys->free(buf); -+ sys->free(state); -+ state = NULL; -+ } -+ return state; -+} -+ -+static int noned_decompress(struct noned_state *s, off_t bytes) { -+ int run; -+ while (bytes > 0) { -+ run = (bytes > s->bufsize) ? s->bufsize : (int) bytes; -+ if (s->sys->read(s->i, &s->buf[0], run) != run) return MSPACK_ERR_READ; -+ if (s->sys->write(s->o, &s->buf[0], run) != run) return MSPACK_ERR_WRITE; -+ bytes -= run; -+ } -+ return MSPACK_ERR_OK; -+} -+ -+static void noned_free(struct noned_state *state) { -+ struct mspack_system *sys; -+ if (state) { -+ sys = state->sys; -+ sys->free(state->buf); -+ sys->free(state); -+ } -+} -+ -+ -+/*************************************** -+ * CABD_PARAM -+ *************************************** -+ * allows a parameter to be set -+ */ -+static int cabd_param(struct mscab_decompressor *base, int param, int value) { -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) base; -+ if (!self) return MSPACK_ERR_ARGS; -+ -+ switch (param) { -+ case MSCABD_PARAM_SEARCHBUF: -+ if (value < 4) return MSPACK_ERR_ARGS; -+ self->param[MSCABD_PARAM_SEARCHBUF] = value; -+ break; -+ case MSCABD_PARAM_FIXMSZIP: -+ self->param[MSCABD_PARAM_FIXMSZIP] = value; -+ break; -+ case MSCABD_PARAM_DECOMPBUF: -+ if (value < 4) return MSPACK_ERR_ARGS; -+ self->param[MSCABD_PARAM_DECOMPBUF] = value; -+ break; -+ default: -+ return MSPACK_ERR_ARGS; -+ } -+ return MSPACK_ERR_OK; -+} -+ -+/*************************************** -+ * CABD_ERROR -+ *************************************** -+ * returns the last error that occurred -+ */ -+static int cabd_error(struct mscab_decompressor *base) { -+ struct mscab_decompressor_p *self = (struct mscab_decompressor_p *) base; -+ return (self) ? self->error : MSPACK_ERR_ARGS; -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/chm.h b/libclamav/libmspack-0.4alpha/mspack/chm.h -new file mode 100644 -index 000000000000..a85d2e173157 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/chm.h -@@ -0,0 +1,122 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_CHM_H -+#define MSPACK_CHM_H 1 -+ -+#include -+ -+/* generic CHM definitions */ -+ -+#define chmhead_Signature (0x0000) -+#define chmhead_Version (0x0004) -+#define chmhead_HeaderLen (0x0008) -+#define chmhead_Unknown1 (0x000C) -+#define chmhead_Timestamp (0x0010) -+#define chmhead_LanguageID (0x0014) -+#define chmhead_GUID1 (0x0018) -+#define chmhead_GUID2 (0x0028) -+#define chmhead_SIZEOF (0x0038) -+ -+#define chmhst_OffsetHS0 (0x0000) -+#define chmhst_LengthHS0 (0x0008) -+#define chmhst_OffsetHS1 (0x0010) -+#define chmhst_LengthHS1 (0x0018) -+#define chmhst_SIZEOF (0x0020) -+#define chmhst3_OffsetCS0 (0x0020) -+#define chmhst3_SIZEOF (0x0028) -+ -+#define chmhs0_Unknown1 (0x0000) -+#define chmhs0_Unknown2 (0x0004) -+#define chmhs0_FileLen (0x0008) -+#define chmhs0_Unknown3 (0x0010) -+#define chmhs0_Unknown4 (0x0014) -+#define chmhs0_SIZEOF (0x0018) -+ -+#define chmhs1_Signature (0x0000) -+#define chmhs1_Version (0x0004) -+#define chmhs1_HeaderLen (0x0008) -+#define chmhs1_Unknown1 (0x000C) -+#define chmhs1_ChunkSize (0x0010) -+#define chmhs1_Density (0x0014) -+#define chmhs1_Depth (0x0018) -+#define chmhs1_IndexRoot (0x001C) -+#define chmhs1_FirstPMGL (0x0020) -+#define chmhs1_LastPMGL (0x0024) -+#define chmhs1_Unknown2 (0x0028) -+#define chmhs1_NumChunks (0x002C) -+#define chmhs1_LanguageID (0x0030) -+#define chmhs1_GUID (0x0034) -+#define chmhs1_Unknown3 (0x0044) -+#define chmhs1_Unknown4 (0x0048) -+#define chmhs1_Unknown5 (0x004C) -+#define chmhs1_Unknown6 (0x0050) -+#define chmhs1_SIZEOF (0x0054) -+ -+#define pmgl_Signature (0x0000) -+#define pmgl_QuickRefSize (0x0004) -+#define pmgl_Unknown1 (0x0008) -+#define pmgl_PrevChunk (0x000C) -+#define pmgl_NextChunk (0x0010) -+#define pmgl_Entries (0x0014) -+#define pmgl_headerSIZEOF (0x0014) -+ -+#define pmgi_Signature (0x0000) -+#define pmgi_QuickRefSize (0x0004) -+#define pmgi_Entries (0x0008) -+#define pmgi_headerSIZEOF (0x000C) -+ -+#define lzxcd_Length (0x0000) -+#define lzxcd_Signature (0x0004) -+#define lzxcd_Version (0x0008) -+#define lzxcd_ResetInterval (0x000C) -+#define lzxcd_WindowSize (0x0010) -+#define lzxcd_CacheSize (0x0014) -+#define lzxcd_Unknown1 (0x0018) -+#define lzxcd_SIZEOF (0x001C) -+ -+#define lzxrt_Unknown1 (0x0000) -+#define lzxrt_NumEntries (0x0004) -+#define lzxrt_EntrySize (0x0008) -+#define lzxrt_TableOffset (0x000C) -+#define lzxrt_UncompLen (0x0010) -+#define lzxrt_CompLen (0x0018) -+#define lzxrt_FrameLen (0x0020) -+#define lzxrt_Entries (0x0028) -+#define lzxrt_headerSIZEOF (0x0028) -+ -+/* CHM compression definitions */ -+ -+struct mschm_compressor_p { -+ struct mschm_compressor base; -+ struct mspack_system *system; -+ char *temp_file; -+ int use_temp_file; -+ int error; -+}; -+ -+/* CHM decompression definitions */ -+struct mschmd_decompress_state { -+ struct mschmd_header *chm; /* CHM file being decompressed */ -+ off_t offset; /* uncompressed offset within folder */ -+ off_t inoffset; /* offset in input file */ -+ struct lzxd_stream *state; /* LZX decompressor state */ -+ struct mspack_system sys; /* special I/O code for decompressor */ -+ struct mspack_file *infh; /* input file handle */ -+ struct mspack_file *outfh; /* output file handle */ -+}; -+ -+struct mschm_decompressor_p { -+ struct mschm_decompressor base; -+ struct mspack_system *system; -+ struct mschmd_decompress_state *d; -+ int error; -+}; -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/chmc.c b/libclamav/libmspack-0.4alpha/mspack/chmc.c -new file mode 100644 -index 000000000000..72f6c5b389e4 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/chmc.c -@@ -0,0 +1,24 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* CHM compression implementation */ -+ -+#include -+#include -+ -+struct mschm_compressor * -+ mspack_create_chm_compressor(struct mspack_system *sys) -+{ -+ /* todo */ -+ return NULL; -+} -+ -+void mspack_destroy_chm_compressor(struct mschm_compressor *self) { -+ /* todo */ -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/chmd.c b/libclamav/libmspack-0.4alpha/mspack/chmd.c -new file mode 100644 -index 000000000000..19dc47b56ec0 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/chmd.c -@@ -0,0 +1,1392 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2011 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* CHM decompression implementation */ -+ -+#include -+#include -+ -+/* prototypes */ -+static struct mschmd_header * chmd_open( -+ struct mschm_decompressor *base, const char *filename); -+static struct mschmd_header * chmd_fast_open( -+ struct mschm_decompressor *base, const char *filename); -+static struct mschmd_header *chmd_real_open( -+ struct mschm_decompressor *base, const char *filename, int entire); -+static void chmd_close( -+ struct mschm_decompressor *base, struct mschmd_header *chm); -+static int chmd_read_headers( -+ struct mspack_system *sys, struct mspack_file *fh, -+ struct mschmd_header *chm, int entire); -+static int chmd_fast_find( -+ struct mschm_decompressor *base, struct mschmd_header *chm, -+ const char *filename, struct mschmd_file *f_ptr, int f_size); -+static unsigned char *read_chunk( -+ struct mschm_decompressor_p *self, struct mschmd_header *chm, -+ struct mspack_file *fh, unsigned int chunk); -+static int search_chunk( -+ struct mschmd_header *chm, const unsigned char *chunk, const char *filename, -+ const unsigned char **result, const unsigned char **result_end); -+static inline int compare( -+ const char *s1, const char *s2, int l1, int l2); -+static int chmd_extract( -+ struct mschm_decompressor *base, struct mschmd_file *file, -+ const char *filename); -+static int chmd_sys_write( -+ struct mspack_file *file, void *buffer, int bytes); -+static int chmd_init_decomp( -+ struct mschm_decompressor_p *self, struct mschmd_file *file); -+static int read_reset_table( -+ struct mschm_decompressor_p *self, struct mschmd_sec_mscompressed *sec, -+ int entry, off_t *length_ptr, off_t *offset_ptr); -+static int read_spaninfo( -+ struct mschm_decompressor_p *self, struct mschmd_sec_mscompressed *sec, -+ off_t *length_ptr); -+static int find_sys_file( -+ struct mschm_decompressor_p *self, struct mschmd_sec_mscompressed *sec, -+ struct mschmd_file **f_ptr, const char *name); -+static unsigned char *read_sys_file( -+ struct mschm_decompressor_p *self, struct mschmd_file *file); -+static int chmd_error( -+ struct mschm_decompressor *base); -+static int read_off64( -+ off_t *var, unsigned char *mem, struct mspack_system *sys, -+ struct mspack_file *fh); -+ -+/* filenames of the system files used for decompression. -+ * Content and ControlData are essential. -+ * ResetTable is preferred, but SpanInfo can be used if not available -+ */ -+static const char *content_name = "::DataSpace/Storage/MSCompressed/Content"; -+static const char *control_name = "::DataSpace/Storage/MSCompressed/ControlData"; -+static const char *spaninfo_name = "::DataSpace/Storage/MSCompressed/SpanInfo"; -+static const char *rtable_name = "::DataSpace/Storage/MSCompressed/Transform/" -+ "{7FC28940-9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/ResetTable"; -+ -+/*************************************** -+ * MSPACK_CREATE_CHM_DECOMPRESSOR -+ *************************************** -+ * constructor -+ */ -+struct mschm_decompressor * -+ mspack_create_chm_decompressor(struct mspack_system *sys) -+{ -+ struct mschm_decompressor_p *self = NULL; -+ -+ if (!sys) sys = mspack_default_system; -+ if (!mspack_valid_system(sys)) return NULL; -+ -+ if ((self = (struct mschm_decompressor_p *) sys->alloc(sys, sizeof(struct mschm_decompressor_p)))) { -+ self->base.open = &chmd_open; -+ self->base.close = &chmd_close; -+ self->base.extract = &chmd_extract; -+ self->base.last_error = &chmd_error; -+ self->base.fast_open = &chmd_fast_open; -+ self->base.fast_find = &chmd_fast_find; -+ self->system = sys; -+ self->error = MSPACK_ERR_OK; -+ self->d = NULL; -+ } -+ return (struct mschm_decompressor *) self; -+} -+ -+/*************************************** -+ * MSPACK_DESTROY_CAB_DECOMPRESSOR -+ *************************************** -+ * destructor -+ */ -+void mspack_destroy_chm_decompressor(struct mschm_decompressor *base) { -+ struct mschm_decompressor_p *self = (struct mschm_decompressor_p *) base; -+ if (self) { -+ struct mspack_system *sys = self->system; -+ if (self->d) { -+ if (self->d->infh) sys->close(self->d->infh); -+ if (self->d->state) lzxd_free(self->d->state); -+ sys->free(self->d); -+ } -+ sys->free(self); -+ } -+} -+ -+/*************************************** -+ * CHMD_OPEN -+ *************************************** -+ * opens a file and tries to read it as a CHM file. -+ * Calls chmd_real_open() with entire=1. -+ */ -+static struct mschmd_header *chmd_open(struct mschm_decompressor *base, -+ const char *filename) -+{ -+ return chmd_real_open(base, filename, 1); -+} -+ -+/*************************************** -+ * CHMD_FAST_OPEN -+ *************************************** -+ * opens a file and tries to read it as a CHM file, but does not read -+ * the file headers. Calls chmd_real_open() with entire=0 -+ */ -+static struct mschmd_header *chmd_fast_open(struct mschm_decompressor *base, -+ const char *filename) -+{ -+ return chmd_real_open(base, filename, 0); -+} -+ -+/*************************************** -+ * CHMD_REAL_OPEN -+ *************************************** -+ * the real implementation of chmd_open() and chmd_fast_open(). It simply -+ * passes the "entire" parameter to chmd_read_headers(), which will then -+ * either read all headers, or a bare mininum. -+ */ -+static struct mschmd_header *chmd_real_open(struct mschm_decompressor *base, -+ const char *filename, int entire) -+{ -+ struct mschm_decompressor_p *self = (struct mschm_decompressor_p *) base; -+ struct mschmd_header *chm = NULL; -+ struct mspack_system *sys; -+ struct mspack_file *fh; -+ int error; -+ -+ if (!base) return NULL; -+ sys = self->system; -+ -+ if ((fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ))) { -+ if ((chm = (struct mschmd_header *) sys->alloc(sys, sizeof(struct mschmd_header)))) { -+ chm->filename = filename; -+ error = chmd_read_headers(sys, fh, chm, entire); -+ if (error) { -+ /* if the error is DATAFORMAT, and there are some results, return -+ * partial results with a warning, rather than nothing */ -+ if (error == MSPACK_ERR_DATAFORMAT && (chm->files || chm->sysfiles)) { -+ sys->message(fh, "WARNING; contents are corrupt"); -+ error = MSPACK_ERR_OK; -+ } -+ else { -+ chmd_close(base, chm); -+ chm = NULL; -+ } -+ } -+ self->error = error; -+ } -+ else { -+ self->error = MSPACK_ERR_NOMEMORY; -+ } -+ sys->close(fh); -+ } -+ else { -+ self->error = MSPACK_ERR_OPEN; -+ } -+ return chm; -+} -+ -+/*************************************** -+ * CHMD_CLOSE -+ *************************************** -+ * frees all memory associated with a given mschmd_header -+ */ -+static void chmd_close(struct mschm_decompressor *base, -+ struct mschmd_header *chm) -+{ -+ struct mschm_decompressor_p *self = (struct mschm_decompressor_p *) base; -+ struct mschmd_file *fi, *nfi; -+ struct mspack_system *sys; -+ unsigned int i; -+ -+ if (!base) return; -+ sys = self->system; -+ -+ self->error = MSPACK_ERR_OK; -+ -+ /* free files */ -+ for (fi = chm->files; fi; fi = nfi) { -+ nfi = fi->next; -+ sys->free(fi); -+ } -+ for (fi = chm->sysfiles; fi; fi = nfi) { -+ nfi = fi->next; -+ sys->free(fi); -+ } -+ -+ /* if this CHM was being decompressed, free decompression state */ -+ if (self->d && (self->d->chm == chm)) { -+ if (self->d->infh) sys->close(self->d->infh); -+ if (self->d->state) lzxd_free(self->d->state); -+ sys->free(self->d); -+ self->d = NULL; -+ } -+ -+ /* if this CHM had a chunk cache, free it and contents */ -+ if (chm->chunk_cache) { -+ for (i = 0; i < chm->num_chunks; i++) sys->free(chm->chunk_cache[i]); -+ sys->free(chm->chunk_cache); -+ } -+ -+ sys->free(chm); -+} -+ -+/*************************************** -+ * CHMD_READ_HEADERS -+ *************************************** -+ * reads the basic CHM file headers. If the "entire" parameter is -+ * non-zero, all file entries will also be read. fills out a pre-existing -+ * mschmd_header structure, allocates memory for files as necessary -+ */ -+ -+/* The GUIDs found in CHM headers */ -+static const unsigned char guids[32] = { -+ /* {7C01FD10-7BAA-11D0-9E0C-00A0-C922-E6EC} */ -+ 0x10, 0xFD, 0x01, 0x7C, 0xAA, 0x7B, 0xD0, 0x11, -+ 0x9E, 0x0C, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEC, -+ /* {7C01FD11-7BAA-11D0-9E0C-00A0-C922-E6EC} */ -+ 0x11, 0xFD, 0x01, 0x7C, 0xAA, 0x7B, 0xD0, 0x11, -+ 0x9E, 0x0C, 0x00, 0xA0, 0xC9, 0x22, 0xE6, 0xEC -+}; -+ -+/* reads an encoded integer into a variable; 7 bits of data per byte, -+ * the high bit is used to indicate that there is another byte */ -+#define READ_ENCINT(var) do { \ -+ (var) = 0; \ -+ do { \ -+ if (p > end) goto chunk_end; \ -+ (var) = ((var) << 7) | (*p & 0x7F); \ -+ } while (*p++ & 0x80); \ -+} while (0) -+ -+static int chmd_read_headers(struct mspack_system *sys, struct mspack_file *fh, -+ struct mschmd_header *chm, int entire) -+{ -+ unsigned int section, name_len, x, errors, num_chunks; -+ unsigned char buf[0x54], *chunk = NULL, *name, *p, *end; -+ struct mschmd_file *fi, *link = NULL; -+ off_t offset, length; -+ int num_entries, i; -+ -+ /* initialise pointers */ -+ chm->files = NULL; -+ chm->sysfiles = NULL; -+ chm->chunk_cache = NULL; -+ chm->sec0.base.chm = chm; -+ chm->sec0.base.id = 0; -+ chm->sec1.base.chm = chm; -+ chm->sec1.base.id = 1; -+ chm->sec1.content = NULL; -+ chm->sec1.control = NULL; -+ chm->sec1.spaninfo = NULL; -+ chm->sec1.rtable = NULL; -+ -+ /* read the first header */ -+ if (sys->read(fh, &buf[0], chmhead_SIZEOF) != chmhead_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ -+ /* check ITSF signature */ -+ if (EndGetI32(&buf[chmhead_Signature]) != 0x46535449) { -+ return MSPACK_ERR_SIGNATURE; -+ } -+ -+ /* check both header GUIDs */ -+ if (mspack_memcmp(&buf[chmhead_GUID1], &guids[0], 32L) != 0) { -+ D(("incorrect GUIDs")) -+ return MSPACK_ERR_SIGNATURE; -+ } -+ -+ chm->version = EndGetI32(&buf[chmhead_Version]); -+ chm->timestamp = EndGetM32(&buf[chmhead_Timestamp]); -+ chm->language = EndGetI32(&buf[chmhead_LanguageID]); -+ if (chm->version > 3) { -+ sys->message(fh, "WARNING; CHM version > 3"); -+ } -+ -+ /* read the header section table */ -+ if (sys->read(fh, &buf[0], chmhst3_SIZEOF) != chmhst3_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ -+ /* chmhst3_OffsetCS0 does not exist in version 1 or 2 CHM files. -+ * The offset will be corrected later, once HS1 is read. -+ */ -+ if (read_off64(&offset, &buf[chmhst_OffsetHS0], sys, fh) || -+ read_off64(&chm->dir_offset, &buf[chmhst_OffsetHS1], sys, fh) || -+ read_off64(&chm->sec0.offset, &buf[chmhst3_OffsetCS0], sys, fh)) -+ { -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* seek to header section 0 */ -+ if (sys->seek(fh, offset, MSPACK_SYS_SEEK_START)) { -+ return MSPACK_ERR_SEEK; -+ } -+ -+ /* read header section 0 */ -+ if (sys->read(fh, &buf[0], chmhs0_SIZEOF) != chmhs0_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ if (read_off64(&chm->length, &buf[chmhs0_FileLen], sys, fh)) { -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* seek to header section 1 */ -+ if (sys->seek(fh, chm->dir_offset, MSPACK_SYS_SEEK_START)) { -+ return MSPACK_ERR_SEEK; -+ } -+ -+ /* read header section 1 */ -+ if (sys->read(fh, &buf[0], chmhs1_SIZEOF) != chmhs1_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ -+ chm->dir_offset = sys->tell(fh); -+ chm->chunk_size = EndGetI32(&buf[chmhs1_ChunkSize]); -+ chm->density = EndGetI32(&buf[chmhs1_Density]); -+ chm->depth = EndGetI32(&buf[chmhs1_Depth]); -+ chm->index_root = EndGetI32(&buf[chmhs1_IndexRoot]); -+ chm->num_chunks = EndGetI32(&buf[chmhs1_NumChunks]); -+ chm->first_pmgl = EndGetI32(&buf[chmhs1_FirstPMGL]); -+ chm->last_pmgl = EndGetI32(&buf[chmhs1_LastPMGL]); -+ -+ if (chm->version < 3) { -+ /* versions before 3 don't have chmhst3_OffsetCS0 */ -+ chm->sec0.offset = chm->dir_offset + (chm->chunk_size * chm->num_chunks); -+ } -+ -+ /* check if content offset or file size is wrong */ -+ if (chm->sec0.offset > chm->length) { -+ D(("content section begins after file has ended")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* ensure there are chunks and that chunk size is -+ * large enough for signature and num_entries */ -+ if (chm->chunk_size < (pmgl_Entries + 2)) { -+ D(("chunk size not large enough")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ if (chm->num_chunks == 0) { -+ D(("no chunks")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* The chunk_cache data structure is not great; large values for num_chunks -+ * or num_chunks*chunk_size can exhaust all memory. Until a better chunk -+ * cache is implemented, put arbitrary limits on num_chunks and chunk size. -+ */ -+ if (chm->num_chunks > 100000) { -+ D(("more than 100,000 chunks")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ if ((off_t)chm->chunk_size * (off_t)chm->num_chunks > chm->length) { -+ D(("chunks larger than entire file")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* common sense checks on header section 1 fields */ -+ if ((chm->chunk_size & (chm->chunk_size - 1)) != 0) { -+ sys->message(fh, "WARNING; chunk size is not a power of two"); -+ } -+ if (chm->first_pmgl != 0) { -+ sys->message(fh, "WARNING; first PMGL chunk is not zero"); -+ } -+ if (chm->first_pmgl > chm->last_pmgl) { -+ D(("first pmgl chunk is after last pmgl chunk")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ if (chm->index_root != 0xFFFFFFFF && chm->index_root > chm->num_chunks) { -+ D(("index_root outside valid range")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* if we are doing a quick read, stop here! */ -+ if (!entire) { -+ return MSPACK_ERR_OK; -+ } -+ -+ /* seek to the first PMGL chunk, and reduce the number of chunks to read */ -+ if ((x = chm->first_pmgl) != 0) { -+ if (sys->seek(fh,(off_t) (x * chm->chunk_size), MSPACK_SYS_SEEK_CUR)) { -+ return MSPACK_ERR_SEEK; -+ } -+ } -+ num_chunks = chm->last_pmgl - x + 1; -+ -+ if (!(chunk = (unsigned char *) sys->alloc(sys, (size_t)chm->chunk_size))) { -+ return MSPACK_ERR_NOMEMORY; -+ } -+ -+ /* read and process all chunks from FirstPMGL to LastPMGL */ -+ errors = 0; -+ while (num_chunks--) { -+ /* read next chunk */ -+ if (sys->read(fh, chunk, (int)chm->chunk_size) != (int)chm->chunk_size) { -+ sys->free(chunk); -+ return MSPACK_ERR_READ; -+ } -+ -+ /* process only directory (PMGL) chunks */ -+ if (EndGetI32(&chunk[pmgl_Signature]) != 0x4C474D50) continue; -+ -+ if (EndGetI32(&chunk[pmgl_QuickRefSize]) < 2) { -+ sys->message(fh, "WARNING; PMGL quickref area is too small"); -+ } -+ if (EndGetI32(&chunk[pmgl_QuickRefSize]) > -+ ((int)chm->chunk_size - pmgl_Entries)) -+ { -+ sys->message(fh, "WARNING; PMGL quickref area is too large"); -+ } -+ -+ p = &chunk[pmgl_Entries]; -+ end = &chunk[chm->chunk_size - 2]; -+ num_entries = EndGetI16(end); -+ -+ while (num_entries--) { -+ READ_ENCINT(name_len); name = p; p += name_len; -+ READ_ENCINT(section); -+ READ_ENCINT(offset); -+ READ_ENCINT(length); -+ -+ /* empty files and directory names are stored as a file entry at -+ * offset 0 with length 0. We want to keep empty files, but not -+ * directory names, which end with a "/" */ -+ if ((offset == 0) && (length == 0)) { -+ if ((name_len > 0) && (name[name_len-1] == '/')) continue; -+ } -+ -+ if (section > 1) { -+ sys->message(fh, "invalid section number '%u'.", section); -+ continue; -+ } -+ -+ if (!(fi = (struct mschmd_file *) sys->alloc(sys, sizeof(struct mschmd_file) + name_len + 1))) { -+ sys->free(chunk); -+ return MSPACK_ERR_NOMEMORY; -+ } -+ -+ fi->next = NULL; -+ fi->filename = (char *) &fi[1]; -+ fi->section = ((section == 0) ? (struct mschmd_section *) (&chm->sec0) -+ : (struct mschmd_section *) (&chm->sec1)); -+ fi->offset = offset; -+ fi->length = length; -+ sys->copy(name, fi->filename, (size_t) name_len); -+ fi->filename[name_len] = '\0'; -+ -+ if (name[0] == ':' && name[1] == ':') { -+ /* system file */ -+ if (mspack_memcmp(&name[2], &content_name[2], 31L) == 0) { -+ if (mspack_memcmp(&name[33], &content_name[33], 8L) == 0) { -+ chm->sec1.content = fi; -+ } -+ else if (mspack_memcmp(&name[33], &control_name[33], 11L) == 0) { -+ chm->sec1.control = fi; -+ } -+ else if (mspack_memcmp(&name[33], &spaninfo_name[33], 8L) == 0) { -+ chm->sec1.spaninfo = fi; -+ } -+ else if (mspack_memcmp(&name[33], &rtable_name[33], 72L) == 0) { -+ chm->sec1.rtable = fi; -+ } -+ } -+ fi->next = chm->sysfiles; -+ chm->sysfiles = fi; -+ } -+ else { -+ /* normal file */ -+ if (link) link->next = fi; else chm->files = fi; -+ link = fi; -+ } -+ } -+ -+ /* this is reached either when num_entries runs out, or if -+ * reading data from the chunk reached a premature end of chunk */ -+ chunk_end: -+ if (num_entries >= 0) { -+ D(("chunk ended before all entries could be read")) -+ errors++; -+ } -+ -+ } -+ sys->free(chunk); -+ return (errors > 0) ? MSPACK_ERR_DATAFORMAT : MSPACK_ERR_OK; -+} -+ -+/*************************************** -+ * CHMD_FAST_FIND -+ *************************************** -+ * uses PMGI index chunks and quickref data to quickly locate a file -+ * directly from the on-disk index. -+ * -+ * TODO: protect against infinite loops in chunks (where pgml_NextChunk -+ * or a PGMI index entry point to an already visited chunk) -+ */ -+static int chmd_fast_find(struct mschm_decompressor *base, -+ struct mschmd_header *chm, const char *filename, -+ struct mschmd_file *f_ptr, int f_size) -+{ -+ struct mschm_decompressor_p *self = (struct mschm_decompressor_p *) base; -+ struct mspack_system *sys; -+ struct mspack_file *fh; -+ const unsigned char *chunk, *p, *end; -+ int err = MSPACK_ERR_OK, result = -1; -+ unsigned int n, sec; -+ -+ if (!self || !chm || !f_ptr || (f_size != sizeof(struct mschmd_file))) { -+ return MSPACK_ERR_ARGS; -+ } -+ sys = self->system; -+ -+ /* clear the results structure */ -+ memset(f_ptr, 0, f_size); -+ -+ if (!(fh = sys->open(sys, chm->filename, MSPACK_SYS_OPEN_READ))) { -+ return MSPACK_ERR_OPEN; -+ } -+ -+ /* go through PMGI chunk hierarchy to reach PMGL chunk */ -+ if (chm->index_root < chm->num_chunks) { -+ n = chm->index_root; -+ for (;;) { -+ if (!(chunk = read_chunk(self, chm, fh, n))) { -+ sys->close(fh); -+ return self->error; -+ } -+ -+ /* search PMGI/PMGL chunk. exit early if no entry found */ -+ if ((result = search_chunk(chm, chunk, filename, &p, &end)) <= 0) { -+ break; -+ } -+ -+ /* found result. loop around for next chunk if this is PMGI */ -+ if (chunk[3] == 0x4C) break; else READ_ENCINT(n); -+ } -+ } -+ else { -+ /* PMGL chunks only, search from first_pmgl to last_pmgl */ -+ for (n = chm->first_pmgl; n <= chm->last_pmgl; -+ n = EndGetI32(&chunk[pmgl_NextChunk])) -+ { -+ if (!(chunk = read_chunk(self, chm, fh, n))) { -+ err = self->error; -+ break; -+ } -+ -+ /* search PMGL chunk. exit if file found */ -+ if ((result = search_chunk(chm, chunk, filename, &p, &end)) > 0) { -+ break; -+ } -+ -+ /* stop simple infinite loops: can't visit the same chunk twice */ -+ if ((int)n == EndGetI32(&chunk[pmgl_NextChunk])) { -+ break; -+ } -+ } -+ } -+ -+ /* if we found a file, read it */ -+ if (result > 0) { -+ READ_ENCINT(sec); -+ f_ptr->section = (sec == 0) ? (struct mschmd_section *) &chm->sec0 -+ : (struct mschmd_section *) &chm->sec1; -+ READ_ENCINT(f_ptr->offset); -+ READ_ENCINT(f_ptr->length); -+ } -+ else if (result < 0) { -+ err = MSPACK_ERR_DATAFORMAT; -+ } -+ -+ sys->close(fh); -+ return self->error = err; -+ -+ chunk_end: -+ D(("read beyond end of chunk entries")) -+ sys->close(fh); -+ return self->error = MSPACK_ERR_DATAFORMAT; -+} -+ -+/* reads the given chunk into memory, storing it in a chunk cache -+ * so it doesn't need to be read from disk more than once -+ */ -+static unsigned char *read_chunk(struct mschm_decompressor_p *self, -+ struct mschmd_header *chm, -+ struct mspack_file *fh, -+ unsigned int chunk_num) -+{ -+ struct mspack_system *sys = self->system; -+ unsigned char *buf; -+ -+ /* check arguments - most are already checked by chmd_fast_find */ -+ if (chunk_num > chm->num_chunks) return NULL; -+ -+ /* ensure chunk cache is available */ -+ if (!chm->chunk_cache) { -+ size_t size = sizeof(unsigned char *) * chm->num_chunks; -+ if (!(chm->chunk_cache = (unsigned char **) sys->alloc(sys, size))) { -+ self->error = MSPACK_ERR_NOMEMORY; -+ return NULL; -+ } -+ memset(chm->chunk_cache, 0, size); -+ } -+ -+ /* try to answer out of chunk cache */ -+ if (chm->chunk_cache[chunk_num]) return chm->chunk_cache[chunk_num]; -+ -+ /* need to read chunk - allocate memory for it */ -+ if (!(buf = (unsigned char *) sys->alloc(sys, chm->chunk_size))) { -+ self->error = MSPACK_ERR_NOMEMORY; -+ return NULL; -+ } -+ -+ /* seek to block and read it */ -+ if (sys->seek(fh, (off_t) (chm->dir_offset + (chunk_num * chm->chunk_size)), -+ MSPACK_SYS_SEEK_START)) -+ { -+ self->error = MSPACK_ERR_SEEK; -+ sys->free(buf); -+ return NULL; -+ } -+ if (sys->read(fh, buf, (int)chm->chunk_size) != (int)chm->chunk_size) { -+ self->error = MSPACK_ERR_READ; -+ sys->free(buf); -+ return NULL; -+ } -+ -+ /* check the signature. Is is PMGL or PMGI? */ -+ if (!((buf[0] == 0x50) && (buf[1] == 0x4D) && (buf[2] == 0x47) && -+ ((buf[3] == 0x4C) || (buf[3] == 0x49)))) -+ { -+ self->error = MSPACK_ERR_SEEK; -+ sys->free(buf); -+ return NULL; -+ } -+ -+ /* all OK. Store chunk in cache and return it */ -+ return chm->chunk_cache[chunk_num] = buf; -+} -+ -+/* searches a PMGI/PMGL chunk for a given filename entry. Returns -1 on -+ * data format error, 0 if entry definitely not found, 1 if entry -+ * found. In the latter case, *result and *result_end are set pointing -+ * to that entry's data (either the "next chunk" ENCINT for a PMGI or -+ * the section, offset and length ENCINTs for a PMGL). -+ * -+ * In the case of PMGL chunks, the entry has definitely been -+ * found. In the case of PMGI chunks, the entry which points to the -+ * chunk that may eventually contain that entry has been found. -+ */ -+static int search_chunk(struct mschmd_header *chm, -+ const unsigned char *chunk, -+ const char *filename, -+ const unsigned char **result, -+ const unsigned char **result_end) -+{ -+ const unsigned char *start, *end, *p; -+ unsigned int qr_size, num_entries, qr_entries, qr_density, name_len; -+ unsigned int L, R, M, sec, fname_len, entries_off, is_pmgl; -+ int cmp; -+ -+ fname_len = strlen(filename); -+ -+ /* PMGL chunk or PMGI chunk? (note: read_chunk() has already -+ * checked the rest of the characters in the chunk signature) */ -+ if (chunk[3] == 0x4C) { -+ is_pmgl = 1; -+ entries_off = pmgl_Entries; -+ } -+ else { -+ is_pmgl = 0; -+ entries_off = pmgi_Entries; -+ } -+ -+ /* Step 1: binary search first filename of each QR entry -+ * - target filename == entry -+ * found file -+ * - target filename < all entries -+ * file not found -+ * - target filename > all entries -+ * proceed to step 2 using final entry -+ * - target filename between two searched entries -+ * proceed to step 2 -+ */ -+ qr_size = EndGetI32(&chunk[pmgl_QuickRefSize]); -+ start = &chunk[chm->chunk_size - 2]; -+ end = &chunk[chm->chunk_size - qr_size]; -+ num_entries = EndGetI16(start); -+ qr_density = 1 + (1 << chm->density); -+ qr_entries = (num_entries + qr_density-1) / qr_density; -+ -+ if (num_entries == 0) { -+ D(("chunk has no entries")) -+ return -1; -+ } -+ -+ if (qr_size > chm->chunk_size) { -+ D(("quickref size > chunk size")) -+ return -1; -+ } -+ -+ *result_end = end; -+ -+ if (((int)qr_entries * 2) > (start - end)) { -+ D(("WARNING; more quickrefs than quickref space")) -+ qr_entries = 0; /* but we can live with it */ -+ } -+ -+ if (qr_entries > 0) { -+ L = 0; -+ R = qr_entries - 1; -+ do { -+ /* pick new midpoint */ -+ M = (L + R) >> 1; -+ -+ /* compare filename with entry QR points to */ -+ p = &chunk[entries_off + (M ? EndGetI16(start - (M << 1)) : 0)]; -+ READ_ENCINT(name_len); -+ if (p + name_len > end) goto chunk_end; -+ cmp = compare(filename, (char *)p, fname_len, name_len); -+ -+ if (cmp == 0) break; -+ else if (cmp < 0) { if (M) R = M - 1; else return 0; } -+ else if (cmp > 0) L = M + 1; -+ } while (L <= R); -+ M = (L + R) >> 1; -+ -+ if (cmp == 0) { -+ /* exact match! */ -+ p += name_len; -+ *result = p; -+ return 1; -+ } -+ -+ /* otherwise, read the group of entries for QR entry M */ -+ p = &chunk[entries_off + (M ? EndGetI16(start - (M << 1)) : 0)]; -+ num_entries -= (M * qr_density); -+ if (num_entries > qr_density) num_entries = qr_density; -+ } -+ else { -+ p = &chunk[entries_off]; -+ } -+ -+ /* Step 2: linear search through the set of entries reached in step 1. -+ * - filename == any entry -+ * found entry -+ * - filename < all entries (PMGI) or any entry (PMGL) -+ * entry not found, stop now -+ * - filename > all entries -+ * entry not found (PMGL) / maybe found (PMGI) -+ * - -+ */ -+ *result = NULL; -+ while (num_entries-- > 0) { -+ READ_ENCINT(name_len); -+ if (p + name_len > end) goto chunk_end; -+ cmp = compare(filename, (char *)p, fname_len, name_len); -+ p += name_len; -+ -+ if (cmp == 0) { -+ /* entry found */ -+ *result = p; -+ return 1; -+ } -+ -+ if (cmp < 0) { -+ /* entry not found (PMGL) / maybe found (PMGI) */ -+ break; -+ } -+ -+ /* read and ignore the rest of this entry */ -+ if (is_pmgl) { -+ READ_ENCINT(R); /* skip section */ -+ READ_ENCINT(R); /* skip offset */ -+ READ_ENCINT(R); /* skip length */ -+ } -+ else { -+ *result = p; /* store potential final result */ -+ READ_ENCINT(R); /* skip chunk number */ -+ } -+ } -+ -+ /* PMGL? not found. PMGI? maybe found */ -+ return (is_pmgl) ? 0 : (*result ? 1 : 0); -+ -+ chunk_end: -+ D(("reached end of chunk data while searching")) -+ return -1; -+} -+ -+#if HAVE_TOWLOWER -+# if HAVE_WCTYPE_H -+# include -+# endif -+# define TOLOWER(x) towlower(x) -+#elif HAVE_TOLOWER -+# if HAVE_CTYPE_H -+# include -+# endif -+# define TOLOWER(x) tolower(x) -+#else -+# define TOLOWER(x) (((x)<0||(x)>256)?(x):mspack_tolower_map[(x)]) -+/* Map of char -> lowercase char for the first 256 chars. Generated with: -+ * LC_CTYPE=en_GB.utf-8 perl -Mlocale -le 'print map{ord(lc chr).","} 0..255' -+ */ -+static const unsigned char mspack_tolower_map[256] = { -+ 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27, -+ 28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52, -+ 53,54,55,56,57,58,59,60,61,62,63,64,97,98,99,100,101,102,103,104,105,106, -+ 107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,91,92,93,94, -+ 95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114, -+ 115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133, -+ 134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152, -+ 153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171, -+ 172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190, -+ 191,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241, -+ 242,243,244,245,246,215,248,249,250,251,252,253,254,223,224,225,226,227,228, -+ 229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247, -+ 248,249,250,251,252,253,254,255 -+}; -+#endif -+ -+/* decodes a UTF-8 character from s[] into c. Will not read past e. */ -+#define GET_UTF8_CHAR(s, e, c) do { \ -+ unsigned char x = *s++; \ -+ if (x < 0x80) c = x; \ -+ else if (x < 0xC0) c = -1; \ -+ else if (x < 0xE0) { \ -+ c = (s >= e) ? -1 : ((x & 0x1F) << 6) | (*s++ & 0x3F); \ -+ } \ -+ else if (x < 0xF0) { \ -+ c = (s+2 > e) ? -1 : ((x & 0x0F) << 12) | ((s[0] & 0x3F) << 6) \ -+ | (s[1] & 0x3F); \ -+ s += 2; \ -+ } \ -+ else if (x < 0xF8) { \ -+ c = (s+3 > e) ? -1 : ((x & 0x07) << 18) | ((s[0] & 0x3F) << 12) \ -+ | ((s[1] & 0x3F) << 6) | (s[2] & 0x3F); \ -+ s += 3; \ -+ } \ -+ else if (x < 0xFC) { \ -+ c = (s+4 > e) ? -1 : ((x & 0x03) << 24) | ((s[0] & 0x3F) << 18) \ -+ | ((s[1] & 0x3F) << 12)|((s[2] & 0x3F) << 6)|(s[3] & 0x3F); \ -+ s += 4; \ -+ } \ -+ else if (x < 0xFE) { \ -+ c = (s+5>e)?-1:((x&1)<<30)|((s[0]&0x3F)<<24)|((s[1]&0x3F)<<18)| \ -+ ((s[2] & 0x3F) << 12) | ((s[3] & 0x3F) << 6)|(s[4] & 0x3F); \ -+ s += 5; \ -+ } \ -+ else c = -1; \ -+} while (0) -+ -+/* case-insensitively compares two UTF8 encoded strings. String length for -+ * both strings must be provided, null bytes are not terminators */ -+static inline int compare(const char *s1, const char *s2, int l1, int l2) { -+ register const unsigned char *p1 = (const unsigned char *) s1; -+ register const unsigned char *p2 = (const unsigned char *) s2; -+ register const unsigned char *e1 = p1 + l1, *e2 = p2 + l2; -+ int c1, c2; -+ -+ while (p1 < e1 && p2 < e2) { -+ GET_UTF8_CHAR(p1, e1, c1); -+ GET_UTF8_CHAR(p2, e2, c2); -+ if (c1 == c2) continue; -+ c1 = TOLOWER(c1); -+ c2 = TOLOWER(c2); -+ if (c1 != c2) return c1 - c2; -+ } -+ return l1 - l2; -+} -+ -+ -+/*************************************** -+ * CHMD_EXTRACT -+ *************************************** -+ * extracts a file from a CHM helpfile -+ */ -+static int chmd_extract(struct mschm_decompressor *base, -+ struct mschmd_file *file, const char *filename) -+{ -+ struct mschm_decompressor_p *self = (struct mschm_decompressor_p *) base; -+ struct mspack_system *sys; -+ struct mschmd_header *chm; -+ struct mspack_file *fh; -+ off_t bytes; -+ -+ if (!self) return MSPACK_ERR_ARGS; -+ if (!file || !file->section) return self->error = MSPACK_ERR_ARGS; -+ sys = self->system; -+ chm = file->section->chm; -+ -+ /* create decompression state if it doesn't exist */ -+ if (!self->d) { -+ self->d = (struct mschmd_decompress_state *) sys->alloc(sys, sizeof(struct mschmd_decompress_state)); -+ if (!self->d) return self->error = MSPACK_ERR_NOMEMORY; -+ self->d->chm = chm; -+ self->d->offset = 0; -+ self->d->state = NULL; -+ self->d->sys = *sys; -+ self->d->sys.write = &chmd_sys_write; -+ self->d->infh = NULL; -+ self->d->outfh = NULL; -+ } -+ -+ /* open input chm file if not open, or the open one is a different chm */ -+ if (!self->d->infh || (self->d->chm != chm)) { -+ if (self->d->infh) sys->close(self->d->infh); -+ if (self->d->state) lzxd_free(self->d->state); -+ self->d->chm = chm; -+ self->d->offset = 0; -+ self->d->state = NULL; -+ self->d->infh = sys->open(sys, chm->filename, MSPACK_SYS_OPEN_READ); -+ if (!self->d->infh) return self->error = MSPACK_ERR_OPEN; -+ } -+ -+ /* open file for output */ -+ if (!(fh = sys->open(sys, filename, MSPACK_SYS_OPEN_WRITE))) { -+ return self->error = MSPACK_ERR_OPEN; -+ } -+ -+ /* if file is empty, simply creating it is enough */ -+ if (!file->length) { -+ sys->close(fh); -+ return self->error = MSPACK_ERR_OK; -+ } -+ -+ self->error = MSPACK_ERR_OK; -+ -+ switch (file->section->id) { -+ case 0: /* Uncompressed section file */ -+ /* simple seek + copy */ -+ if (sys->seek(self->d->infh, file->section->chm->sec0.offset -+ + file->offset, MSPACK_SYS_SEEK_START)) -+ { -+ self->error = MSPACK_ERR_SEEK; -+ } -+ else { -+ unsigned char buf[512]; -+ off_t length = file->length; -+ while (length > 0) { -+ int run = sizeof(buf); -+ if ((off_t)run > length) run = (int)length; -+ if (sys->read(self->d->infh, &buf[0], run) != run) { -+ self->error = MSPACK_ERR_READ; -+ break; -+ } -+ if (sys->write(fh, &buf[0], run) != run) { -+ self->error = MSPACK_ERR_WRITE; -+ break; -+ } -+ length -= run; -+ } -+ } -+ break; -+ -+ case 1: /* MSCompressed section file */ -+ /* (re)initialise compression state if we it is not yet initialised, -+ * or we have advanced too far and have to backtrack -+ */ -+ if (!self->d->state || (file->offset < self->d->offset)) { -+ if (self->d->state) { -+ lzxd_free(self->d->state); -+ self->d->state = NULL; -+ } -+ if (chmd_init_decomp(self, file)) break; -+ } -+ -+ /* seek to input data */ -+ if (sys->seek(self->d->infh, self->d->inoffset, MSPACK_SYS_SEEK_START)) { -+ self->error = MSPACK_ERR_SEEK; -+ break; -+ } -+ -+ /* get to correct offset. */ -+ self->d->outfh = NULL; -+ if ((bytes = file->offset - self->d->offset)) { -+ self->error = lzxd_decompress(self->d->state, bytes); -+ } -+ -+ /* if getting to the correct offset was error free, unpack file */ -+ if (!self->error) { -+ self->d->outfh = fh; -+ self->error = lzxd_decompress(self->d->state, file->length); -+ } -+ -+ /* save offset in input source stream, in case there is a section 0 -+ * file between now and the next section 1 file extracted */ -+ self->d->inoffset = sys->tell(self->d->infh); -+ -+ /* if an LZX error occured, the LZX decompressor is now useless */ -+ if (self->error) { -+ if (self->d->state) lzxd_free(self->d->state); -+ self->d->state = NULL; -+ } -+ break; -+ } -+ -+ sys->close(fh); -+ return self->error; -+} -+ -+/*************************************** -+ * CHMD_SYS_WRITE -+ *************************************** -+ * chmd_sys_write is the internal writer function which the decompressor -+ * uses. If either writes data to disk (self->d->outfh) with the real -+ * sys->write() function, or does nothing with the data when -+ * self->d->outfh == NULL. advances self->d->offset. -+ */ -+static int chmd_sys_write(struct mspack_file *file, void *buffer, int bytes) { -+ struct mschm_decompressor_p *self = (struct mschm_decompressor_p *) file; -+ self->d->offset += bytes; -+ if (self->d->outfh) { -+ return self->system->write(self->d->outfh, buffer, bytes); -+ } -+ return bytes; -+} -+ -+/*************************************** -+ * CHMD_INIT_DECOMP -+ *************************************** -+ * Initialises the LZX decompressor to decompress the compressed stream, -+ * from the nearest reset offset and length that is needed for the given -+ * file. -+ */ -+static int chmd_init_decomp(struct mschm_decompressor_p *self, -+ struct mschmd_file *file) -+{ -+ int window_size, window_bits, reset_interval, entry, err; -+ struct mspack_system *sys = self->system; -+ struct mschmd_sec_mscompressed *sec; -+ unsigned char *data; -+ off_t length, offset; -+ -+ sec = (struct mschmd_sec_mscompressed *) file->section; -+ -+ /* ensure we have a mscompressed content section */ -+ err = find_sys_file(self, sec, &sec->content, content_name); -+ if (err) return self->error = err; -+ -+ /* ensure we have a ControlData file */ -+ err = find_sys_file(self, sec, &sec->control, control_name); -+ if (err) return self->error = err; -+ -+ /* read ControlData */ -+ if (sec->control->length < lzxcd_SIZEOF) { -+ D(("ControlData file is too short")) -+ return self->error = MSPACK_ERR_DATAFORMAT; -+ } -+ if (!(data = read_sys_file(self, sec->control))) { -+ D(("can't read mscompressed control data file")) -+ return self->error; -+ } -+ -+ /* check LZXC signature */ -+ if (EndGetI32(&data[lzxcd_Signature]) != 0x43585A4C) { -+ sys->free(data); -+ return self->error = MSPACK_ERR_SIGNATURE; -+ } -+ -+ /* read reset_interval and window_size and validate version number */ -+ switch (EndGetI32(&data[lzxcd_Version])) { -+ case 1: -+ reset_interval = EndGetI32(&data[lzxcd_ResetInterval]); -+ window_size = EndGetI32(&data[lzxcd_WindowSize]); -+ break; -+ case 2: -+ reset_interval = EndGetI32(&data[lzxcd_ResetInterval]) * LZX_FRAME_SIZE; -+ window_size = EndGetI32(&data[lzxcd_WindowSize]) * LZX_FRAME_SIZE; -+ break; -+ default: -+ D(("bad controldata version")) -+ sys->free(data); -+ return self->error = MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* free ControlData */ -+ sys->free(data); -+ -+ /* find window_bits from window_size */ -+ switch (window_size) { -+ case 0x008000: window_bits = 15; break; -+ case 0x010000: window_bits = 16; break; -+ case 0x020000: window_bits = 17; break; -+ case 0x040000: window_bits = 18; break; -+ case 0x080000: window_bits = 19; break; -+ case 0x100000: window_bits = 20; break; -+ case 0x200000: window_bits = 21; break; -+ default: -+ D(("bad controldata window size")) -+ return self->error = MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* validate reset_interval */ -+ if (reset_interval % LZX_FRAME_SIZE) { -+ D(("bad controldata reset interval")) -+ return self->error = MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* which reset table entry would we like? */ -+ entry = file->offset / reset_interval; -+ /* convert from reset interval multiple (usually 64k) to 32k frames */ -+ entry *= reset_interval / LZX_FRAME_SIZE; -+ -+ /* read the reset table entry */ -+ if (read_reset_table(self, sec, entry, &length, &offset)) { -+ /* the uncompressed length given in the reset table is dishonest. -+ * the uncompressed data is always padded out from the given -+ * uncompressed length up to the next reset interval */ -+ length += reset_interval - 1; -+ length &= -reset_interval; -+ } -+ else { -+ /* if we can't read the reset table entry, just start from -+ * the beginning. Use spaninfo to get the uncompressed length */ -+ entry = 0; -+ offset = 0; -+ err = read_spaninfo(self, sec, &length); -+ } -+ if (err) return self->error = err; -+ -+ /* get offset of compressed data stream: -+ * = offset of uncompressed section from start of file -+ * + offset of compressed stream from start of uncompressed section -+ * + offset of chosen reset interval from start of compressed stream */ -+ self->d->inoffset = file->section->chm->sec0.offset + sec->content->offset + offset; -+ -+ /* set start offset and overall remaining stream length */ -+ self->d->offset = entry * LZX_FRAME_SIZE; -+ length -= self->d->offset; -+ -+ /* initialise LZX stream */ -+ self->d->state = lzxd_init(&self->d->sys, self->d->infh, -+ (struct mspack_file *) self, window_bits, -+ reset_interval / LZX_FRAME_SIZE, -+ 4096, length, 0); -+ if (!self->d->state) self->error = MSPACK_ERR_NOMEMORY; -+ return self->error; -+} -+ -+/*************************************** -+ * READ_RESET_TABLE -+ *************************************** -+ * Reads one entry out of the reset table. Also reads the uncompressed -+ * data length. Writes these to offset_ptr and length_ptr respectively. -+ * Returns non-zero for success, zero for failure. -+ */ -+static int read_reset_table(struct mschm_decompressor_p *self, -+ struct mschmd_sec_mscompressed *sec, -+ int entry, off_t *length_ptr, off_t *offset_ptr) -+{ -+ struct mspack_system *sys = self->system; -+ unsigned char *data; -+ unsigned int pos, entrysize; -+ -+ /* do we have a ResetTable file? */ -+ int err = find_sys_file(self, sec, &sec->rtable, rtable_name); -+ if (err) return 0; -+ -+ /* read ResetTable file */ -+ if (sec->rtable->length < lzxrt_headerSIZEOF) { -+ D(("ResetTable file is too short")) -+ return 0; -+ } -+ if (!(data = read_sys_file(self, sec->rtable))) { -+ D(("can't read reset table")) -+ return 0; -+ } -+ -+ /* check sanity of reset table */ -+ if (EndGetI32(&data[lzxrt_FrameLen]) != LZX_FRAME_SIZE) { -+ D(("bad reset table frame length")) -+ sys->free(data); -+ return 0; -+ } -+ -+ /* get the uncompressed length of the LZX stream */ -+ if (read_off64(length_ptr, &data[lzxrt_UncompLen], sys, self->d->infh)) { -+ sys->free(data); -+ return 0; -+ } -+ -+ entrysize = EndGetI32(&data[lzxrt_EntrySize]); -+ pos = EndGetI32(&data[lzxrt_TableOffset]) + (entry * entrysize); -+ -+ /* ensure reset table entry for this offset exists */ -+ if (entry < EndGetI32(&data[lzxrt_NumEntries]) && -+ pos <= (sec->rtable->length - entrysize)) -+ { -+ switch (entrysize) { -+ case 4: -+ *offset_ptr = EndGetI32(&data[pos]); -+ err = 0; -+ break; -+ case 8: -+ err = read_off64(offset_ptr, &data[pos], sys, self->d->infh); -+ break; -+ default: -+ D(("reset table entry size neither 4 nor 8")) -+ err = 1; -+ break; -+ } -+ } -+ else { -+ D(("bad reset interval")) -+ err = 1; -+ } -+ -+ /* free the reset table */ -+ sys->free(data); -+ -+ /* return success */ -+ return (err == 0); -+} -+ -+/*************************************** -+ * READ_SPANINFO -+ *************************************** -+ * Reads the uncompressed data length from the spaninfo file. -+ * Returns zero for success or a non-zero error code for failure. -+ */ -+static int read_spaninfo(struct mschm_decompressor_p *self, -+ struct mschmd_sec_mscompressed *sec, -+ off_t *length_ptr) -+{ -+ struct mspack_system *sys = self->system; -+ unsigned char *data; -+ -+ /* find SpanInfo file */ -+ int err = find_sys_file(self, sec, &sec->spaninfo, spaninfo_name); -+ if (err) return MSPACK_ERR_DATAFORMAT; -+ -+ /* check it's large enough */ -+ if (sec->spaninfo->length != 8) { -+ D(("SpanInfo file is wrong size")) -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* read the SpanInfo file */ -+ if (!(data = read_sys_file(self, sec->spaninfo))) { -+ D(("can't read SpanInfo file")) -+ return self->error; -+ } -+ -+ /* get the uncompressed length of the LZX stream */ -+ err = read_off64(length_ptr, data, sys, self->d->infh); -+ -+ sys->free(data); -+ return (err) ? MSPACK_ERR_DATAFORMAT : MSPACK_ERR_OK; -+} -+ -+/*************************************** -+ * FIND_SYS_FILE -+ *************************************** -+ * Uses chmd_fast_find to locate a system file, and fills out that system -+ * file's entry and links it into the list of system files. Returns zero -+ * for success, non-zero for both failure and the file not existing. -+ */ -+static int find_sys_file(struct mschm_decompressor_p *self, -+ struct mschmd_sec_mscompressed *sec, -+ struct mschmd_file **f_ptr, const char *name) -+{ -+ struct mspack_system *sys = self->system; -+ struct mschmd_file result; -+ -+ /* already loaded */ -+ if (*f_ptr) return MSPACK_ERR_OK; -+ -+ /* try using fast_find to find the file - return DATAFORMAT error if -+ * it fails, or successfully doesn't find the file */ -+ if (chmd_fast_find((struct mschm_decompressor *) self, sec->base.chm, -+ name, &result, (int)sizeof(result)) || !result.section) -+ { -+ return MSPACK_ERR_DATAFORMAT; -+ } -+ -+ if (!(*f_ptr = (struct mschmd_file *) sys->alloc(sys, sizeof(result)))) { -+ return MSPACK_ERR_NOMEMORY; -+ } -+ -+ /* copy result */ -+ *(*f_ptr) = result; -+ (*f_ptr)->filename = (char *) name; -+ -+ /* link file into sysfiles list */ -+ (*f_ptr)->next = sec->base.chm->sysfiles; -+ sec->base.chm->sysfiles = *f_ptr; -+ return MSPACK_ERR_OK; -+} -+ -+/*************************************** -+ * READ_SYS_FILE -+ *************************************** -+ * Allocates memory for a section 0 (uncompressed) file and reads it into -+ * memory. -+ */ -+static unsigned char *read_sys_file(struct mschm_decompressor_p *self, -+ struct mschmd_file *file) -+{ -+ struct mspack_system *sys = self->system; -+ unsigned char *data = NULL; -+ int len; -+ -+ if (!file || !file->section || (file->section->id != 0)) { -+ self->error = MSPACK_ERR_DATAFORMAT; -+ return NULL; -+ } -+ -+ len = (int) file->length; -+ -+ if (!(data = (unsigned char *) sys->alloc(sys, (size_t) len))) { -+ self->error = MSPACK_ERR_NOMEMORY; -+ return NULL; -+ } -+ if (sys->seek(self->d->infh, file->section->chm->sec0.offset -+ + file->offset, MSPACK_SYS_SEEK_START)) -+ { -+ self->error = MSPACK_ERR_SEEK; -+ sys->free(data); -+ return NULL; -+ } -+ if (sys->read(self->d->infh, data, len) != len) { -+ self->error = MSPACK_ERR_READ; -+ sys->free(data); -+ return NULL; -+ } -+ return data; -+} -+ -+/*************************************** -+ * CHMD_ERROR -+ *************************************** -+ * returns the last error that occurred -+ */ -+static int chmd_error(struct mschm_decompressor *base) { -+ struct mschm_decompressor_p *self = (struct mschm_decompressor_p *) base; -+ return (self) ? self->error : MSPACK_ERR_ARGS; -+} -+ -+/*************************************** -+ * READ_OFF64 -+ *************************************** -+ * Reads a 64-bit signed integer from memory in Intel byte order. -+ * If running on a system with a 64-bit off_t, this is simply done. -+ * If running on a system with a 32-bit off_t, offsets up to 0x7FFFFFFF -+ * are accepted, offsets beyond that cause an error message. -+ */ -+static int read_off64(off_t *var, unsigned char *mem, -+ struct mspack_system *sys, struct mspack_file *fh) -+{ -+#ifdef LARGEFILE_SUPPORT -+ *var = EndGetI64(mem); -+#else -+ *var = EndGetI32(mem); -+ if ((*var & 0x80000000) || EndGetI32(mem+4)) { -+ sys->message(fh, (char *)largefile_msg); -+ return 1; -+ } -+#endif -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/crc32.c b/libclamav/libmspack-0.4alpha/mspack/crc32.c -new file mode 100644 -index 000000000000..4bb0ef49ba29 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/crc32.c -@@ -0,0 +1,95 @@ -+/* -+ * COPYRIGHT (C) 1986 Gary S. Brown. You may use this program, or -+ * code or tables extracted from it, as desired without restriction. -+ * -+ * First, the polynomial itself and its table of feedback terms. The -+ * polynomial is -+ * X^32+X^26+X^23+X^22+X^16+X^12+X^11+X^10+X^8+X^7+X^5+X^4+X^2+X^1+X^0 -+ * -+ * Note that we take it "backwards" and put the highest-order term in -+ * the lowest-order bit. The X^32 term is "implied"; the LSB is the -+ * X^31 term, etc. The X^0 term (usually shown as "+1") results in -+ * the MSB being 1 -+ * -+ * Note that the usual hardware shift register implementation, which -+ * is what we're using (we're merely optimizing it by doing eight-bit -+ * chunks at a time) shifts bits into the lowest-order term. In our -+ * implementation, that means shifting towards the right. Why do we -+ * do it this way? Because the calculated CRC must be transmitted in -+ * order from highest-order term to lowest-order term. UARTs transmit -+ * characters in order from LSB to MSB. By storing the CRC this way -+ * we hand it to the UART in the order low-byte to high-byte; the UART -+ * sends each low-bit to hight-bit; and the result is transmission bit -+ * by bit from highest- to lowest-order term without requiring any bit -+ * shuffling on our part. Reception works similarly -+ * -+ * The feedback terms table consists of 256, 32-bit entries. Notes -+ * -+ * The table can be generated at runtime if desired; code to do so -+ * is shown later. It might not be obvious, but the feedback -+ * terms simply represent the results of eight shift/xor opera -+ * tions for all combinations of data and CRC register values -+ * -+ * The values must be right-shifted by eight bits by the "updcrc -+ * logic; the shift must be unsigned (bring in zeroes). On some -+ * hardware you could probably optimize the shift in assembler by -+ * using byte-swap instructions -+ * polynomial $edb88320 -+ */ -+ -+#include "crc32.h" -+ -+const unsigned int crc32_table[256] = { -+ 0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L, -+ 0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L, -+ 0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L, -+ 0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL, -+ 0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L, -+ 0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L, -+ 0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L, -+ 0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL, -+ 0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L, -+ 0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL, -+ 0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L, -+ 0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L, -+ 0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L, -+ 0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL, -+ 0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL, -+ 0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L, -+ 0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL, -+ 0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L, -+ 0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L, -+ 0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L, -+ 0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL, -+ 0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L, -+ 0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L, -+ 0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL, -+ 0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L, -+ 0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L, -+ 0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L, -+ 0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L, -+ 0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L, -+ 0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL, -+ 0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL, -+ 0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L, -+ 0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L, -+ 0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL, -+ 0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL, -+ 0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L, -+ 0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL, -+ 0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L, -+ 0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL, -+ 0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L, -+ 0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL, -+ 0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L, -+ 0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L, -+ 0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL, -+ 0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L, -+ 0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L, -+ 0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L, -+ 0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L, -+ 0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L, -+ 0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L, -+ 0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL, -+ 0x2d02ef8dL -+}; -diff --git a/libclamav/libmspack-0.4alpha/mspack/crc32.h b/libclamav/libmspack-0.4alpha/mspack/crc32.h -new file mode 100644 -index 000000000000..8415f2eef602 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/crc32.h -@@ -0,0 +1,17 @@ -+#ifndef CRC32_H -+#define CRC32_H -+ -+extern const unsigned int crc32_table[256]; -+ -+/* Return a 32-bit CRC of the contents of the buffer. */ -+ -+static inline unsigned int -+crc32(unsigned int val, const void *ss, int len) -+{ -+ const unsigned char *s = ss; -+ while (--len >= 0) -+ val = crc32_table[(val ^ *s++) & 0xff] ^ (val >> 8); -+ return val; -+} -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/des.h b/libclamav/libmspack-0.4alpha/mspack/des.h -new file mode 100644 -index 000000000000..64a1ed27e4d4 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/des.h -@@ -0,0 +1,15 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_DES_H -+#define MSPACK_DES_H 1 -+ -+/* DES encryption / decryption definitions */ -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/hlp.h b/libclamav/libmspack-0.4alpha/mspack/hlp.h -new file mode 100644 -index 000000000000..b7486fa16068 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/hlp.h -@@ -0,0 +1,33 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_HLP_H -+#define MSPACK_HLP_H 1 -+ -+#include -+ -+/* generic HLP definitions */ -+ -+/* HLP compression definitions */ -+ -+struct mshlp_compressor_p { -+ struct mshlp_compressor base; -+ struct mspack_system *system; -+ /* todo */ -+}; -+ -+/* HLP decompression definitions */ -+ -+struct mshlp_decompressor_p { -+ struct mshlp_decompressor base; -+ struct mspack_system *system; -+ /* todo */ -+}; -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/hlpc.c b/libclamav/libmspack-0.4alpha/mspack/hlpc.c -new file mode 100644 -index 000000000000..60eabfe207d8 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/hlpc.c -@@ -0,0 +1,24 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* HLP compression implementation */ -+ -+#include -+#include -+ -+struct mshlp_compressor * -+ mspack_create_hlp_compressor(struct mspack_system *sys) -+{ -+ /* todo */ -+ return NULL; -+} -+ -+void mspack_destroy_hlp_compressor(struct mshlp_compressor *self) { -+ /* todo */ -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/hlpd.c b/libclamav/libmspack-0.4alpha/mspack/hlpd.c -new file mode 100644 -index 000000000000..43354f008f4f ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/hlpd.c -@@ -0,0 +1,24 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* HLP decompression implementation */ -+ -+#include -+#include -+ -+struct mshlp_decompressor * -+ mspack_create_hlp_decompressor(struct mspack_system *sys) -+{ -+ /* todo */ -+ return NULL; -+} -+ -+void mspack_destroy_hlp_decompressor(struct mshlp_decompressor *self) { -+ /* todo */ -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/kwaj.h b/libclamav/libmspack-0.4alpha/mspack/kwaj.h -new file mode 100644 -index 000000000000..09673c07793e ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/kwaj.h -@@ -0,0 +1,118 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2010 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_KWAJ_H -+#define MSPACK_KWAJ_H 1 -+ -+#include -+ -+/* generic KWAJ definitions */ -+#define kwajh_Signature1 (0x00) -+#define kwajh_Signature2 (0x04) -+#define kwajh_CompMethod (0x08) -+#define kwajh_DataOffset (0x0a) -+#define kwajh_Flags (0x0c) -+#define kwajh_SIZEOF (0x0e) -+ -+/* KWAJ compression definitions */ -+ -+struct mskwaj_compressor_p { -+ struct mskwaj_compressor base; -+ struct mspack_system *system; -+ /* todo */ -+ int param[2]; /* !!! MATCH THIS TO NUM OF PARAMS IN MSPACK.H !!! */ -+ int error; -+}; -+ -+/* KWAJ decompression definitions */ -+ -+struct mskwaj_decompressor_p { -+ struct mskwaj_decompressor base; -+ struct mspack_system *system; -+ int error; -+}; -+ -+struct mskwajd_header_p { -+ struct mskwajd_header base; -+ struct mspack_file *fh; -+}; -+ -+/* input buffer size during decompression - not worth parameterising IMHO */ -+#define KWAJ_INPUT_SIZE (2048) -+ -+/* huffman codes that are 9 bits or less are decoded immediately */ -+#define KWAJ_TABLEBITS (9) -+ -+/* number of codes in each huffman table */ -+#define KWAJ_MATCHLEN1_SYMS (16) -+#define KWAJ_MATCHLEN2_SYMS (16) -+#define KWAJ_LITLEN_SYMS (32) -+#define KWAJ_OFFSET_SYMS (64) -+#define KWAJ_LITERAL_SYMS (256) -+ -+/* define decoding table sizes */ -+#define KWAJ_TABLESIZE (1 << KWAJ_TABLEBITS) -+#if KWAJ_TABLESIZE < (KWAJ_MATCHLEN1_SYMS * 2) -+# define KWAJ_MATCHLEN1_TBLSIZE (KWAJ_MATCHLEN1_SYMS * 4) -+#else -+# define KWAJ_MATCHLEN1_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_MATCHLEN1_SYMS * 2)) -+#endif -+#if KWAJ_TABLESIZE < (KWAJ_MATCHLEN2_SYMS * 2) -+# define KWAJ_MATCHLEN2_TBLSIZE (KWAJ_MATCHLEN2_SYMS * 4) -+#else -+# define KWAJ_MATCHLEN2_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_MATCHLEN2_SYMS * 2)) -+#endif -+#if KWAJ_TABLESIZE < (KWAJ_LITLEN_SYMS * 2) -+# define KWAJ_LITLEN_TBLSIZE (KWAJ_LITLEN_SYMS * 4) -+#else -+# define KWAJ_LITLEN_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_LITLEN_SYMS * 2)) -+#endif -+#if KWAJ_TABLESIZE < (KWAJ_OFFSET_SYMS * 2) -+# define KWAJ_OFFSET_TBLSIZE (KWAJ_OFFSET_SYMS * 4) -+#else -+# define KWAJ_OFFSET_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_OFFSET_SYMS * 2)) -+#endif -+#if KWAJ_TABLESIZE < (KWAJ_LITERAL_SYMS * 2) -+# define KWAJ_LITERAL_TBLSIZE (KWAJ_LITERAL_SYMS * 4) -+#else -+# define KWAJ_LITERAL_TBLSIZE (KWAJ_TABLESIZE + (KWAJ_LITERAL_SYMS * 2)) -+#endif -+ -+struct kwajd_stream { -+ /* I/O buffering */ -+ struct mspack_system *sys; -+ struct mspack_file *input; -+ struct mspack_file *output; -+ unsigned char *i_ptr, *i_end; -+ unsigned int bit_buffer, bits_left; -+ int input_end; -+ -+ /* huffman code lengths */ -+ unsigned char MATCHLEN1_len [KWAJ_MATCHLEN1_SYMS]; -+ unsigned char MATCHLEN2_len [KWAJ_MATCHLEN2_SYMS]; -+ unsigned char LITLEN_len [KWAJ_LITLEN_SYMS]; -+ unsigned char OFFSET_len [KWAJ_OFFSET_SYMS]; -+ unsigned char LITERAL_len [KWAJ_LITERAL_SYMS]; -+ -+ /* huffman decoding tables */ -+ unsigned short MATCHLEN1_table [KWAJ_MATCHLEN1_TBLSIZE]; -+ unsigned short MATCHLEN2_table [KWAJ_MATCHLEN2_TBLSIZE]; -+ unsigned short LITLEN_table [KWAJ_LITLEN_TBLSIZE]; -+ unsigned short OFFSET_table [KWAJ_OFFSET_TBLSIZE]; -+ unsigned short LITERAL_table [KWAJ_LITERAL_TBLSIZE]; -+ -+ /* input buffer */ -+ unsigned char inbuf[KWAJ_INPUT_SIZE]; -+ -+ /* history window */ -+ unsigned char window[LZSS_WINDOW_SIZE]; -+}; -+ -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/kwajc.c b/libclamav/libmspack-0.4alpha/mspack/kwajc.c -new file mode 100644 -index 000000000000..b88ed7690a8a ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/kwajc.c -@@ -0,0 +1,24 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* KWAJ compression implementation */ -+ -+#include -+#include -+ -+struct mskwaj_compressor * -+ mspack_create_kwaj_compressor(struct mspack_system *sys) -+{ -+ /* todo */ -+ return NULL; -+} -+ -+void mspack_destroy_kwaj_compressor(struct mskwaj_compressor *self) { -+ /* todo */ -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/kwajd.c b/libclamav/libmspack-0.4alpha/mspack/kwajd.c -new file mode 100644 -index 000000000000..bd4ee87739a0 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/kwajd.c -@@ -0,0 +1,561 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2011 Stuart Caie. -+ * -+ * KWAJ is a format very similar to SZDD. KWAJ method 3 (LZH) was -+ * written by Jeff Johnson. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* KWAJ decompression implementation */ -+ -+#include -+#include -+#include -+ -+/* prototypes */ -+static struct mskwajd_header *kwajd_open( -+ struct mskwaj_decompressor *base, const char *filename); -+static void kwajd_close( -+ struct mskwaj_decompressor *base, struct mskwajd_header *hdr); -+static int kwajd_read_headers( -+ struct mspack_system *sys, struct mspack_file *fh, -+ struct mskwajd_header *hdr); -+static int kwajd_extract( -+ struct mskwaj_decompressor *base, struct mskwajd_header *hdr, -+ const char *filename); -+static int kwajd_decompress( -+ struct mskwaj_decompressor *base, const char *input, const char *output); -+static int kwajd_error( -+ struct mskwaj_decompressor *base); -+ -+static struct kwajd_stream *lzh_init( -+ struct mspack_system *sys, struct mspack_file *in, struct mspack_file *out); -+static int lzh_decompress( -+ struct kwajd_stream *kwaj); -+static void lzh_free( -+ struct kwajd_stream *kwaj); -+static int lzh_read_lens( -+ struct kwajd_stream *kwaj, -+ unsigned int type, unsigned int numsyms, -+ unsigned char *lens, unsigned short *table); -+static int lzh_read_input( -+ struct kwajd_stream *kwaj); -+ -+ -+/*************************************** -+ * MSPACK_CREATE_KWAJ_DECOMPRESSOR -+ *************************************** -+ * constructor -+ */ -+struct mskwaj_decompressor * -+ mspack_create_kwaj_decompressor(struct mspack_system *sys) -+{ -+ struct mskwaj_decompressor_p *self = NULL; -+ -+ if (!sys) sys = mspack_default_system; -+ if (!mspack_valid_system(sys)) return NULL; -+ -+ if ((self = (struct mskwaj_decompressor_p *) sys->alloc(sys, sizeof(struct mskwaj_decompressor_p)))) { -+ self->base.open = &kwajd_open; -+ self->base.close = &kwajd_close; -+ self->base.extract = &kwajd_extract; -+ self->base.decompress = &kwajd_decompress; -+ self->base.last_error = &kwajd_error; -+ self->system = sys; -+ self->error = MSPACK_ERR_OK; -+ } -+ return (struct mskwaj_decompressor *) self; -+} -+ -+/*************************************** -+ * MSPACK_DESTROY_KWAJ_DECOMPRESSOR -+ *************************************** -+ * destructor -+ */ -+void mspack_destroy_kwaj_decompressor(struct mskwaj_decompressor *base) -+{ -+ struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base; -+ if (self) { -+ struct mspack_system *sys = self->system; -+ sys->free(self); -+ } -+} -+ -+/*************************************** -+ * KWAJD_OPEN -+ *************************************** -+ * opens a KWAJ file without decompressing, reads header -+ */ -+static struct mskwajd_header *kwajd_open(struct mskwaj_decompressor *base, -+ const char *filename) -+{ -+ struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base; -+ struct mskwajd_header *hdr; -+ struct mspack_system *sys; -+ struct mspack_file *fh; -+ -+ if (!self) return NULL; -+ sys = self->system; -+ -+ fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ); -+ hdr = (struct mskwajd_header *) sys->alloc(sys, sizeof(struct mskwajd_header_p)); -+ if (fh && hdr) { -+ ((struct mskwajd_header_p *) hdr)->fh = fh; -+ self->error = kwajd_read_headers(sys, fh, hdr); -+ } -+ else { -+ if (!fh) self->error = MSPACK_ERR_OPEN; -+ if (!hdr) self->error = MSPACK_ERR_NOMEMORY; -+ } -+ -+ if (self->error) { -+ if (fh) sys->close(fh); -+ if (hdr) sys->free(hdr); -+ hdr = NULL; -+ } -+ -+ return hdr; -+} -+ -+/*************************************** -+ * KWAJD_CLOSE -+ *************************************** -+ * closes a KWAJ file -+ */ -+static void kwajd_close(struct mskwaj_decompressor *base, -+ struct mskwajd_header *hdr) -+{ -+ struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base; -+ struct mskwajd_header_p *hdr_p = (struct mskwajd_header_p *) hdr; -+ -+ if (!self || !self->system) return; -+ -+ /* close the file handle associated */ -+ self->system->close(hdr_p->fh); -+ -+ /* free the memory associated */ -+ self->system->free(hdr); -+ -+ self->error = MSPACK_ERR_OK; -+} -+ -+/*************************************** -+ * KWAJD_READ_HEADERS -+ *************************************** -+ * reads the headers of a KWAJ format file -+ */ -+static int kwajd_read_headers(struct mspack_system *sys, -+ struct mspack_file *fh, -+ struct mskwajd_header *hdr) -+{ -+ unsigned char buf[16]; -+ int i; -+ -+ /* read in the header */ -+ if (sys->read(fh, &buf[0], kwajh_SIZEOF) != kwajh_SIZEOF) { -+ return MSPACK_ERR_READ; -+ } -+ -+ /* check for "KWAJ" signature */ -+ if (((unsigned int) EndGetI32(&buf[kwajh_Signature1]) != 0x4A41574B) || -+ ((unsigned int) EndGetI32(&buf[kwajh_Signature2]) != 0xD127F088)) -+ { -+ return MSPACK_ERR_SIGNATURE; -+ } -+ -+ /* basic header fields */ -+ hdr->comp_type = EndGetI16(&buf[kwajh_CompMethod]); -+ hdr->data_offset = EndGetI16(&buf[kwajh_DataOffset]); -+ hdr->headers = EndGetI16(&buf[kwajh_Flags]); -+ hdr->length = 0; -+ hdr->filename = NULL; -+ hdr->extra = NULL; -+ hdr->extra_length = 0; -+ -+ /* optional headers */ -+ -+ /* 4 bytes: length of unpacked file */ -+ if (hdr->headers & MSKWAJ_HDR_HASLENGTH) { -+ if (sys->read(fh, &buf[0], 4) != 4) return MSPACK_ERR_READ; -+ hdr->length = EndGetI32(&buf[0]); -+ } -+ -+ /* 2 bytes: unknown purpose */ -+ if (hdr->headers & MSKWAJ_HDR_HASUNKNOWN1) { -+ if (sys->read(fh, &buf[0], 2) != 2) return MSPACK_ERR_READ; -+ } -+ -+ /* 2 bytes: length of section, then [length] bytes: unknown purpose */ -+ if (hdr->headers & MSKWAJ_HDR_HASUNKNOWN2) { -+ if (sys->read(fh, &buf[0], 2) != 2) return MSPACK_ERR_READ; -+ i = EndGetI16(&buf[0]); -+ if (sys->seek(fh, (off_t)i, MSPACK_SYS_SEEK_CUR)) return MSPACK_ERR_SEEK; -+ } -+ -+ /* filename and extension */ -+ if (hdr->headers & (MSKWAJ_HDR_HASFILENAME | MSKWAJ_HDR_HASFILEEXT)) { -+ off_t pos = sys->tell(fh); -+ char *fn = (char *) sys->alloc(sys, (size_t) 13); -+ -+ /* allocate memory for maximum length filename */ -+ if (! fn) return MSPACK_ERR_NOMEMORY; -+ hdr->filename = fn; -+ -+ /* copy filename if present */ -+ if (hdr->headers & MSKWAJ_HDR_HASFILENAME) { -+ if (sys->read(fh, &buf[0], 9) != 9) return MSPACK_ERR_READ; -+ for (i = 0; i < 9; i++, fn++) if (!(*fn = buf[i])) break; -+ pos += (i < 9) ? i+1 : 9; -+ if (sys->seek(fh, pos, MSPACK_SYS_SEEK_START)) -+ return MSPACK_ERR_SEEK; -+ } -+ -+ /* copy extension if present */ -+ if (hdr->headers & MSKWAJ_HDR_HASFILEEXT) { -+ *fn++ = '.'; -+ if (sys->read(fh, &buf[0], 4) != 4) return MSPACK_ERR_READ; -+ for (i = 0; i < 4; i++, fn++) if (!(*fn = buf[i])) break; -+ pos += (i < 4) ? i+1 : 4; -+ if (sys->seek(fh, pos, MSPACK_SYS_SEEK_START)) -+ return MSPACK_ERR_SEEK; -+ } -+ *fn = '\0'; -+ } -+ -+ /* 2 bytes: extra text length then [length] bytes of extra text data */ -+ if (hdr->headers & MSKWAJ_HDR_HASEXTRATEXT) { -+ if (sys->read(fh, &buf[0], 2) != 2) return MSPACK_ERR_READ; -+ i = EndGetI16(&buf[0]); -+ hdr->extra = (char *) sys->alloc(sys, (size_t)i+1); -+ if (! hdr->extra) return MSPACK_ERR_NOMEMORY; -+ if (sys->read(fh, hdr->extra, i) != i) return MSPACK_ERR_READ; -+ hdr->extra[i] = '\0'; -+ hdr->extra_length = i; -+ } -+ return MSPACK_ERR_OK; -+} -+ -+/*************************************** -+ * KWAJD_EXTRACT -+ *************************************** -+ * decompresses a KWAJ file -+ */ -+static int kwajd_extract(struct mskwaj_decompressor *base, -+ struct mskwajd_header *hdr, const char *filename) -+{ -+ struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base; -+ struct mspack_system *sys; -+ struct mspack_file *fh, *outfh; -+ -+ if (!self) return MSPACK_ERR_ARGS; -+ if (!hdr) return self->error = MSPACK_ERR_ARGS; -+ -+ sys = self->system; -+ fh = ((struct mskwajd_header_p *) hdr)->fh; -+ -+ /* seek to the compressed data */ -+ if (sys->seek(fh, hdr->data_offset, MSPACK_SYS_SEEK_START)) { -+ return self->error = MSPACK_ERR_SEEK; -+ } -+ -+ /* open file for output */ -+ if (!(outfh = sys->open(sys, filename, MSPACK_SYS_OPEN_WRITE))) { -+ return self->error = MSPACK_ERR_OPEN; -+ } -+ -+ self->error = MSPACK_ERR_OK; -+ -+ /* decompress based on format */ -+ if (hdr->comp_type == MSKWAJ_COMP_NONE || -+ hdr->comp_type == MSKWAJ_COMP_XOR) -+ { -+ /* NONE is a straight copy. XOR is a copy xored with 0xFF */ -+ unsigned char *buf = (unsigned char *) sys->alloc(sys, (size_t) KWAJ_INPUT_SIZE); -+ if (buf) { -+ int read, i; -+ while ((read = sys->read(fh, buf, KWAJ_INPUT_SIZE)) > 0) { -+ if (hdr->comp_type == MSKWAJ_COMP_XOR) { -+ for (i = 0; i < read; i++) buf[i] ^= 0xFF; -+ } -+ if (sys->write(outfh, buf, read) != read) { -+ self->error = MSPACK_ERR_WRITE; -+ break; -+ } -+ } -+ if (read < 0) self->error = MSPACK_ERR_READ; -+ sys->free(buf); -+ } -+ else { -+ self->error = MSPACK_ERR_NOMEMORY; -+ } -+ } -+ else if (hdr->comp_type == MSKWAJ_COMP_SZDD) { -+ self->error = lzss_decompress(sys, fh, outfh, KWAJ_INPUT_SIZE, -+ LZSS_MODE_EXPAND); -+ } -+ else if (hdr->comp_type == MSKWAJ_COMP_LZH) { -+ struct kwajd_stream *lzh = lzh_init(sys, fh, outfh); -+ self->error = (lzh) ? lzh_decompress(lzh) : MSPACK_ERR_NOMEMORY; -+ lzh_free(lzh); -+ } -+ else if (hdr->comp_type == MSKWAJ_COMP_MSZIP) { -+ struct mszipd_stream *zip = mszipd_init(sys,fh,outfh,KWAJ_INPUT_SIZE,0); -+ self->error = (zip) ? mszipd_decompress_kwaj(zip) : MSPACK_ERR_NOMEMORY; -+ mszipd_free(zip); -+ } -+ else { -+ self->error = MSPACK_ERR_DATAFORMAT; -+ } -+ -+ /* close output file */ -+ sys->close(outfh); -+ -+ return self->error; -+} -+ -+/*************************************** -+ * KWAJD_DECOMPRESS -+ *************************************** -+ * unpacks directly from input to output -+ */ -+static int kwajd_decompress(struct mskwaj_decompressor *base, -+ const char *input, const char *output) -+{ -+ struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base; -+ struct mskwajd_header *hdr; -+ int error; -+ -+ if (!self) return MSPACK_ERR_ARGS; -+ -+ if (!(hdr = kwajd_open(base, input))) return self->error; -+ error = kwajd_extract(base, hdr, output); -+ kwajd_close(base, hdr); -+ return self->error = error; -+} -+ -+/*************************************** -+ * KWAJD_ERROR -+ *************************************** -+ * returns the last error that occurred -+ */ -+static int kwajd_error(struct mskwaj_decompressor *base) -+{ -+ struct mskwaj_decompressor_p *self = (struct mskwaj_decompressor_p *) base; -+ return (self) ? self->error : MSPACK_ERR_ARGS; -+} -+ -+/*************************************** -+ * LZH_INIT, LZH_DECOMPRESS, LZH_FREE -+ *************************************** -+ * unpacks KWAJ method 3 files -+ */ -+ -+/* import bit-reading macros and code */ -+#define BITS_TYPE struct kwajd_stream -+#define BITS_VAR lzh -+#define BITS_ORDER_MSB -+#define BITS_NO_READ_INPUT -+#define READ_BYTES do { \ -+ if (i_ptr >= i_end) { \ -+ if ((err = lzh_read_input(lzh))) return err; \ -+ i_ptr = lzh->i_ptr; \ -+ i_end = lzh->i_end; \ -+ } \ -+ INJECT_BITS(*i_ptr++, 8); \ -+} while (0) -+#include -+ -+/* import huffman-reading macros and code */ -+#define TABLEBITS(tbl) KWAJ_TABLEBITS -+#define MAXSYMBOLS(tbl) KWAJ_##tbl##_SYMS -+#define HUFF_TABLE(tbl,idx) lzh->tbl##_table[idx] -+#define HUFF_LEN(tbl,idx) lzh->tbl##_len[idx] -+#define HUFF_ERROR return MSPACK_ERR_DATAFORMAT -+#include -+ -+/* In the KWAJ LZH format, there is no special 'eof' marker, it just -+ * ends. Depending on how many bits are left in the final byte when -+ * the stream ends, that might be enough to start another literal or -+ * match. The only easy way to detect that we've come to an end is to -+ * guard all bit-reading. We allow fake bits to be read once we reach -+ * the end of the stream, but we check if we then consumed any of -+ * those fake bits, after doing the READ_BITS / READ_HUFFSYM. This -+ * isn't how the default readbits.h read_input() works (it simply lets -+ * 2 fake bytes in then stops), so we implement our own. -+ */ -+#define READ_BITS_SAFE(val, n) do { \ -+ READ_BITS(val, n); \ -+ if (lzh->input_end && bits_left < lzh->input_end) \ -+ return MSPACK_ERR_OK; \ -+} while (0) -+ -+#define READ_HUFFSYM_SAFE(tbl, val) do { \ -+ READ_HUFFSYM(tbl, val); \ -+ if (lzh->input_end && bits_left < lzh->input_end) \ -+ return MSPACK_ERR_OK; \ -+} while (0) -+ -+#define BUILD_TREE(tbl, type) \ -+ STORE_BITS; \ -+ err = lzh_read_lens(lzh, type, MAXSYMBOLS(tbl), \ -+ &HUFF_LEN(tbl,0), &HUFF_TABLE(tbl,0)); \ -+ if (err) return err; \ -+ RESTORE_BITS; \ -+ if (make_decode_table(MAXSYMBOLS(tbl), TABLEBITS(tbl), \ -+ &HUFF_LEN(tbl,0), &HUFF_TABLE(tbl,0))) \ -+ return MSPACK_ERR_DATAFORMAT; -+ -+#define WRITE_BYTE do { \ -+ if (lzh->sys->write(lzh->output, &lzh->window[pos], 1) != 1) \ -+ return MSPACK_ERR_WRITE; \ -+} while (0) -+ -+static struct kwajd_stream *lzh_init(struct mspack_system *sys, -+ struct mspack_file *in, struct mspack_file *out) -+{ -+ struct kwajd_stream *lzh; -+ -+ if (!sys || !in || !out) return NULL; -+ if (!(lzh = (struct kwajd_stream *) sys->alloc(sys, sizeof(struct kwajd_stream)))) return NULL; -+ -+ lzh->sys = sys; -+ lzh->input = in; -+ lzh->output = out; -+ return lzh; -+} -+ -+static int lzh_decompress(struct kwajd_stream *lzh) -+{ -+ register unsigned int bit_buffer; -+ register int bits_left, i; -+ register unsigned short sym; -+ unsigned char *i_ptr, *i_end, lit_run = 0; -+ int j, pos = 0, len, offset, err; -+ unsigned int types[6]; -+ -+ /* reset global state */ -+ INIT_BITS; -+ RESTORE_BITS; -+ memset(&lzh->window[0], LZSS_WINDOW_FILL, (size_t) LZSS_WINDOW_SIZE); -+ -+ /* read 6 encoding types (for byte alignment) but only 5 are needed */ -+ for (i = 0; i < 6; i++) READ_BITS_SAFE(types[i], 4); -+ -+ /* read huffman table symbol lengths and build huffman trees */ -+ BUILD_TREE(MATCHLEN1, types[0]); -+ BUILD_TREE(MATCHLEN2, types[1]); -+ BUILD_TREE(LITLEN, types[2]); -+ BUILD_TREE(OFFSET, types[3]); -+ BUILD_TREE(LITERAL, types[4]); -+ -+ while (!lzh->input_end) { -+ if (lit_run) READ_HUFFSYM_SAFE(MATCHLEN2, len); -+ else READ_HUFFSYM_SAFE(MATCHLEN1, len); -+ -+ if (len > 0) { -+ len += 2; -+ lit_run = 0; /* not the end of a literal run */ -+ READ_HUFFSYM_SAFE(OFFSET, j); offset = j << 6; -+ READ_BITS_SAFE(j, 6); offset |= j; -+ -+ /* copy match as output and into the ring buffer */ -+ while (len-- > 0) { -+ lzh->window[pos] = lzh->window[(pos+4096-offset) & 4095]; -+ WRITE_BYTE; -+ pos++; pos &= 4095; -+ } -+ } -+ else { -+ READ_HUFFSYM_SAFE(LITLEN, len); len++; -+ lit_run = (len == 32) ? 0 : 1; /* end of a literal run? */ -+ while (len-- > 0) { -+ READ_HUFFSYM_SAFE(LITERAL, j); -+ /* copy as output and into the ring buffer */ -+ lzh->window[pos] = j; -+ WRITE_BYTE; -+ pos++; pos &= 4095; -+ } -+ } -+ } -+ return MSPACK_ERR_OK; -+} -+ -+static void lzh_free(struct kwajd_stream *lzh) -+{ -+ struct mspack_system *sys; -+ if (!lzh || !lzh->sys) return; -+ sys = lzh->sys; -+ sys->free(lzh); -+} -+ -+static int lzh_read_lens(struct kwajd_stream *lzh, -+ unsigned int type, unsigned int numsyms, -+ unsigned char *lens, unsigned short *table) -+{ -+ register unsigned int bit_buffer; -+ register int bits_left; -+ unsigned char *i_ptr, *i_end; -+ unsigned int i, c, sel; -+ int err; -+ -+ RESTORE_BITS; -+ switch (type) { -+ case 0: -+ i = numsyms; c = (i==16)?4: (i==32)?5: (i==64)?6: (i==256)?8 :0; -+ for (i = 0; i < numsyms; i++) lens[i] = c; -+ break; -+ -+ case 1: -+ READ_BITS_SAFE(c, 4); lens[0] = c; -+ for (i = 1; i < numsyms; i++) { -+ READ_BITS_SAFE(sel, 1); if (sel == 0) lens[i] = c; -+ else { READ_BITS_SAFE(sel, 1); if (sel == 0) lens[i] = ++c; -+ else { READ_BITS_SAFE(c, 4); lens[i] = c; }} -+ } -+ break; -+ -+ case 2: -+ READ_BITS_SAFE(c, 4); lens[0] = c; -+ for (i = 1; i < numsyms; i++) { -+ READ_BITS_SAFE(sel, 2); -+ if (sel == 3) READ_BITS_SAFE(c, 4); else c += (char) sel-1; -+ lens[i] = c; -+ } -+ break; -+ -+ case 3: -+ for (i = 0; i < numsyms; i++) { -+ READ_BITS_SAFE(c, 4); lens[i] = c; -+ } -+ break; -+ } -+ STORE_BITS; -+ return MSPACK_ERR_OK; -+} -+ -+static int lzh_read_input(struct kwajd_stream *lzh) { -+ int read; -+ if (lzh->input_end) { -+ lzh->input_end += 8; -+ lzh->inbuf[0] = 0; -+ read = 1; -+ } -+ else { -+ read = lzh->sys->read(lzh->input, &lzh->inbuf[0], KWAJ_INPUT_SIZE); -+ if (read < 0) return MSPACK_ERR_READ; -+ if (read == 0) { -+ lzh->input_end = 8; -+ lzh->inbuf[0] = 0; -+ read = 1; -+ } -+ } -+ -+ /* update i_ptr and i_end */ -+ lzh->i_ptr = &lzh->inbuf[0]; -+ lzh->i_end = &lzh->inbuf[read]; -+ return MSPACK_ERR_OK; -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/lit.h b/libclamav/libmspack-0.4alpha/mspack/lit.h -new file mode 100644 -index 000000000000..79ba44d87729 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/lit.h -@@ -0,0 +1,35 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_LIT_H -+#define MSPACK_LIT_H 1 -+ -+#include -+#include -+#include -+ -+/* generic LIT definitions */ -+ -+/* LIT compression definitions */ -+ -+struct mslit_compressor_p { -+ struct mslit_compressor base; -+ struct mspack_system *system; -+ /* todo */ -+}; -+ -+/* LIT decompression definitions */ -+ -+struct mslit_decompressor_p { -+ struct mslit_decompressor base; -+ struct mspack_system *system; -+ /* todo */ -+}; -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/litc.c b/libclamav/libmspack-0.4alpha/mspack/litc.c -new file mode 100644 -index 000000000000..a8a709af07af ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/litc.c -@@ -0,0 +1,24 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* LIT compression implementation */ -+ -+#include -+#include -+ -+struct mslit_compressor * -+ mspack_create_lit_compressor(struct mspack_system *sys) -+{ -+ /* todo */ -+ return NULL; -+} -+ -+void mspack_destroy_lit_compressor(struct mslit_compressor *self) { -+ /* todo */ -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/litd.c b/libclamav/libmspack-0.4alpha/mspack/litd.c -new file mode 100644 -index 000000000000..6e0dc9af27c4 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/litd.c -@@ -0,0 +1,24 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* LIT decompression implementation */ -+ -+#include -+#include -+ -+struct mslit_decompressor * -+ mspack_create_lit_decompressor(struct mspack_system *sys) -+{ -+ /* todo */ -+ return NULL; -+} -+ -+void mspack_destroy_lit_decompressor(struct mslit_decompressor *self) { -+ /* todo */ -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/lzss.h b/libclamav/libmspack-0.4alpha/mspack/lzss.h -new file mode 100644 -index 000000000000..55e761b5bf91 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/lzss.h -@@ -0,0 +1,66 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_LZSS_H -+#define MSPACK_LZSS_H 1 -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* LZSS compression / decompression definitions */ -+ -+#define LZSS_WINDOW_SIZE (4096) -+#define LZSS_WINDOW_FILL (0x20) -+ -+#define LZSS_MODE_EXPAND (0) -+#define LZSS_MODE_MSHELP (1) -+#define LZSS_MODE_QBASIC (2) -+ -+/** -+ * Decompresses an LZSS stream. -+ * -+ * Input bytes will be read in as necessary using the system->read() -+ * function with the input file handle given. This will continue until -+ * system->read() returns 0 bytes, or an error. Errors will be passed -+ * out of the function as MSPACK_ERR_READ errors. Input streams should -+ * convey an "end of input stream" by refusing to supply all the bytes -+ * that LZSS asks for when they reach the end of the stream, rather -+ * than return an error code. -+ * -+ * Output bytes will be passed to the system->write() function, using -+ * the output file handle given. More than one call may be made to -+ * system->write(). -+ * -+ * As EXPAND.EXE (SZDD/KWAJ), Microsoft Help and QBasic have slightly -+ * different encodings for the control byte and matches, a "mode" -+ * parameter is allowed, to choose the encoding. -+ * -+ * @param system an mspack_system structure used to read from -+ * the input stream and write to the output -+ * stream, also to allocate and free memory. -+ * @param input an input stream with the LZSS data. -+ * @param output an output stream to write the decoded data to. -+ * @param input_buffer_size the number of bytes to use as an input -+ * bitstream buffer. -+ * @param mode one of #LZSS_MODE_EXPAND, #LZSS_MODE_MSHELP or -+ * #LZSS_MODE_QBASIC -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+extern int lzss_decompress(struct mspack_system *system, -+ struct mspack_file *input, -+ struct mspack_file *output, -+ int input_buffer_size, -+ int mode); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/lzssd.c b/libclamav/libmspack-0.4alpha/mspack/lzssd.c -new file mode 100644 -index 000000000000..df294bc13258 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/lzssd.c -@@ -0,0 +1,93 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2010 Stuart Caie. -+ * -+ * LZSS is a derivative of LZ77 and was created by James Storer and -+ * Thomas Szymanski in 1982. Haruhiko Okumura wrote a very popular C -+ * implementation. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#include -+#include -+ -+#define ENSURE_BYTES do { \ -+ if (i_ptr >= i_end) { \ -+ read = system->read(input, &inbuf[0], \ -+ input_buffer_size); \ -+ if (read <= 0) { \ -+ system->free(window); \ -+ return (read < 0) ? MSPACK_ERR_READ \ -+ : MSPACK_ERR_OK; \ -+ } \ -+ i_ptr = &inbuf[0]; i_end = &inbuf[read]; \ -+ } \ -+} while (0) -+ -+#define WRITE_BYTE do { \ -+ if (system->write(output, &window[pos], 1) != 1) { \ -+ system->free(window); \ -+ return MSPACK_ERR_WRITE; \ -+ } \ -+} while (0) -+ -+int lzss_decompress(struct mspack_system *system, -+ struct mspack_file *input, -+ struct mspack_file *output, -+ int input_buffer_size, -+ int mode) -+{ -+ unsigned char *window, *inbuf, *i_ptr, *i_end; -+ unsigned int pos, i, c, invert, mpos, len; -+ int read; -+ -+ /* check parameters */ -+ if (!system || input_buffer_size < 1 || (mode != LZSS_MODE_EXPAND && -+ mode != LZSS_MODE_MSHELP && mode != LZSS_MODE_QBASIC)) -+ { -+ return MSPACK_ERR_ARGS; -+ } -+ -+ /* allocate memory */ -+ window = (unsigned char *) system->alloc(system, LZSS_WINDOW_SIZE + input_buffer_size); -+ if (!window) return MSPACK_ERR_NOMEMORY; -+ -+ /* initialise decompression */ -+ inbuf = &window[LZSS_WINDOW_SIZE]; -+ memset(window, LZSS_WINDOW_FILL, (size_t) LZSS_WINDOW_SIZE); -+ pos = LZSS_WINDOW_SIZE - ((mode == LZSS_MODE_QBASIC) ? 18 : 16); -+ invert = (mode == LZSS_MODE_MSHELP) ? ~0 : 0; -+ i_ptr = i_end = &inbuf[0]; -+ -+ /* loop forever; exit condition is in ENSURE_BYTES macro */ -+ for (;;) { -+ ENSURE_BYTES; c = *i_ptr++ ^ invert; -+ for (i = 0x01; i & 0xFF; i <<= 1) { -+ if (c & i) { -+ /* literal */ -+ ENSURE_BYTES; window[pos] = *i_ptr++; -+ WRITE_BYTE; -+ pos++; pos &= LZSS_WINDOW_SIZE - 1; -+ } -+ else { -+ /* match */ -+ ENSURE_BYTES; mpos = *i_ptr++; -+ ENSURE_BYTES; mpos |= (*i_ptr & 0xF0) << 4; -+ len = (*i_ptr++ & 0x0F) + 3; -+ while (len--) { -+ window[pos] = window[mpos]; -+ WRITE_BYTE; -+ pos++; pos &= LZSS_WINDOW_SIZE - 1; -+ mpos++; mpos &= LZSS_WINDOW_SIZE - 1; -+ } -+ } -+ } -+ } -+ -+ /* not reached */ -+ system->free(window); -+ return MSPACK_ERR_OK; -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/lzx.h b/libclamav/libmspack-0.4alpha/mspack/lzx.h -new file mode 100644 -index 000000000000..4d3189ea5730 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/lzx.h -@@ -0,0 +1,221 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2013 Stuart Caie. -+ * -+ * The LZX method was created by Jonathan Forbes and Tomi Poutanen, adapted -+ * by Microsoft Corporation. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_LZX_H -+#define MSPACK_LZX_H 1 -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* LZX compression / decompression definitions */ -+ -+/* some constants defined by the LZX specification */ -+#define LZX_MIN_MATCH (2) -+#define LZX_MAX_MATCH (257) -+#define LZX_NUM_CHARS (256) -+#define LZX_BLOCKTYPE_INVALID (0) /* also blocktypes 4-7 invalid */ -+#define LZX_BLOCKTYPE_VERBATIM (1) -+#define LZX_BLOCKTYPE_ALIGNED (2) -+#define LZX_BLOCKTYPE_UNCOMPRESSED (3) -+#define LZX_PRETREE_NUM_ELEMENTS (20) -+#define LZX_ALIGNED_NUM_ELEMENTS (8) /* aligned offset tree #elements */ -+#define LZX_NUM_PRIMARY_LENGTHS (7) /* this one missing from spec! */ -+#define LZX_NUM_SECONDARY_LENGTHS (249) /* length tree #elements */ -+ -+/* LZX huffman defines: tweak tablebits as desired */ -+#define LZX_PRETREE_MAXSYMBOLS (LZX_PRETREE_NUM_ELEMENTS) -+#define LZX_PRETREE_TABLEBITS (6) -+#define LZX_MAINTREE_MAXSYMBOLS (LZX_NUM_CHARS + 290*8) -+#define LZX_MAINTREE_TABLEBITS (12) -+#define LZX_LENGTH_MAXSYMBOLS (LZX_NUM_SECONDARY_LENGTHS+1) -+#define LZX_LENGTH_TABLEBITS (12) -+#define LZX_ALIGNED_MAXSYMBOLS (LZX_ALIGNED_NUM_ELEMENTS) -+#define LZX_ALIGNED_TABLEBITS (7) -+#define LZX_LENTABLE_SAFETY (64) /* table decoding overruns are allowed */ -+ -+#define LZX_FRAME_SIZE (32768) /* the size of a frame in LZX */ -+ -+struct lzxd_stream { -+ struct mspack_system *sys; /* I/O routines */ -+ struct mspack_file *input; /* input file handle */ -+ struct mspack_file *output; /* output file handle */ -+ -+ off_t offset; /* number of bytes actually output */ -+ off_t length; /* overall decompressed length of stream */ -+ -+ unsigned char *window; /* decoding window */ -+ unsigned int window_size; /* window size */ -+ unsigned int ref_data_size; /* LZX DELTA reference data size */ -+ unsigned int num_offsets; /* number of match_offset entries in table */ -+ unsigned int window_posn; /* decompression offset within window */ -+ unsigned int frame_posn; /* current frame offset within in window */ -+ unsigned int frame; /* the number of 32kb frames processed */ -+ unsigned int reset_interval; /* which frame do we reset the compressor? */ -+ -+ unsigned int R0, R1, R2; /* for the LRU offset system */ -+ unsigned int block_length; /* uncompressed length of this LZX block */ -+ unsigned int block_remaining; /* uncompressed bytes still left to decode */ -+ -+ signed int intel_filesize; /* magic header value used for transform */ -+ signed int intel_curpos; /* current offset in transform space */ -+ -+ unsigned char intel_started; /* has intel E8 decoding started? */ -+ unsigned char block_type; /* type of the current block */ -+ unsigned char header_read; /* have we started decoding at all yet? */ -+ unsigned char input_end; /* have we reached the end of input? */ -+ unsigned char is_delta; /* does stream follow LZX DELTA spec? */ -+ -+ int error; -+ -+ /* I/O buffering */ -+ unsigned char *inbuf, *i_ptr, *i_end, *o_ptr, *o_end; -+ unsigned int bit_buffer, bits_left, inbuf_size; -+ -+ /* huffman code lengths */ -+ unsigned char PRETREE_len [LZX_PRETREE_MAXSYMBOLS + LZX_LENTABLE_SAFETY]; -+ unsigned char MAINTREE_len [LZX_MAINTREE_MAXSYMBOLS + LZX_LENTABLE_SAFETY]; -+ unsigned char LENGTH_len [LZX_LENGTH_MAXSYMBOLS + LZX_LENTABLE_SAFETY]; -+ unsigned char ALIGNED_len [LZX_ALIGNED_MAXSYMBOLS + LZX_LENTABLE_SAFETY]; -+ -+ /* huffman decoding tables */ -+ unsigned short PRETREE_table [(1 << LZX_PRETREE_TABLEBITS) + -+ (LZX_PRETREE_MAXSYMBOLS * 2)]; -+ unsigned short MAINTREE_table[(1 << LZX_MAINTREE_TABLEBITS) + -+ (LZX_MAINTREE_MAXSYMBOLS * 2)]; -+ unsigned short LENGTH_table [(1 << LZX_LENGTH_TABLEBITS) + -+ (LZX_LENGTH_MAXSYMBOLS * 2)]; -+ unsigned short ALIGNED_table [(1 << LZX_ALIGNED_TABLEBITS) + -+ (LZX_ALIGNED_MAXSYMBOLS * 2)]; -+ unsigned char LENGTH_empty; -+ -+ /* this is used purely for doing the intel E8 transform */ -+ unsigned char e8_buf[LZX_FRAME_SIZE]; -+}; -+ -+/** -+ * Allocates and initialises LZX decompression state for decoding an LZX -+ * stream. -+ * -+ * This routine uses system->alloc() to allocate memory. If memory -+ * allocation fails, or the parameters to this function are invalid, -+ * NULL is returned. -+ * -+ * @param system an mspack_system structure used to read from -+ * the input stream and write to the output -+ * stream, also to allocate and free memory. -+ * @param input an input stream with the LZX data. -+ * @param output an output stream to write the decoded data to. -+ * @param window_bits the size of the decoding window, which must be -+ * between 15 and 21 inclusive for regular LZX -+ * data, or between 17 and 25 inclusive for -+ * LZX DELTA data. -+ * @param reset_interval the interval at which the LZX bitstream is -+ * reset, in multiples of LZX frames (32678 -+ * bytes), e.g. a value of 2 indicates the input -+ * stream resets after every 65536 output bytes. -+ * A value of 0 indicates that the bitstream never -+ * resets, such as in CAB LZX streams. -+ * @param input_buffer_size the number of bytes to use as an input -+ * bitstream buffer. -+ * @param output_length the length in bytes of the entirely -+ * decompressed output stream, if known in -+ * advance. It is used to correctly perform the -+ * Intel E8 transformation, which must stop 6 -+ * bytes before the very end of the -+ * decompressed stream. It is not otherwise used -+ * or adhered to. If the full decompressed -+ * length is known in advance, set it here. -+ * If it is NOT known, use the value 0, and call -+ * lzxd_set_output_length() once it is -+ * known. If never set, 4 of the final 6 bytes -+ * of the output stream may be incorrect. -+ * @param is_delta should be zero for all regular LZX data, -+ * non-zero for LZX DELTA encoded data. -+ * @return a pointer to an initialised lzxd_stream structure, or NULL if -+ * there was not enough memory or parameters to the function were wrong. -+ */ -+extern struct lzxd_stream *lzxd_init(struct mspack_system *system, -+ struct mspack_file *input, -+ struct mspack_file *output, -+ int window_bits, -+ int reset_interval, -+ int input_buffer_size, -+ off_t output_length, -+ char is_delta); -+ -+/* see description of output_length in lzxd_init() */ -+extern void lzxd_set_output_length(struct lzxd_stream *lzx, -+ off_t output_length); -+ -+/** -+ * Reads LZX DELTA reference data into the window and allows -+ * lzxd_decompress() to reference it. -+ * -+ * Call this before the first call to lzxd_decompress(). -+ -+ * @param lzx the LZX stream to apply this reference data to -+ * @param system an mspack_system implementation to use with the -+ * input param. Only read() will be called. -+ * @param input an input file handle to read reference data using -+ * system->read(). -+ * @param length the length of the reference data. Cannot be longer -+ * than the LZX window size. -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+extern int lzxd_set_reference_data(struct lzxd_stream *lzx, -+ struct mspack_system *system, -+ struct mspack_file *input, -+ unsigned int length); -+ -+/** -+ * Decompresses entire or partial LZX streams. -+ * -+ * The number of bytes of data that should be decompressed is given as the -+ * out_bytes parameter. If more bytes are decoded than are needed, they -+ * will be kept over for a later invocation. -+ * -+ * The output bytes will be passed to the system->write() function given in -+ * lzxd_init(), using the output file handle given in lzxd_init(). More than -+ * one call may be made to system->write(). -+ -+ * Input bytes will be read in as necessary using the system->read() -+ * function given in lzxd_init(), using the input file handle given in -+ * lzxd_init(). This will continue until system->read() returns 0 bytes, -+ * or an error. Errors will be passed out of the function as -+ * MSPACK_ERR_READ errors. Input streams should convey an "end of input -+ * stream" by refusing to supply all the bytes that LZX asks for when they -+ * reach the end of the stream, rather than return an error code. -+ * -+ * If any error code other than MSPACK_ERR_OK is returned, the stream -+ * should be considered unusable and lzxd_decompress() should not be -+ * called again on this stream. -+ * -+ * @param lzx LZX decompression state, as allocated by lzxd_init(). -+ * @param out_bytes the number of bytes of data to decompress. -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+extern int lzxd_decompress(struct lzxd_stream *lzx, off_t out_bytes); -+ -+/** -+ * Frees all state associated with an LZX data stream. This will call -+ * system->free() using the system pointer given in lzxd_init(). -+ * -+ * @param lzx LZX decompression state to free. -+ */ -+void lzxd_free(struct lzxd_stream *lzx); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/lzxc.c b/libclamav/libmspack-0.4alpha/mspack/lzxc.c -new file mode 100644 -index 000000000000..1207a0d747d5 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/lzxc.c -@@ -0,0 +1,18 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * The LZX method was created by Jonathan Forbes and Tomi Poutanen, adapted -+ * by Microsoft Corporation. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* LZX compression implementation */ -+ -+#include -+#include -+ -+/* todo */ -diff --git a/libclamav/libmspack-0.4alpha/mspack/lzxd.c b/libclamav/libmspack-0.4alpha/mspack/lzxd.c -new file mode 100644 -index 000000000000..b552e78414c1 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/lzxd.c -@@ -0,0 +1,895 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2013 Stuart Caie. -+ * -+ * The LZX method was created by Jonathan Forbes and Tomi Poutanen, adapted -+ * by Microsoft Corporation. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* LZX decompression implementation */ -+ -+#include -+#include -+ -+/* Microsoft's LZX document (in cab-sdk.exe) and their implementation -+ * of the com.ms.util.cab Java package do not concur. -+ * -+ * In the LZX document, there is a table showing the correlation between -+ * window size and the number of position slots. It states that the 1MB -+ * window = 40 slots and the 2MB window = 42 slots. In the implementation, -+ * 1MB = 42 slots, 2MB = 50 slots. The actual calculation is 'find the -+ * first slot whose position base is equal to or more than the required -+ * window size'. This would explain why other tables in the document refer -+ * to 50 slots rather than 42. -+ * -+ * The constant NUM_PRIMARY_LENGTHS used in the decompression pseudocode -+ * is not defined in the specification. -+ * -+ * The LZX document does not state the uncompressed block has an -+ * uncompressed length field. Where does this length field come from, so -+ * we can know how large the block is? The implementation has it as the 24 -+ * bits following after the 3 blocktype bits, before the alignment -+ * padding. -+ * -+ * The LZX document states that aligned offset blocks have their aligned -+ * offset huffman tree AFTER the main and length trees. The implementation -+ * suggests that the aligned offset tree is BEFORE the main and length -+ * trees. -+ * -+ * The LZX document decoding algorithm states that, in an aligned offset -+ * block, if an extra_bits value is 1, 2 or 3, then that number of bits -+ * should be read and the result added to the match offset. This is -+ * correct for 1 and 2, but not 3, where just a huffman symbol (using the -+ * aligned tree) should be read. -+ * -+ * Regarding the E8 preprocessing, the LZX document states 'No translation -+ * may be performed on the last 6 bytes of the input block'. This is -+ * correct. However, the pseudocode provided checks for the *E8 leader* -+ * up to the last 6 bytes. If the leader appears between -10 and -7 bytes -+ * from the end, this would cause the next four bytes to be modified, at -+ * least one of which would be in the last 6 bytes, which is not allowed -+ * according to the spec. -+ * -+ * The specification states that the huffman trees must always contain at -+ * least one element. However, many CAB files contain blocks where the -+ * length tree is completely empty (because there are no matches), and -+ * this is expected to succeed. -+ * -+ * The errors in LZX documentation appear have been corrected in the -+ * new documentation for the LZX DELTA format. -+ * -+ * http://msdn.microsoft.com/en-us/library/cc483133.aspx -+ * -+ * However, this is a different format, an extension of regular LZX. -+ * I have noticed the following differences, there may be more: -+ * -+ * The maximum window size has increased from 2MB to 32MB. This also -+ * increases the maximum number of position slots, etc. -+ * -+ * If the match length is 257 (the maximum possible), this signals -+ * a further length decoding step, that allows for matches up to -+ * 33024 bytes long. -+ * -+ * The format now allows for "reference data", supplied by the caller. -+ * If match offsets go further back than the number of bytes -+ * decompressed so far, that is them accessing the reference data. -+ */ -+ -+/* import bit-reading macros and code */ -+#define BITS_TYPE struct lzxd_stream -+#define BITS_VAR lzx -+#define BITS_ORDER_MSB -+#define READ_BYTES do { \ -+ unsigned char b0, b1; \ -+ READ_IF_NEEDED; b0 = *i_ptr++; \ -+ READ_IF_NEEDED; b1 = *i_ptr++; \ -+ INJECT_BITS((b1 << 8) | b0, 16); \ -+} while (0) -+#include -+ -+/* import huffman-reading macros and code */ -+#define TABLEBITS(tbl) LZX_##tbl##_TABLEBITS -+#define MAXSYMBOLS(tbl) LZX_##tbl##_MAXSYMBOLS -+#define HUFF_TABLE(tbl,idx) lzx->tbl##_table[idx] -+#define HUFF_LEN(tbl,idx) lzx->tbl##_len[idx] -+#define HUFF_ERROR return lzx->error = MSPACK_ERR_DECRUNCH -+#include -+ -+/* BUILD_TABLE(tbl) builds a huffman lookup table from code lengths */ -+#define BUILD_TABLE(tbl) \ -+ if (make_decode_table(MAXSYMBOLS(tbl), TABLEBITS(tbl), \ -+ &HUFF_LEN(tbl,0), &HUFF_TABLE(tbl,0))) \ -+ { \ -+ D(("failed to build %s table", #tbl)) \ -+ return lzx->error = MSPACK_ERR_DECRUNCH; \ -+ } -+ -+#define BUILD_TABLE_MAYBE_EMPTY(tbl) do { \ -+ lzx->tbl##_empty = 0; \ -+ if (make_decode_table(MAXSYMBOLS(tbl), TABLEBITS(tbl), \ -+ &HUFF_LEN(tbl,0), &HUFF_TABLE(tbl,0))) \ -+ { \ -+ for (i = 0; i < MAXSYMBOLS(tbl); i++) { \ -+ if (HUFF_LEN(tbl, i) > 0) { \ -+ D(("failed to build %s table", #tbl)) \ -+ return lzx->error = MSPACK_ERR_DECRUNCH; \ -+ } \ -+ } \ -+ /* empty tree - allow it, but don't decode symbols with it */ \ -+ lzx->tbl##_empty = 1; \ -+ } \ -+} while (0) -+ -+/* READ_LENGTHS(tablename, first, last) reads in code lengths for symbols -+ * first to last in the given table. The code lengths are stored in their -+ * own special LZX way. -+ */ -+#define READ_LENGTHS(tbl, first, last) do { \ -+ STORE_BITS; \ -+ if (lzxd_read_lens(lzx, &HUFF_LEN(tbl, 0), (first), \ -+ (unsigned int)(last))) return lzx->error; \ -+ RESTORE_BITS; \ -+} while (0) -+ -+static int lzxd_read_lens(struct lzxd_stream *lzx, unsigned char *lens, -+ unsigned int first, unsigned int last) -+{ -+ /* bit buffer and huffman symbol decode variables */ -+ register unsigned int bit_buffer; -+ register int bits_left, i; -+ register unsigned short sym; -+ unsigned char *i_ptr, *i_end; -+ -+ unsigned int x, y; -+ int z; -+ -+ RESTORE_BITS; -+ -+ /* read lengths for pretree (20 symbols, lengths stored in fixed 4 bits) */ -+ for (x = 0; x < 20; x++) { -+ READ_BITS(y, 4); -+ lzx->PRETREE_len[x] = y; -+ } -+ BUILD_TABLE(PRETREE); -+ -+ for (x = first; x < last; ) { -+ READ_HUFFSYM(PRETREE, z); -+ if (z == 17) { -+ /* code = 17, run of ([read 4 bits]+4) zeros */ -+ READ_BITS(y, 4); y += 4; -+ while (y--) lens[x++] = 0; -+ } -+ else if (z == 18) { -+ /* code = 18, run of ([read 5 bits]+20) zeros */ -+ READ_BITS(y, 5); y += 20; -+ while (y--) lens[x++] = 0; -+ } -+ else if (z == 19) { -+ /* code = 19, run of ([read 1 bit]+4) [read huffman symbol] */ -+ READ_BITS(y, 1); y += 4; -+ READ_HUFFSYM(PRETREE, z); -+ z = lens[x] - z; if (z < 0) z += 17; -+ while (y--) lens[x++] = z; -+ } -+ else { -+ /* code = 0 to 16, delta current length entry */ -+ z = lens[x] - z; if (z < 0) z += 17; -+ lens[x++] = z; -+ } -+ } -+ -+ STORE_BITS; -+ -+ return MSPACK_ERR_OK; -+} -+ -+/* LZX static data tables: -+ * -+ * LZX uses 'position slots' to represent match offsets. For every match, -+ * a small 'position slot' number and a small offset from that slot are -+ * encoded instead of one large offset. -+ * -+ * The number of slots is decided by how many are needed to encode the -+ * largest offset for a given window size. This is easy when the gap between -+ * slots is less than 128Kb, it's a linear relationship. But when extra_bits -+ * reaches its limit of 17 (because LZX can only ensure reading 17 bits of -+ * data at a time), we can only jump 128Kb at a time and have to start -+ * using more and more position slots as each window size doubles. -+ * -+ * position_base[] is an index to the position slot bases -+ * -+ * extra_bits[] states how many bits of offset-from-base data is needed. -+ * -+ * They are calculated as follows: -+ * extra_bits[i] = 0 where i < 4 -+ * extra_bits[i] = floor(i/2)-1 where i >= 4 && i < 36 -+ * extra_bits[i] = 17 where i >= 36 -+ * position_base[0] = 0 -+ * position_base[i] = position_base[i-1] + (1 << extra_bits[i-1]) -+ */ -+static const unsigned int position_slots[11] = { -+ 30, 32, 34, 36, 38, 42, 50, 66, 98, 162, 290 -+}; -+static const unsigned char extra_bits[36] = { -+ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, -+ 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16 -+}; -+static const unsigned int position_base[290] = { -+ 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, -+ 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576, 32768, -+ 49152, 65536, 98304, 131072, 196608, 262144, 393216, 524288, 655360, -+ 786432, 917504, 1048576, 1179648, 1310720, 1441792, 1572864, 1703936, -+ 1835008, 1966080, 2097152, 2228224, 2359296, 2490368, 2621440, 2752512, -+ 2883584, 3014656, 3145728, 3276800, 3407872, 3538944, 3670016, 3801088, -+ 3932160, 4063232, 4194304, 4325376, 4456448, 4587520, 4718592, 4849664, -+ 4980736, 5111808, 5242880, 5373952, 5505024, 5636096, 5767168, 5898240, -+ 6029312, 6160384, 6291456, 6422528, 6553600, 6684672, 6815744, 6946816, -+ 7077888, 7208960, 7340032, 7471104, 7602176, 7733248, 7864320, 7995392, -+ 8126464, 8257536, 8388608, 8519680, 8650752, 8781824, 8912896, 9043968, -+ 9175040, 9306112, 9437184, 9568256, 9699328, 9830400, 9961472, 10092544, -+ 10223616, 10354688, 10485760, 10616832, 10747904, 10878976, 11010048, -+ 11141120, 11272192, 11403264, 11534336, 11665408, 11796480, 11927552, -+ 12058624, 12189696, 12320768, 12451840, 12582912, 12713984, 12845056, -+ 12976128, 13107200, 13238272, 13369344, 13500416, 13631488, 13762560, -+ 13893632, 14024704, 14155776, 14286848, 14417920, 14548992, 14680064, -+ 14811136, 14942208, 15073280, 15204352, 15335424, 15466496, 15597568, -+ 15728640, 15859712, 15990784, 16121856, 16252928, 16384000, 16515072, -+ 16646144, 16777216, 16908288, 17039360, 17170432, 17301504, 17432576, -+ 17563648, 17694720, 17825792, 17956864, 18087936, 18219008, 18350080, -+ 18481152, 18612224, 18743296, 18874368, 19005440, 19136512, 19267584, -+ 19398656, 19529728, 19660800, 19791872, 19922944, 20054016, 20185088, -+ 20316160, 20447232, 20578304, 20709376, 20840448, 20971520, 21102592, -+ 21233664, 21364736, 21495808, 21626880, 21757952, 21889024, 22020096, -+ 22151168, 22282240, 22413312, 22544384, 22675456, 22806528, 22937600, -+ 23068672, 23199744, 23330816, 23461888, 23592960, 23724032, 23855104, -+ 23986176, 24117248, 24248320, 24379392, 24510464, 24641536, 24772608, -+ 24903680, 25034752, 25165824, 25296896, 25427968, 25559040, 25690112, -+ 25821184, 25952256, 26083328, 26214400, 26345472, 26476544, 26607616, -+ 26738688, 26869760, 27000832, 27131904, 27262976, 27394048, 27525120, -+ 27656192, 27787264, 27918336, 28049408, 28180480, 28311552, 28442624, -+ 28573696, 28704768, 28835840, 28966912, 29097984, 29229056, 29360128, -+ 29491200, 29622272, 29753344, 29884416, 30015488, 30146560, 30277632, -+ 30408704, 30539776, 30670848, 30801920, 30932992, 31064064, 31195136, -+ 31326208, 31457280, 31588352, 31719424, 31850496, 31981568, 32112640, -+ 32243712, 32374784, 32505856, 32636928, 32768000, 32899072, 33030144, -+ 33161216, 33292288, 33423360 -+}; -+ -+static void lzxd_reset_state(struct lzxd_stream *lzx) { -+ int i; -+ -+ lzx->R0 = 1; -+ lzx->R1 = 1; -+ lzx->R2 = 1; -+ lzx->header_read = 0; -+ lzx->block_remaining = 0; -+ lzx->block_type = LZX_BLOCKTYPE_INVALID; -+ -+ /* initialise tables to 0 (because deltas will be applied to them) */ -+ for (i = 0; i < LZX_MAINTREE_MAXSYMBOLS; i++) lzx->MAINTREE_len[i] = 0; -+ for (i = 0; i < LZX_LENGTH_MAXSYMBOLS; i++) lzx->LENGTH_len[i] = 0; -+} -+ -+/*-------- main LZX code --------*/ -+ -+struct lzxd_stream *lzxd_init(struct mspack_system *system, -+ struct mspack_file *input, -+ struct mspack_file *output, -+ int window_bits, -+ int reset_interval, -+ int input_buffer_size, -+ off_t output_length, -+ char is_delta) -+{ -+ unsigned int window_size = 1 << window_bits; -+ struct lzxd_stream *lzx; -+ -+ if (!system) return NULL; -+ -+ /* LZX DELTA window sizes are between 2^17 (128KiB) and 2^25 (32MiB), -+ * regular LZX windows are between 2^15 (32KiB) and 2^21 (2MiB) -+ */ -+ if (is_delta) { -+ if (window_bits < 17 || window_bits > 25) return NULL; -+ } -+ else { -+ if (window_bits < 15 || window_bits > 21) return NULL; -+ } -+ -+ input_buffer_size = (input_buffer_size + 1) & -2; -+ if (!input_buffer_size) return NULL; -+ -+ /* allocate decompression state */ -+ if (!(lzx = (struct lzxd_stream *) system->alloc(system, sizeof(struct lzxd_stream)))) { -+ return NULL; -+ } -+ -+ /* allocate decompression window and input buffer */ -+ lzx->window = (unsigned char *) system->alloc(system, (size_t) window_size); -+ lzx->inbuf = (unsigned char *) system->alloc(system, (size_t) input_buffer_size); -+ if (!lzx->window || !lzx->inbuf) { -+ system->free(lzx->window); -+ system->free(lzx->inbuf); -+ system->free(lzx); -+ return NULL; -+ } -+ -+ /* initialise decompression state */ -+ lzx->sys = system; -+ lzx->input = input; -+ lzx->output = output; -+ lzx->offset = 0; -+ lzx->length = output_length; -+ -+ lzx->inbuf_size = input_buffer_size; -+ lzx->window_size = 1 << window_bits; -+ lzx->ref_data_size = 0; -+ lzx->window_posn = 0; -+ lzx->frame_posn = 0; -+ lzx->frame = 0; -+ lzx->reset_interval = reset_interval; -+ lzx->intel_filesize = 0; -+ lzx->intel_curpos = 0; -+ lzx->intel_started = 0; -+ lzx->error = MSPACK_ERR_OK; -+ lzx->num_offsets = position_slots[window_bits - 15] << 3; -+ lzx->is_delta = is_delta; -+ -+ lzx->o_ptr = lzx->o_end = &lzx->e8_buf[0]; -+ lzxd_reset_state(lzx); -+ INIT_BITS; -+ return lzx; -+} -+ -+int lzxd_set_reference_data(struct lzxd_stream *lzx, -+ struct mspack_system *system, -+ struct mspack_file *input, -+ unsigned int length) -+{ -+ if (!lzx) return MSPACK_ERR_ARGS; -+ -+ if (!lzx->is_delta) { -+ D(("only LZX DELTA streams support reference data")) -+ return MSPACK_ERR_ARGS; -+ } -+ if (lzx->offset) { -+ D(("too late to set reference data after decoding starts")) -+ return MSPACK_ERR_ARGS; -+ } -+ if (length > lzx->window_size) { -+ D(("reference length (%u) is longer than the window", length)) -+ return MSPACK_ERR_ARGS; -+ } -+ if (length > 0 && (!system || !input)) { -+ D(("length > 0 but no system or input")) -+ return MSPACK_ERR_ARGS; -+ } -+ -+ lzx->ref_data_size = length; -+ if (length > 0) { -+ /* copy reference data */ -+ unsigned char *pos = &lzx->window[lzx->window_size - length]; -+ int bytes = system->read(input, pos, length); -+ /* length can't be more than 2^25, so no signedness problem */ -+ if (bytes < (int)length) return MSPACK_ERR_READ; -+ } -+ lzx->ref_data_size = length; -+ return MSPACK_ERR_OK; -+} -+ -+void lzxd_set_output_length(struct lzxd_stream *lzx, off_t out_bytes) { -+ if (lzx) lzx->length = out_bytes; -+} -+ -+int lzxd_decompress(struct lzxd_stream *lzx, off_t out_bytes) { -+ /* bitstream and huffman reading variables */ -+ register unsigned int bit_buffer; -+ register int bits_left, i=0; -+ unsigned char *i_ptr, *i_end; -+ register unsigned short sym; -+ -+ int match_length, length_footer, extra, verbatim_bits, bytes_todo; -+ int this_run, main_element, aligned_bits, j; -+ unsigned char *window, *runsrc, *rundest, buf[12]; -+ unsigned int frame_size=0, end_frame, match_offset, window_posn; -+ unsigned int R0, R1, R2; -+ -+ /* easy answers */ -+ if (!lzx || (out_bytes < 0)) return MSPACK_ERR_ARGS; -+ if (lzx->error) return lzx->error; -+ -+ /* flush out any stored-up bytes before we begin */ -+ i = lzx->o_end - lzx->o_ptr; -+ if ((off_t) i > out_bytes) i = (int) out_bytes; -+ if (i) { -+ if (lzx->sys->write(lzx->output, lzx->o_ptr, i) != i) { -+ return lzx->error = MSPACK_ERR_WRITE; -+ } -+ lzx->o_ptr += i; -+ lzx->offset += i; -+ out_bytes -= i; -+ } -+ if (out_bytes == 0) return MSPACK_ERR_OK; -+ -+ /* restore local state */ -+ RESTORE_BITS; -+ window = lzx->window; -+ window_posn = lzx->window_posn; -+ R0 = lzx->R0; -+ R1 = lzx->R1; -+ R2 = lzx->R2; -+ -+ end_frame = (unsigned int)((lzx->offset + out_bytes) / LZX_FRAME_SIZE) + 1; -+ -+ while (lzx->frame < end_frame) { -+ /* have we reached the reset interval? (if there is one?) */ -+ if (lzx->reset_interval && ((lzx->frame % lzx->reset_interval) == 0)) { -+ if (lzx->block_remaining) { -+ D(("%d bytes remaining at reset interval", lzx->block_remaining)) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ -+ /* re-read the intel header and reset the huffman lengths */ -+ lzxd_reset_state(lzx); -+ R0 = lzx->R0; -+ R1 = lzx->R1; -+ R2 = lzx->R2; -+ } -+ -+ /* LZX DELTA format has chunk_size, not present in LZX format */ -+ if (lzx->is_delta) { -+ ENSURE_BITS(16); -+ REMOVE_BITS(16); -+ } -+ -+ /* read header if necessary */ -+ if (!lzx->header_read) { -+ /* read 1 bit. if bit=0, intel filesize = 0. -+ * if bit=1, read intel filesize (32 bits) */ -+ j = 0; READ_BITS(i, 1); if (i) { READ_BITS(i, 16); READ_BITS(j, 16); } -+ lzx->intel_filesize = (i << 16) | j; -+ lzx->header_read = 1; -+ } -+ -+ /* calculate size of frame: all frames are 32k except the final frame -+ * which is 32kb or less. this can only be calculated when lzx->length -+ * has been filled in. */ -+ frame_size = LZX_FRAME_SIZE; -+ if (lzx->length && (lzx->length - lzx->offset) < (off_t)frame_size) { -+ frame_size = lzx->length - lzx->offset; -+ } -+ -+ /* decode until one more frame is available */ -+ bytes_todo = lzx->frame_posn + frame_size - window_posn; -+ while (bytes_todo > 0) { -+ /* initialise new block, if one is needed */ -+ if (lzx->block_remaining == 0) { -+ /* realign if previous block was an odd-sized UNCOMPRESSED block */ -+ if ((lzx->block_type == LZX_BLOCKTYPE_UNCOMPRESSED) && -+ (lzx->block_length & 1)) -+ { -+ READ_IF_NEEDED; -+ i_ptr++; -+ } -+ -+ /* read block type (3 bits) and block length (24 bits) */ -+ READ_BITS(lzx->block_type, 3); -+ READ_BITS(i, 16); READ_BITS(j, 8); -+ lzx->block_remaining = lzx->block_length = (i << 8) | j; -+ /*D(("new block t%d len %u", lzx->block_type, lzx->block_length))*/ -+ -+ /* read individual block headers */ -+ switch (lzx->block_type) { -+ case LZX_BLOCKTYPE_ALIGNED: -+ /* read lengths of and build aligned huffman decoding tree */ -+ for (i = 0; i < 8; i++) { READ_BITS(j, 3); lzx->ALIGNED_len[i] = j; } -+ BUILD_TABLE(ALIGNED); -+ /* no break -- rest of aligned header is same as verbatim */ -+ case LZX_BLOCKTYPE_VERBATIM: -+ /* read lengths of and build main huffman decoding tree */ -+ READ_LENGTHS(MAINTREE, 0, 256); -+ READ_LENGTHS(MAINTREE, 256, LZX_NUM_CHARS + lzx->num_offsets); -+ BUILD_TABLE(MAINTREE); -+ /* if the literal 0xE8 is anywhere in the block... */ -+ if (lzx->MAINTREE_len[0xE8] != 0) lzx->intel_started = 1; -+ /* read lengths of and build lengths huffman decoding tree */ -+ READ_LENGTHS(LENGTH, 0, LZX_NUM_SECONDARY_LENGTHS); -+ BUILD_TABLE_MAYBE_EMPTY(LENGTH); -+ break; -+ -+ case LZX_BLOCKTYPE_UNCOMPRESSED: -+ /* because we can't assume otherwise */ -+ lzx->intel_started = 1; -+ -+ /* read 1-16 (not 0-15) bits to align to bytes */ -+ ENSURE_BITS(16); -+ if (bits_left > 16) i_ptr -= 2; -+ bits_left = 0; bit_buffer = 0; -+ -+ /* read 12 bytes of stored R0 / R1 / R2 values */ -+ for (rundest = &buf[0], i = 0; i < 12; i++) { -+ READ_IF_NEEDED; -+ *rundest++ = *i_ptr++; -+ } -+ R0 = buf[0] | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24); -+ R1 = buf[4] | (buf[5] << 8) | (buf[6] << 16) | (buf[7] << 24); -+ R2 = buf[8] | (buf[9] << 8) | (buf[10] << 16) | (buf[11] << 24); -+ break; -+ -+ default: -+ D(("bad block type")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ } -+ -+ /* decode more of the block: -+ * run = min(what's available, what's needed) */ -+ this_run = lzx->block_remaining; -+ if (this_run > bytes_todo) this_run = bytes_todo; -+ -+ /* assume we decode exactly this_run bytes, for now */ -+ bytes_todo -= this_run; -+ lzx->block_remaining -= this_run; -+ -+ /* decode at least this_run bytes */ -+ switch (lzx->block_type) { -+ case LZX_BLOCKTYPE_VERBATIM: -+ while (this_run > 0) { -+ READ_HUFFSYM(MAINTREE, main_element); -+ if (main_element < LZX_NUM_CHARS) { -+ /* literal: 0 to LZX_NUM_CHARS-1 */ -+ window[window_posn++] = main_element; -+ this_run--; -+ } -+ else { -+ /* match: LZX_NUM_CHARS + ((slot<<3) | length_header (3 bits)) */ -+ main_element -= LZX_NUM_CHARS; -+ -+ /* get match length */ -+ match_length = main_element & LZX_NUM_PRIMARY_LENGTHS; -+ if (match_length == LZX_NUM_PRIMARY_LENGTHS) { -+ if (lzx->LENGTH_empty) { -+ D(("LENGTH symbol needed but tree is empty")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ READ_HUFFSYM(LENGTH, length_footer); -+ match_length += length_footer; -+ } -+ match_length += LZX_MIN_MATCH; -+ -+ /* get match offset */ -+ switch ((match_offset = (main_element >> 3))) { -+ case 0: match_offset = R0; break; -+ case 1: match_offset = R1; R1=R0; R0 = match_offset; break; -+ case 2: match_offset = R2; R2=R0; R0 = match_offset; break; -+ case 3: match_offset = 1; R2=R1; R1=R0; R0 = match_offset; break; -+ default: -+ extra = (match_offset >= 36) ? 17 : extra_bits[match_offset]; -+ READ_BITS(verbatim_bits, extra); -+ match_offset = position_base[match_offset] - 2 + verbatim_bits; -+ R2 = R1; R1 = R0; R0 = match_offset; -+ } -+ -+ /* LZX DELTA uses max match length to signal even longer match */ -+ if (match_length == LZX_MAX_MATCH && lzx->is_delta) { -+ int extra_len = 0; -+ ENSURE_BITS(3); /* 4 entry huffman tree */ -+ if (PEEK_BITS(1) == 0) { -+ REMOVE_BITS(1); /* '0' -> 8 extra length bits */ -+ READ_BITS(extra_len, 8); -+ } -+ else if (PEEK_BITS(2) == 2) { -+ REMOVE_BITS(2); /* '10' -> 10 extra length bits + 0x100 */ -+ READ_BITS(extra_len, 10); -+ extra_len += 0x100; -+ } -+ else if (PEEK_BITS(3) == 6) { -+ REMOVE_BITS(3); /* '110' -> 12 extra length bits + 0x500 */ -+ READ_BITS(extra_len, 12); -+ extra_len += 0x500; -+ } -+ else { -+ REMOVE_BITS(3); /* '111' -> 15 extra length bits */ -+ READ_BITS(extra_len, 15); -+ } -+ match_length += extra_len; -+ } -+ -+ if ((window_posn + match_length) > lzx->window_size) { -+ D(("match ran over window wrap")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ -+ /* copy match */ -+ rundest = &window[window_posn]; -+ i = match_length; -+ /* does match offset wrap the window? */ -+ if (match_offset > window_posn) { -+ if (match_offset > lzx->offset && -+ (match_offset - window_posn) > lzx->ref_data_size) -+ { -+ D(("match offset beyond LZX stream")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ /* j = length from match offset to end of window */ -+ j = match_offset - window_posn; -+ if (j > (int) lzx->window_size) { -+ D(("match offset beyond window boundaries")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ runsrc = &window[lzx->window_size - j]; -+ if (j < i) { -+ /* if match goes over the window edge, do two copy runs */ -+ i -= j; while (j-- > 0) *rundest++ = *runsrc++; -+ runsrc = window; -+ } -+ while (i-- > 0) *rundest++ = *runsrc++; -+ } -+ else { -+ runsrc = rundest - match_offset; -+ while (i-- > 0) *rundest++ = *runsrc++; -+ } -+ -+ this_run -= match_length; -+ window_posn += match_length; -+ } -+ } /* while (this_run > 0) */ -+ break; -+ -+ case LZX_BLOCKTYPE_ALIGNED: -+ while (this_run > 0) { -+ READ_HUFFSYM(MAINTREE, main_element); -+ if (main_element < LZX_NUM_CHARS) { -+ /* literal: 0 to LZX_NUM_CHARS-1 */ -+ window[window_posn++] = main_element; -+ this_run--; -+ } -+ else { -+ /* match: LZX_NUM_CHARS + ((slot<<3) | length_header (3 bits)) */ -+ main_element -= LZX_NUM_CHARS; -+ -+ /* get match length */ -+ match_length = main_element & LZX_NUM_PRIMARY_LENGTHS; -+ if (match_length == LZX_NUM_PRIMARY_LENGTHS) { -+ if (lzx->LENGTH_empty) { -+ D(("LENGTH symbol needed but tree is empty")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ READ_HUFFSYM(LENGTH, length_footer); -+ match_length += length_footer; -+ } -+ match_length += LZX_MIN_MATCH; -+ -+ /* get match offset */ -+ switch ((match_offset = (main_element >> 3))) { -+ case 0: match_offset = R0; break; -+ case 1: match_offset = R1; R1 = R0; R0 = match_offset; break; -+ case 2: match_offset = R2; R2 = R0; R0 = match_offset; break; -+ default: -+ extra = (match_offset >= 36) ? 17 : extra_bits[match_offset]; -+ match_offset = position_base[match_offset] - 2; -+ if (extra > 3) { -+ /* verbatim and aligned bits */ -+ extra -= 3; -+ READ_BITS(verbatim_bits, extra); -+ match_offset += (verbatim_bits << 3); -+ READ_HUFFSYM(ALIGNED, aligned_bits); -+ match_offset += aligned_bits; -+ } -+ else if (extra == 3) { -+ /* aligned bits only */ -+ READ_HUFFSYM(ALIGNED, aligned_bits); -+ match_offset += aligned_bits; -+ } -+ else if (extra > 0) { /* extra==1, extra==2 */ -+ /* verbatim bits only */ -+ READ_BITS(verbatim_bits, extra); -+ match_offset += verbatim_bits; -+ } -+ else /* extra == 0 */ { -+ /* ??? not defined in LZX specification! */ -+ match_offset = 1; -+ } -+ /* update repeated offset LRU queue */ -+ R2 = R1; R1 = R0; R0 = match_offset; -+ } -+ -+ /* LZX DELTA uses max match length to signal even longer match */ -+ if (match_length == LZX_MAX_MATCH && lzx->is_delta) { -+ int extra_len = 0; -+ ENSURE_BITS(3); /* 4 entry huffman tree */ -+ if (PEEK_BITS(1) == 0) { -+ REMOVE_BITS(1); /* '0' -> 8 extra length bits */ -+ READ_BITS(extra_len, 8); -+ } -+ else if (PEEK_BITS(2) == 2) { -+ REMOVE_BITS(2); /* '10' -> 10 extra length bits + 0x100 */ -+ READ_BITS(extra_len, 10); -+ extra_len += 0x100; -+ } -+ else if (PEEK_BITS(3) == 6) { -+ REMOVE_BITS(3); /* '110' -> 12 extra length bits + 0x500 */ -+ READ_BITS(extra_len, 12); -+ extra_len += 0x500; -+ } -+ else { -+ REMOVE_BITS(3); /* '111' -> 15 extra length bits */ -+ READ_BITS(extra_len, 15); -+ } -+ match_length += extra_len; -+ } -+ -+ if ((window_posn + match_length) > lzx->window_size) { -+ D(("match ran over window wrap")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ -+ /* copy match */ -+ rundest = &window[window_posn]; -+ i = match_length; -+ /* does match offset wrap the window? */ -+ if (match_offset > window_posn) { -+ if (match_offset > lzx->offset && -+ (match_offset - window_posn) > lzx->ref_data_size) -+ { -+ D(("match offset beyond LZX stream")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ /* j = length from match offset to end of window */ -+ j = match_offset - window_posn; -+ if (j > (int) lzx->window_size) { -+ D(("match offset beyond window boundaries")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ runsrc = &window[lzx->window_size - j]; -+ if (j < i) { -+ /* if match goes over the window edge, do two copy runs */ -+ i -= j; while (j-- > 0) *rundest++ = *runsrc++; -+ runsrc = window; -+ } -+ while (i-- > 0) *rundest++ = *runsrc++; -+ } -+ else { -+ runsrc = rundest - match_offset; -+ while (i-- > 0) *rundest++ = *runsrc++; -+ } -+ -+ this_run -= match_length; -+ window_posn += match_length; -+ } -+ } /* while (this_run > 0) */ -+ break; -+ -+ case LZX_BLOCKTYPE_UNCOMPRESSED: -+ /* as this_run is limited not to wrap a frame, this also means it -+ * won't wrap the window (as the window is a multiple of 32k) */ -+ rundest = &window[window_posn]; -+ window_posn += this_run; -+ while (this_run > 0) { -+ if ((i = i_end - i_ptr) == 0) { -+ READ_IF_NEEDED; -+ } -+ else { -+ if (i > this_run) i = this_run; -+ lzx->sys->copy(i_ptr, rundest, (size_t) i); -+ rundest += i; -+ i_ptr += i; -+ this_run -= i; -+ } -+ } -+ break; -+ -+ default: -+ return lzx->error = MSPACK_ERR_DECRUNCH; /* might as well */ -+ } -+ -+ /* did the final match overrun our desired this_run length? */ -+ if (this_run < 0) { -+ if ((unsigned int)(-this_run) > lzx->block_remaining) { -+ D(("overrun went past end of block by %d (%d remaining)", -+ -this_run, lzx->block_remaining )) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ lzx->block_remaining -= -this_run; -+ } -+ } /* while (bytes_todo > 0) */ -+ -+ /* streams don't extend over frame boundaries */ -+ if ((window_posn - lzx->frame_posn) != frame_size) { -+ D(("decode beyond output frame limits! %d != %d", -+ window_posn - lzx->frame_posn, frame_size)) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ -+ /* re-align input bitstream */ -+ if (bits_left > 0) ENSURE_BITS(16); -+ if (bits_left & 15) REMOVE_BITS(bits_left & 15); -+ -+ /* check that we've used all of the previous frame first */ -+ if (lzx->o_ptr != lzx->o_end) { -+ D(("%ld avail bytes, new %d frame", lzx->o_end-lzx->o_ptr, frame_size)) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ -+ /* does this intel block _really_ need decoding? */ -+ if (lzx->intel_started && lzx->intel_filesize && -+ (lzx->frame <= 32768) && (frame_size > 10)) -+ { -+ unsigned char *data = &lzx->e8_buf[0]; -+ unsigned char *dataend = &lzx->e8_buf[frame_size - 10]; -+ signed int curpos = lzx->intel_curpos; -+ signed int filesize = lzx->intel_filesize; -+ signed int abs_off, rel_off; -+ -+ /* copy e8 block to the e8 buffer and tweak if needed */ -+ lzx->o_ptr = data; -+ lzx->sys->copy(&lzx->window[lzx->frame_posn], data, frame_size); -+ -+ while (data < dataend) { -+ if (*data++ != 0xE8) { curpos++; continue; } -+ abs_off = data[0] | (data[1]<<8) | (data[2]<<16) | (data[3]<<24); -+ if ((abs_off >= -curpos) && (abs_off < filesize)) { -+ rel_off = (abs_off >= 0) ? abs_off - curpos : abs_off + filesize; -+ data[0] = (unsigned char) rel_off; -+ data[1] = (unsigned char) (rel_off >> 8); -+ data[2] = (unsigned char) (rel_off >> 16); -+ data[3] = (unsigned char) (rel_off >> 24); -+ } -+ data += 4; -+ curpos += 5; -+ } -+ lzx->intel_curpos += frame_size; -+ } -+ else { -+ lzx->o_ptr = &lzx->window[lzx->frame_posn]; -+ if (lzx->intel_filesize) lzx->intel_curpos += frame_size; -+ } -+ lzx->o_end = &lzx->o_ptr[frame_size]; -+ -+ /* write a frame */ -+ i = (out_bytes < (off_t)frame_size) ? (unsigned int)out_bytes : frame_size; -+ if (lzx->sys->write(lzx->output, lzx->o_ptr, i) != i) { -+ return lzx->error = MSPACK_ERR_WRITE; -+ } -+ lzx->o_ptr += i; -+ lzx->offset += i; -+ out_bytes -= i; -+ -+ /* advance frame start position */ -+ lzx->frame_posn += frame_size; -+ lzx->frame++; -+ -+ /* wrap window / frame position pointers */ -+ if (window_posn == lzx->window_size) window_posn = 0; -+ if (lzx->frame_posn == lzx->window_size) lzx->frame_posn = 0; -+ -+ } /* while (lzx->frame < end_frame) */ -+ -+ if (out_bytes) { -+ D(("bytes left to output")) -+ return lzx->error = MSPACK_ERR_DECRUNCH; -+ } -+ -+ /* store local state */ -+ STORE_BITS; -+ lzx->window_posn = window_posn; -+ lzx->R0 = R0; -+ lzx->R1 = R1; -+ lzx->R2 = R2; -+ -+ return MSPACK_ERR_OK; -+} -+ -+void lzxd_free(struct lzxd_stream *lzx) { -+ struct mspack_system *sys; -+ if (lzx) { -+ sys = lzx->sys; -+ sys->free(lzx->inbuf); -+ sys->free(lzx->window); -+ sys->free(lzx); -+ } -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/mspack.h b/libclamav/libmspack-0.4alpha/mspack/mspack.h -new file mode 100755 -index 000000000000..9d05e23fec35 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/mspack.h -@@ -0,0 +1,2353 @@ -+/* libmspack -- a library for working with Microsoft compression formats. -+ * (C) 2003-2013 Stuart Caie -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * 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 Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public License -+ * along with this program; if not, write to the Free Software -+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. -+ */ -+ -+/** \mainpage -+ * -+ * \section intro Introduction -+ * -+ * libmspack is a library which provides compressors and decompressors, -+ * archivers and dearchivers for Microsoft compression formats. -+ * -+ * \section formats Formats supported -+ * -+ * The following file formats are supported: -+ * - SZDD files, which use LZSS compression -+ * - KWAJ files, which use LZSS, LZSS+Huffman or deflate compression -+ * - .HLP (MS Help) files, which use LZSS compression -+ * - .CAB (MS Cabinet) files, which use deflate, LZX or Quantum compression -+ * - .CHM (HTML Help) files, which use LZX compression -+ * - .LIT (MS EBook) files, which use LZX compression and DES encryption -+ * - .LZX (Exchange Offline Addressbook) files, which use LZX compression -+ * -+ * To determine the capabilities of the library, and the binary -+ * compatibility version of any particular compressor or decompressor, use -+ * the mspack_version() function. The UNIX library interface version is -+ * defined as the highest-versioned library component. -+ * -+ * \section starting Getting started -+ * -+ * The macro MSPACK_SYS_SELFTEST() should be used to ensure the library can -+ * be used. In particular, it checks if the caller is using 32-bit file I/O -+ * when the library is compiled for 64-bit file I/O and vice versa. -+ * -+ * If compiled normally, the library includes basic file I/O and memory -+ * management functionality using the standard C library. This can be -+ * customised and replaced entirely by creating a mspack_system structure. -+ * -+ * A compressor or decompressor for the required format must be -+ * instantiated before it can be used. Each construction function takes -+ * one parameter, which is either a pointer to a custom mspack_system -+ * structure, or NULL to use the default. The instantiation returned, if -+ * not NULL, contains function pointers (methods) to work with the given -+ * file format. -+ * -+ * For compression: -+ * - mspack_create_cab_compressor() creates a mscab_compressor -+ * - mspack_create_chm_compressor() creates a mschm_compressor -+ * - mspack_create_lit_compressor() creates a mslit_compressor -+ * - mspack_create_hlp_compressor() creates a mshlp_compressor -+ * - mspack_create_szdd_compressor() creates a msszdd_compressor -+ * - mspack_create_kwaj_compressor() creates a mskwaj_compressor -+ * - mspack_create_oab_compressor() creates a msoab_compressor -+ * -+ * For decompression: -+ * - mspack_create_cab_decompressor() creates a mscab_decompressor -+ * - mspack_create_chm_decompressor() creates a mschm_decompressor -+ * - mspack_create_lit_decompressor() creates a mslit_decompressor -+ * - mspack_create_hlp_decompressor() creates a mshlp_decompressor -+ * - mspack_create_szdd_decompressor() creates a msszdd_decompressor -+ * - mspack_create_kwaj_decompressor() creates a mskwaj_decompressor -+ * - mspack_create_oab_decompressor() creates a msoab_decompressor -+ * -+ * Once finished working with a format, each kind of -+ * compressor/decompressor has its own specific destructor: -+ * - mspack_destroy_cab_compressor() -+ * - mspack_destroy_cab_decompressor() -+ * - mspack_destroy_chm_compressor() -+ * - mspack_destroy_chm_decompressor() -+ * - mspack_destroy_lit_compressor() -+ * - mspack_destroy_lit_decompressor() -+ * - mspack_destroy_hlp_compressor() -+ * - mspack_destroy_hlp_decompressor() -+ * - mspack_destroy_szdd_compressor() -+ * - mspack_destroy_szdd_decompressor() -+ * - mspack_destroy_kwaj_compressor() -+ * - mspack_destroy_kwaj_decompressor() -+ * - mspack_destroy_oab_compressor() -+ * - mspack_destroy_oab_decompressor() -+ * -+ * Destroying a compressor or decompressor does not destroy any objects, -+ * structures or handles that have been created using that compressor or -+ * decompressor. Ensure that everything created or opened is destroyed or -+ * closed before compressor/decompressor is itself destroyed. -+ * -+ * \section errors Error codes -+ * -+ * All compressors and decompressors use the same set of error codes. Most -+ * methods return an error code directly. For methods which do not -+ * return error codes directly, the error code can be obtained with the -+ * last_error() method. -+ * -+ * - #MSPACK_ERR_OK is used to indicate success. This error code is defined -+ * as zero, all other code are non-zero. -+ * - #MSPACK_ERR_ARGS indicates that a method was called with inappropriate -+ * arguments. -+ * - #MSPACK_ERR_OPEN indicates that mspack_system::open() failed. -+ * - #MSPACK_ERR_READ indicates that mspack_system::read() failed. -+ * - #MSPACK_ERR_WRITE indicates that mspack_system::write() failed. -+ * - #MSPACK_ERR_SEEK indicates that mspack_system::seek() failed. -+ * - #MSPACK_ERR_NOMEMORY indicates that mspack_system::alloc() failed. -+ * - #MSPACK_ERR_SIGNATURE indicates that the file being read does not -+ * have the correct "signature". It is probably not a valid file for -+ * whatever format is being read. -+ * - #MSPACK_ERR_DATAFORMAT indicates that the file being used or read -+ * is corrupt. -+ * - #MSPACK_ERR_CHECKSUM indicates that a data checksum has failed. -+ * - #MSPACK_ERR_CRUNCH indicates an error occured during compression. -+ * - #MSPACK_ERR_DECRUNCH indicates an error occured during decompression. -+ * -+ * \section threading Multi-threading -+ * -+ * libmspack methods are reentrant and multithreading-safe when each -+ * thread has its own compressor or decompressor. -+ -+ * You should not call multiple methods simultaneously on a single -+ * compressor or decompressor instance. -+ * -+ * If this may happen, you can either use one compressor or -+ * decompressor per thread, or you can use your preferred lock, -+ * semaphore or mutex library to ensure no more than one method on a -+ * compressor/decompressor is called simultaneously. libmspack will -+ * not do this locking for you. -+ * -+ * Example of incorrect behaviour: -+ * - thread 1 calls mspack_create_cab_decompressor() -+ * - thread 1 calls open() -+ * - thread 1 calls extract() for one file -+ * - thread 2 simultaneously calls extract() for another file -+ * -+ * Correct behaviour: -+ * - thread 1 calls mspack_create_cab_decompressor() -+ * - thread 2 calls mspack_create_cab_decompressor() -+ * - thread 1 calls its own open() / extract() -+ * - thread 2 simultaneously calls its own open() / extract() -+ * -+ * Also correct behaviour: -+ * - thread 1 calls mspack_create_cab_decompressor() -+ * - thread 1 locks a mutex for with the decompressor before -+ * calling any methods on it, and unlocks the mutex after each -+ * method returns. -+ * - thread 1 can share the results of open() with thread 2, and both -+ * can call extract(), provided they both guard against simultaneous -+ * use of extract(), and any other methods, with the mutex -+ */ -+ -+#ifndef LIB_MSPACK_H -+#define LIB_MSPACK_H 1 -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+#include -+#include -+ -+/** -+ * System self-test function, to ensure both library and calling program -+ * can use one another. -+ * -+ * A result of MSPACK_ERR_OK means the library and caller are -+ * compatible. Any other result indicates that the library and caller are -+ * not compatible and should not be used. In particular, a value of -+ * MSPACK_ERR_SEEK means the library and caller use different off_t -+ * datatypes. -+ * -+ * It should be used like so: -+ * -+ * @code -+ * int selftest_result; -+ * MSPACK_SYS_SELFTEST(selftest_result); -+ * if (selftest_result != MSPACK_ERR_OK) { -+ * fprintf(stderr, "incompatible with this build of libmspack\n"); -+ * exit(0); -+ * } -+ * @endcode -+ * -+ * @param result an int variable to store the result of the self-test -+ */ -+#define MSPACK_SYS_SELFTEST(result) do { \ -+ (result) = mspack_sys_selftest_internal(sizeof(off_t)); \ -+} while (0) -+ -+/** Part of the MSPACK_SYS_SELFTEST() macro, must not be used directly. */ -+extern int mspack_sys_selftest_internal(int); -+ -+/** -+ * Enquire about the binary compatibility version of a specific interface in -+ * the library. Currently, the following interfaces are defined: -+ * -+ * - #MSPACK_VER_LIBRARY: the overall library -+ * - #MSPACK_VER_SYSTEM: the mspack_system interface -+ * - #MSPACK_VER_MSCABD: the mscab_decompressor interface -+ * - #MSPACK_VER_MSCABC: the mscab_compressor interface -+ * - #MSPACK_VER_MSCHMD: the mschm_decompressor interface -+ * - #MSPACK_VER_MSCHMC: the mschm_compressor interface -+ * - #MSPACK_VER_MSLITD: the mslit_decompressor interface -+ * - #MSPACK_VER_MSLITC: the mslit_compressor interface -+ * - #MSPACK_VER_MSHLPD: the mshlp_decompressor interface -+ * - #MSPACK_VER_MSHLPC: the mshlp_compressor interface -+ * - #MSPACK_VER_MSSZDDD: the msszdd_decompressor interface -+ * - #MSPACK_VER_MSSZDDC: the msszdd_compressor interface -+ * - #MSPACK_VER_MSKWAJD: the mskwaj_decompressor interface -+ * - #MSPACK_VER_MSKWAJC: the mskwaj_compressor interface -+ * - #MSPACK_VER_MSOABD: the msoab_decompressor interface -+ * - #MSPACK_VER_MSOABC: the msoab_compressor interface -+ * -+ * The result of the function should be interpreted as follows: -+ * - -1: this interface is completely unknown to the library -+ * - 0: this interface is known, but non-functioning -+ * - 1: this interface has all basic functionality -+ * - 2, 3, ...: this interface has additional functionality, clearly marked -+ * in the documentation as "version 2", "version 3" and so on. -+ * -+ * @param entity the interface to request current version of -+ * @return the version of the requested interface -+ */ -+extern int mspack_version(int entity); -+ -+/** Pass to mspack_version() to get the overall library version */ -+#define MSPACK_VER_LIBRARY (0) -+/** Pass to mspack_version() to get the mspack_system version */ -+#define MSPACK_VER_SYSTEM (1) -+/** Pass to mspack_version() to get the mscab_decompressor version */ -+#define MSPACK_VER_MSCABD (2) -+/** Pass to mspack_version() to get the mscab_compressor version */ -+#define MSPACK_VER_MSCABC (3) -+/** Pass to mspack_version() to get the mschm_decompressor version */ -+#define MSPACK_VER_MSCHMD (4) -+/** Pass to mspack_version() to get the mschm_compressor version */ -+#define MSPACK_VER_MSCHMC (5) -+/** Pass to mspack_version() to get the mslit_decompressor version */ -+#define MSPACK_VER_MSLITD (6) -+/** Pass to mspack_version() to get the mslit_compressor version */ -+#define MSPACK_VER_MSLITC (7) -+/** Pass to mspack_version() to get the mshlp_decompressor version */ -+#define MSPACK_VER_MSHLPD (8) -+/** Pass to mspack_version() to get the mshlp_compressor version */ -+#define MSPACK_VER_MSHLPC (9) -+/** Pass to mspack_version() to get the msszdd_decompressor version */ -+#define MSPACK_VER_MSSZDDD (10) -+/** Pass to mspack_version() to get the msszdd_compressor version */ -+#define MSPACK_VER_MSSZDDC (11) -+/** Pass to mspack_version() to get the mskwaj_decompressor version */ -+#define MSPACK_VER_MSKWAJD (12) -+/** Pass to mspack_version() to get the mskwaj_compressor version */ -+#define MSPACK_VER_MSKWAJC (13) -+/** Pass to mspack_version() to get the msoab_decompressor version */ -+#define MSPACK_VER_MSOABD (14) -+/** Pass to mspack_version() to get the msoab_compressor version */ -+#define MSPACK_VER_MSOABC (15) -+ -+/* --- file I/O abstraction ------------------------------------------------ */ -+ -+/** -+ * A structure which abstracts file I/O and memory management. -+ * -+ * The library always uses the mspack_system structure for interaction -+ * with the file system and to allocate, free and copy all memory. It also -+ * uses it to send literal messages to the library user. -+ * -+ * When the library is compiled normally, passing NULL to a compressor or -+ * decompressor constructor will result in a default mspack_system being -+ * used, where all methods are implemented with the standard C library. -+ * However, all constructors support being given a custom created -+ * mspack_system structure, with the library user's own methods. This -+ * allows for more abstract interaction, such as reading and writing files -+ * directly to memory, or from a network socket or pipe. -+ * -+ * Implementors of an mspack_system structure should read all -+ * documentation entries for every structure member, and write methods -+ * which conform to those standards. -+ */ -+struct mspack_system { -+ /** -+ * Opens a file for reading, writing, appending or updating. -+ * -+ * @param self a self-referential pointer to the mspack_system -+ * structure whose open() method is being called. If -+ * this pointer is required by close(), read(), write(), -+ * seek() or tell(), it should be stored in the result -+ * structure at this time. -+ * @param filename the file to be opened. It is passed directly from the -+ * library caller without being modified, so it is up to -+ * the caller what this parameter actually represents. -+ * @param mode one of #MSPACK_SYS_OPEN_READ (open an existing file -+ * for reading), #MSPACK_SYS_OPEN_WRITE (open a new file -+ * for writing), #MSPACK_SYS_OPEN_UPDATE (open an existing -+ * file for reading/writing from the start of the file) or -+ * #MSPACK_SYS_OPEN_APPEND (open an existing file for -+ * reading/writing from the end of the file) -+ * @return a pointer to a mspack_file structure. This structure officially -+ * contains no members, its true contents are up to the -+ * mspack_system implementor. It should contain whatever is needed -+ * for other mspack_system methods to operate. Returning the NULL -+ * pointer indicates an error condition. -+ * @see close(), read(), write(), seek(), tell(), message() -+ */ -+ struct mspack_file * (*open)(struct mspack_system *self, -+ const char *filename, -+ int mode); -+ -+ /** -+ * Closes a previously opened file. If any memory was allocated for this -+ * particular file handle, it should be freed at this time. -+ * -+ * @param file the file to close -+ * @see open() -+ */ -+ void (*close)(struct mspack_file *file); -+ -+ /** -+ * Reads a given number of bytes from an open file. -+ * -+ * @param file the file to read from -+ * @param buffer the location where the read bytes should be stored -+ * @param bytes the number of bytes to read from the file. -+ * @return the number of bytes successfully read (this can be less than -+ * the number requested), zero to mark the end of file, or less -+ * than zero to indicate an error. -+ * @see open(), write() -+ */ -+ int (*read)(struct mspack_file *file, -+ void *buffer, -+ int bytes); -+ -+ /** -+ * Writes a given number of bytes to an open file. -+ * -+ * @param file the file to write to -+ * @param buffer the location where the written bytes should be read from -+ * @param bytes the number of bytes to write to the file. -+ * @return the number of bytes successfully written, this can be less -+ * than the number requested. Zero or less can indicate an error -+ * where no bytes at all could be written. All cases where less -+ * bytes were written than requested are considered by the library -+ * to be an error. -+ * @see open(), read() -+ */ -+ int (*write)(struct mspack_file *file, -+ void *buffer, -+ int bytes); -+ -+ /** -+ * Seeks to a specific file offset within an open file. -+ * -+ * Sometimes the library needs to know the length of a file. It does -+ * this by seeking to the end of the file with seek(file, 0, -+ * MSPACK_SYS_SEEK_END), then calling tell(). Implementations may want -+ * to make a special case for this. -+ * -+ * Due to the potentially varying 32/64 bit datatype off_t on some -+ * architectures, the #MSPACK_SYS_SELFTEST macro MUST be used before -+ * using the library. If not, the error caused by the library passing an -+ * inappropriate stackframe to seek() is subtle and hard to trace. -+ * -+ * @param file the file to be seeked -+ * @param offset an offset to seek, measured in bytes -+ * @param mode one of #MSPACK_SYS_SEEK_START (the offset should be -+ * measured from the start of the file), #MSPACK_SYS_SEEK_CUR -+ * (the offset should be measured from the current file offset) -+ * or #MSPACK_SYS_SEEK_END (the offset should be measured from -+ * the end of the file) -+ * @return zero for success, non-zero for an error -+ * @see open(), tell() -+ */ -+ int (*seek)(struct mspack_file *file, -+ off_t offset, -+ int mode); -+ -+ /** -+ * Returns the current file position (in bytes) of the given file. -+ * -+ * @param file the file whose file position is wanted -+ * @return the current file position of the file -+ * @see open(), seek() -+ */ -+ off_t (*tell)(struct mspack_file *file); -+ -+ /** -+ * Used to send messages from the library to the user. -+ * -+ * Occasionally, the library generates warnings or other messages in -+ * plain english to inform the human user. These are informational only -+ * and can be ignored if not wanted. -+ * -+ * @param file may be a file handle returned from open() if this message -+ * pertains to a specific open file, or NULL if not related to -+ * a specific file. -+ * @param format a printf() style format string. It does NOT include a -+ * trailing newline. -+ * @see open() -+ */ -+ void (*message)(struct mspack_file *file, -+ const char *format, -+ ...); -+ -+ /** -+ * Allocates memory. -+ * -+ * @param self a self-referential pointer to the mspack_system -+ * structure whose alloc() method is being called. -+ * @param bytes the number of bytes to allocate -+ * @result a pointer to the requested number of bytes, or NULL if -+ * not enough memory is available -+ * @see free() -+ */ -+ void * (*alloc)(struct mspack_system *self, -+ size_t bytes); -+ -+ /** -+ * Frees memory. -+ * -+ * @param ptr the memory to be freed. -+ * @see alloc() -+ */ -+ void (*free)(void *ptr); -+ -+ /** -+ * Copies from one region of memory to another. -+ * -+ * The regions of memory are guaranteed not to overlap, are usually less -+ * than 256 bytes, and may not be aligned. Please note that the source -+ * parameter comes before the destination parameter, unlike the standard -+ * C function memcpy(). -+ * -+ * @param src the region of memory to copy from -+ * @param dest the region of memory to copy to -+ * @param bytes the size of the memory region, in bytes -+ */ -+ void (*copy)(void *src, -+ void *dest, -+ size_t bytes); -+ -+ /** -+ * A null pointer to mark the end of mspack_system. It must equal NULL. -+ * -+ * Should the mspack_system structure extend in the future, this NULL -+ * will be seen, rather than have an invalid method pointer called. -+ */ -+ void *null_ptr; -+}; -+ -+/** mspack_system::open() mode: open existing file for reading. */ -+#define MSPACK_SYS_OPEN_READ (0) -+/** mspack_system::open() mode: open new file for writing */ -+#define MSPACK_SYS_OPEN_WRITE (1) -+/** mspack_system::open() mode: open existing file for writing */ -+#define MSPACK_SYS_OPEN_UPDATE (2) -+/** mspack_system::open() mode: open existing file for writing */ -+#define MSPACK_SYS_OPEN_APPEND (3) -+ -+/** mspack_system::seek() mode: seek relative to start of file */ -+#define MSPACK_SYS_SEEK_START (0) -+/** mspack_system::seek() mode: seek relative to current offset */ -+#define MSPACK_SYS_SEEK_CUR (1) -+/** mspack_system::seek() mode: seek relative to end of file */ -+#define MSPACK_SYS_SEEK_END (2) -+ -+/** -+ * A structure which represents an open file handle. The contents of this -+ * structure are determined by the implementation of the -+ * mspack_system::open() method. -+ */ -+struct mspack_file { -+ int dummy; -+}; -+ -+/* --- error codes --------------------------------------------------------- */ -+ -+/** Error code: no error */ -+#define MSPACK_ERR_OK (0) -+/** Error code: bad arguments to method */ -+#define MSPACK_ERR_ARGS (1) -+/** Error code: error opening file */ -+#define MSPACK_ERR_OPEN (2) -+/** Error code: error reading file */ -+#define MSPACK_ERR_READ (3) -+/** Error code: error writing file */ -+#define MSPACK_ERR_WRITE (4) -+/** Error code: seek error */ -+#define MSPACK_ERR_SEEK (5) -+/** Error code: out of memory */ -+#define MSPACK_ERR_NOMEMORY (6) -+/** Error code: bad "magic id" in file */ -+#define MSPACK_ERR_SIGNATURE (7) -+/** Error code: bad or corrupt file format */ -+#define MSPACK_ERR_DATAFORMAT (8) -+/** Error code: bad checksum or CRC */ -+#define MSPACK_ERR_CHECKSUM (9) -+/** Error code: error during compression */ -+#define MSPACK_ERR_CRUNCH (10) -+/** Error code: error during decompression */ -+#define MSPACK_ERR_DECRUNCH (11) -+ -+/* --- functions available in library -------------------------------------- */ -+ -+/** Creates a new CAB compressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mscab_compressor or NULL -+ */ -+extern struct mscab_compressor * -+ mspack_create_cab_compressor(struct mspack_system *sys); -+ -+/** Creates a new CAB decompressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mscab_decompressor or NULL -+ */ -+extern struct mscab_decompressor * -+ mspack_create_cab_decompressor(struct mspack_system *sys); -+ -+/** Destroys an existing CAB compressor. -+ * @param self the #mscab_compressor to destroy -+ */ -+extern void mspack_destroy_cab_compressor(struct mscab_compressor *self); -+ -+/** Destroys an existing CAB decompressor. -+ * @param self the #mscab_decompressor to destroy -+ */ -+extern void mspack_destroy_cab_decompressor(struct mscab_decompressor *self); -+ -+ -+/** Creates a new CHM compressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mschm_compressor or NULL -+ */ -+extern struct mschm_compressor * -+ mspack_create_chm_compressor(struct mspack_system *sys); -+ -+/** Creates a new CHM decompressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mschm_decompressor or NULL -+ */ -+extern struct mschm_decompressor * -+ mspack_create_chm_decompressor(struct mspack_system *sys); -+ -+/** Destroys an existing CHM compressor. -+ * @param self the #mschm_compressor to destroy -+ */ -+extern void mspack_destroy_chm_compressor(struct mschm_compressor *self); -+ -+/** Destroys an existing CHM decompressor. -+ * @param self the #mschm_decompressor to destroy -+ */ -+extern void mspack_destroy_chm_decompressor(struct mschm_decompressor *self); -+ -+ -+/** Creates a new LIT compressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mslit_compressor or NULL -+ */ -+extern struct mslit_compressor * -+ mspack_create_lit_compressor(struct mspack_system *sys); -+ -+/** Creates a new LIT decompressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mslit_decompressor or NULL -+ */ -+extern struct mslit_decompressor * -+ mspack_create_lit_decompressor(struct mspack_system *sys); -+ -+/** Destroys an existing LIT compressor. -+ * @param self the #mslit_compressor to destroy -+ */ -+extern void mspack_destroy_lit_compressor(struct mslit_compressor *self); -+ -+/** Destroys an existing LIT decompressor. -+ * @param self the #mslit_decompressor to destroy -+ */ -+extern void mspack_destroy_lit_decompressor(struct mslit_decompressor *self); -+ -+ -+/** Creates a new HLP compressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mshlp_compressor or NULL -+ */ -+extern struct mshlp_compressor * -+ mspack_create_hlp_compressor(struct mspack_system *sys); -+ -+/** Creates a new HLP decompressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mshlp_decompressor or NULL -+ */ -+extern struct mshlp_decompressor * -+ mspack_create_hlp_decompressor(struct mspack_system *sys); -+ -+/** Destroys an existing hlp compressor. -+ * @param self the #mshlp_compressor to destroy -+ */ -+extern void mspack_destroy_hlp_compressor(struct mshlp_compressor *self); -+ -+/** Destroys an existing hlp decompressor. -+ * @param self the #mshlp_decompressor to destroy -+ */ -+extern void mspack_destroy_hlp_decompressor(struct mshlp_decompressor *self); -+ -+ -+/** Creates a new SZDD compressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #msszdd_compressor or NULL -+ */ -+extern struct msszdd_compressor * -+ mspack_create_szdd_compressor(struct mspack_system *sys); -+ -+/** Creates a new SZDD decompressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #msszdd_decompressor or NULL -+ */ -+extern struct msszdd_decompressor * -+ mspack_create_szdd_decompressor(struct mspack_system *sys); -+ -+/** Destroys an existing SZDD compressor. -+ * @param self the #msszdd_compressor to destroy -+ */ -+extern void mspack_destroy_szdd_compressor(struct msszdd_compressor *self); -+ -+/** Destroys an existing SZDD decompressor. -+ * @param self the #msszdd_decompressor to destroy -+ */ -+extern void mspack_destroy_szdd_decompressor(struct msszdd_decompressor *self); -+ -+ -+/** Creates a new KWAJ compressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mskwaj_compressor or NULL -+ */ -+extern struct mskwaj_compressor * -+ mspack_create_kwaj_compressor(struct mspack_system *sys); -+ -+/** Creates a new KWAJ decompressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #mskwaj_decompressor or NULL -+ */ -+extern struct mskwaj_decompressor * -+ mspack_create_kwaj_decompressor(struct mspack_system *sys); -+ -+/** Destroys an existing KWAJ compressor. -+ * @param self the #mskwaj_compressor to destroy -+ */ -+extern void mspack_destroy_kwaj_compressor(struct mskwaj_compressor *self); -+ -+/** Destroys an existing KWAJ decompressor. -+ * @param self the #mskwaj_decompressor to destroy -+ */ -+extern void mspack_destroy_kwaj_decompressor(struct mskwaj_decompressor *self); -+ -+ -+/** Creates a new OAB compressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #msoab_compressor or NULL -+ */ -+extern struct msoab_compressor * -+ mspack_create_oab_compressor(struct mspack_system *sys); -+ -+/** Creates a new OAB decompressor. -+ * @param sys a custom mspack_system structure, or NULL to use the default -+ * @return a #msoab_decompressor or NULL -+ */ -+extern struct msoab_decompressor * -+ mspack_create_oab_decompressor(struct mspack_system *sys); -+ -+/** Destroys an existing OAB compressor. -+ * @param self the #msoab_compressor to destroy -+ */ -+extern void mspack_destroy_oab_compressor(struct msoab_compressor *self); -+ -+/** Destroys an existing OAB decompressor. -+ * @param self the #msoab_decompressor to destroy -+ */ -+extern void mspack_destroy_oab_decompressor(struct msoab_decompressor *self); -+ -+ -+/* --- support for .CAB (MS Cabinet) file format --------------------------- */ -+ -+/** -+ * A structure which represents a single cabinet file. -+ * -+ * All fields are READ ONLY. -+ * -+ * If this cabinet is part of a merged cabinet set, the #files and #folders -+ * fields are common to all cabinets in the set, and will be identical. -+ * -+ * @see mscab_decompressor::open(), mscab_decompressor::close(), -+ * mscab_decompressor::search() -+ */ -+struct mscabd_cabinet { -+ /** -+ * The next cabinet in a chained list, if this cabinet was opened with -+ * mscab_decompressor::search(). May be NULL to mark the end of the -+ * list. -+ */ -+ struct mscabd_cabinet *next; -+ -+ /** -+ * The filename of the cabinet. More correctly, the filename of the -+ * physical file that the cabinet resides in. This is given by the -+ * library user and may be in any format. -+ */ -+ const char *filename; -+ -+ /** The file offset of cabinet within the physical file it resides in. */ -+ off_t base_offset; -+ -+ /** The length of the cabinet file in bytes. */ -+ unsigned int length; -+ -+ /** The previous cabinet in a cabinet set, or NULL. */ -+ struct mscabd_cabinet *prevcab; -+ -+ /** The next cabinet in a cabinet set, or NULL. */ -+ struct mscabd_cabinet *nextcab; -+ -+ /** The filename of the previous cabinet in a cabinet set, or NULL. */ -+ char *prevname; -+ -+ /** The filename of the next cabinet in a cabinet set, or NULL. */ -+ char *nextname; -+ -+ /** The name of the disk containing the previous cabinet in a cabinet -+ * set, or NULL. -+ */ -+ char *previnfo; -+ -+ /** The name of the disk containing the next cabinet in a cabinet set, -+ * or NULL. -+ */ -+ char *nextinfo; -+ -+ /** A list of all files in the cabinet or cabinet set. */ -+ struct mscabd_file *files; -+ -+ /** A list of all folders in the cabinet or cabinet set. */ -+ struct mscabd_folder *folders; -+ -+ /** -+ * The set ID of the cabinet. All cabinets in the same set should have -+ * the same set ID. -+ */ -+ unsigned short set_id; -+ -+ /** -+ * The index number of the cabinet within the set. Numbering should -+ * start from 0 for the first cabinet in the set, and increment by 1 for -+ * each following cabinet. -+ */ -+ unsigned short set_index; -+ -+ /** -+ * The number of bytes reserved in the header area of the cabinet. -+ * -+ * If this is non-zero and flags has MSCAB_HDR_RESV set, this data can -+ * be read by the calling application. It is of the given length, -+ * located at offset (base_offset + MSCAB_HDR_RESV_OFFSET) in the -+ * cabinet file. -+ * -+ * @see flags -+ */ -+ unsigned short header_resv; -+ -+ /** -+ * Header flags. -+ * -+ * - MSCAB_HDR_PREVCAB indicates the cabinet is part of a cabinet set, and -+ * has a predecessor cabinet. -+ * - MSCAB_HDR_NEXTCAB indicates the cabinet is part of a cabinet set, and -+ * has a successor cabinet. -+ * - MSCAB_HDR_RESV indicates the cabinet has reserved header space. -+ * -+ * @see prevname, previnfo, nextname, nextinfo, header_resv -+ */ -+ int flags; -+}; -+ -+/** Offset from start of cabinet to the reserved header data (if present). */ -+#define MSCAB_HDR_RESV_OFFSET (0x28) -+ -+/** Cabinet header flag: cabinet has a predecessor */ -+#define MSCAB_HDR_PREVCAB (0x01) -+/** Cabinet header flag: cabinet has a successor */ -+#define MSCAB_HDR_NEXTCAB (0x02) -+/** Cabinet header flag: cabinet has reserved header space */ -+#define MSCAB_HDR_RESV (0x04) -+ -+/** -+ * A structure which represents a single folder in a cabinet or cabinet set. -+ * -+ * All fields are READ ONLY. -+ * -+ * A folder is a single compressed stream of data. When uncompressed, it -+ * holds the data of one or more files. A folder may be split across more -+ * than one cabinet. -+ */ -+struct mscabd_folder { -+ /** -+ * A pointer to the next folder in this cabinet or cabinet set, or NULL -+ * if this is the final folder. -+ */ -+ struct mscabd_folder *next; -+ -+ /** -+ * The compression format used by this folder. -+ * -+ * The macro MSCABD_COMP_METHOD() should be used on this field to get -+ * the algorithm used. The macro MSCABD_COMP_LEVEL() should be used to get -+ * the "compression level". -+ * -+ * @see MSCABD_COMP_METHOD(), MSCABD_COMP_LEVEL() -+ */ -+ int comp_type; -+ -+ /** -+ * The total number of data blocks used by this folder. This includes -+ * data blocks present in other files, if this folder spans more than -+ * one cabinet. -+ */ -+ unsigned int num_blocks; -+}; -+ -+/** -+ * Returns the compression method used by a folder. -+ * -+ * @param comp_type a mscabd_folder::comp_type value -+ * @return one of #MSCAB_COMP_NONE, #MSCAB_COMP_MSZIP, #MSCAB_COMP_QUANTUM -+ * or #MSCAB_COMP_LZX -+ */ -+#define MSCABD_COMP_METHOD(comp_type) ((comp_type) & 0x0F) -+/** -+ * Returns the compression level used by a folder. -+ * -+ * @param comp_type a mscabd_folder::comp_type value -+ * @return the compression level. This is only defined by LZX and Quantum -+ * compression -+ */ -+#define MSCABD_COMP_LEVEL(comp_type) (((comp_type) >> 8) & 0x1F) -+ -+/** Compression mode: no compression. */ -+#define MSCAB_COMP_NONE (0) -+/** Compression mode: MSZIP (deflate) compression. */ -+#define MSCAB_COMP_MSZIP (1) -+/** Compression mode: Quantum compression */ -+#define MSCAB_COMP_QUANTUM (2) -+/** Compression mode: LZX compression */ -+#define MSCAB_COMP_LZX (3) -+ -+/** -+ * A structure which represents a single file in a cabinet or cabinet set. -+ * -+ * All fields are READ ONLY. -+ */ -+struct mscabd_file { -+ /** -+ * The next file in the cabinet or cabinet set, or NULL if this is the -+ * final file. -+ */ -+ struct mscabd_file *next; -+ -+ /** -+ * The filename of the file. -+ * -+ * A null terminated string of up to 255 bytes in length, it may be in -+ * either ISO-8859-1 or UTF8 format, depending on the file attributes. -+ * -+ * @see attribs -+ */ -+ char *filename; -+ -+ /** The uncompressed length of the file, in bytes. */ -+ unsigned int length; -+ -+ /** -+ * File attributes. -+ * -+ * The following attributes are defined: -+ * - #MSCAB_ATTRIB_RDONLY indicates the file is write protected. -+ * - #MSCAB_ATTRIB_HIDDEN indicates the file is hidden. -+ * - #MSCAB_ATTRIB_SYSTEM indicates the file is a operating system file. -+ * - #MSCAB_ATTRIB_ARCH indicates the file is "archived". -+ * - #MSCAB_ATTRIB_EXEC indicates the file is an executable program. -+ * - #MSCAB_ATTRIB_UTF_NAME indicates the filename is in UTF8 format rather -+ * than ISO-8859-1. -+ */ -+ int attribs; -+ -+ /** File's last modified time, hour field. */ -+ char time_h; -+ /** File's last modified time, minute field. */ -+ char time_m; -+ /** File's last modified time, second field. */ -+ char time_s; -+ -+ /** File's last modified date, day field. */ -+ char date_d; -+ /** File's last modified date, month field. */ -+ char date_m; -+ /** File's last modified date, year field. */ -+ int date_y; -+ -+ /** A pointer to the folder that contains this file. */ -+ struct mscabd_folder *folder; -+ -+ /** The uncompressed offset of this file in its folder. */ -+ unsigned int offset; -+}; -+ -+/** mscabd_file::attribs attribute: file is read-only. */ -+#define MSCAB_ATTRIB_RDONLY (0x01) -+/** mscabd_file::attribs attribute: file is hidden. */ -+#define MSCAB_ATTRIB_HIDDEN (0x02) -+/** mscabd_file::attribs attribute: file is an operating system file. */ -+#define MSCAB_ATTRIB_SYSTEM (0x04) -+/** mscabd_file::attribs attribute: file is "archived". */ -+#define MSCAB_ATTRIB_ARCH (0x20) -+/** mscabd_file::attribs attribute: file is an executable program. */ -+#define MSCAB_ATTRIB_EXEC (0x40) -+/** mscabd_file::attribs attribute: filename is UTF8, not ISO-8859-1. */ -+#define MSCAB_ATTRIB_UTF_NAME (0x80) -+ -+/** mscab_decompressor::set_param() parameter: search buffer size. */ -+#define MSCABD_PARAM_SEARCHBUF (0) -+/** mscab_decompressor::set_param() parameter: repair MS-ZIP streams? */ -+#define MSCABD_PARAM_FIXMSZIP (1) -+/** mscab_decompressor::set_param() parameter: size of decompression buffer */ -+#define MSCABD_PARAM_DECOMPBUF (2) -+ -+/** TODO */ -+struct mscab_compressor { -+ int dummy; -+}; -+ -+/** -+ * A decompressor for .CAB (Microsoft Cabinet) files -+ * -+ * All fields are READ ONLY. -+ * -+ * @see mspack_create_cab_decompressor(), mspack_destroy_cab_decompressor() -+ */ -+struct mscab_decompressor { -+ /** -+ * Opens a cabinet file and reads its contents. -+ * -+ * If the file opened is a valid cabinet file, all headers will be read -+ * and a mscabd_cabinet structure will be returned, with a full list of -+ * folders and files. -+ * -+ * In the case of an error occuring, NULL is returned and the error code -+ * is available from last_error(). -+ * -+ * The filename pointer should be considered "in use" until close() is -+ * called on the cabinet. -+ * -+ * @param self a self-referential pointer to the mscab_decompressor -+ * instance being called -+ * @param filename the filename of the cabinet file. This is passed -+ * directly to mspack_system::open(). -+ * @return a pointer to a mscabd_cabinet structure, or NULL on failure -+ * @see close(), search(), last_error() -+ */ -+ struct mscabd_cabinet * (*open) (struct mscab_decompressor *self, -+ const char *filename); -+ -+ /** -+ * Closes a previously opened cabinet or cabinet set. -+ * -+ * This closes a cabinet, all cabinets associated with it via the -+ * mscabd_cabinet::next, mscabd_cabinet::prevcab and -+ * mscabd_cabinet::nextcab pointers, and all folders and files. All -+ * memory used by these entities is freed. -+ * -+ * The cabinet pointer is now invalid and cannot be used again. All -+ * mscabd_folder and mscabd_file pointers from that cabinet or cabinet -+ * set are also now invalid, and cannot be used again. -+ * -+ * If the cabinet pointer given was created using search(), it MUST be -+ * the cabinet pointer returned by search() and not one of the later -+ * cabinet pointers further along the mscabd_cabinet::next chain. -+ -+ * If extra cabinets have been added using append() or prepend(), these -+ * will all be freed, even if the cabinet pointer given is not the first -+ * cabinet in the set. Do NOT close() more than one cabinet in the set. -+ * -+ * The mscabd_cabinet::filename is not freed by the library, as it is -+ * not allocated by the library. The caller should free this itself if -+ * necessary, before it is lost forever. -+ * -+ * @param self a self-referential pointer to the mscab_decompressor -+ * instance being called -+ * @param cab the cabinet to close -+ * @see open(), search(), append(), prepend() -+ */ -+ void (*close)(struct mscab_decompressor *self, -+ struct mscabd_cabinet *cab); -+ -+ /** -+ * Searches a regular file for embedded cabinets. -+ * -+ * This opens a normal file with the given filename and will search the -+ * entire file for embedded cabinet files -+ * -+ * If any cabinets are found, the equivalent of open() is called on each -+ * potential cabinet file at the offset it was found. All successfully -+ * open()ed cabinets are kept in a list. -+ * -+ * The first cabinet found will be returned directly as the result of -+ * this method. Any further cabinets found will be chained in a list -+ * using the mscabd_cabinet::next field. -+ * -+ * In the case of an error occuring anywhere other than the simulated -+ * open(), NULL is returned and the error code is available from -+ * last_error(). -+ * -+ * If no error occurs, but no cabinets can be found in the file, NULL is -+ * returned and last_error() returns MSPACK_ERR_OK. -+ * -+ * The filename pointer should be considered in use until close() is -+ * called on the cabinet. -+ * -+ * close() should only be called on the result of search(), not on any -+ * subsequent cabinets in the mscabd_cabinet::next chain. -+ * -+ * @param self a self-referential pointer to the mscab_decompressor -+ * instance being called -+ * @param filename the filename of the file to search for cabinets. This -+ * is passed directly to mspack_system::open(). -+ * @return a pointer to a mscabd_cabinet structure, or NULL -+ * @see close(), open(), last_error() -+ */ -+ struct mscabd_cabinet * (*search) (struct mscab_decompressor *self, -+ const char *filename); -+ -+ /** -+ * Appends one mscabd_cabinet to another, forming or extending a cabinet -+ * set. -+ * -+ * This will attempt to append one cabinet to another such that -+ * (cab->nextcab == nextcab) && (nextcab->prevcab == cab) and -+ * any folders split between the two cabinets are merged. -+ * -+ * The cabinets MUST be part of a cabinet set -- a cabinet set is a -+ * cabinet that spans more than one physical cabinet file on disk -- and -+ * must be appropriately matched. -+ * -+ * It can be determined if a cabinet has further parts to load by -+ * examining the mscabd_cabinet::flags field: -+ * -+ * - if (flags & MSCAB_HDR_PREVCAB) is non-zero, there is a -+ * predecessor cabinet to open() and prepend(). Its MS-DOS -+ * case-insensitive filename is mscabd_cabinet::prevname -+ * - if (flags & MSCAB_HDR_NEXTCAB) is non-zero, there is a -+ * successor cabinet to open() and append(). Its MS-DOS case-insensitive -+ * filename is mscabd_cabinet::nextname -+ * -+ * If the cabinets do not match, an error code will be returned. Neither -+ * cabinet has been altered, and both should be closed seperately. -+ * -+ * Files and folders in a cabinet set are a single entity. All cabinets -+ * in a set use the same file list, which is updated as cabinets in the -+ * set are added. All pointers to mscabd_folder and mscabd_file -+ * structures in either cabinet must be discarded and re-obtained after -+ * merging. -+ * -+ * @param self a self-referential pointer to the mscab_decompressor -+ * instance being called -+ * @param cab the cabinet which will be appended to, -+ * predecessor of nextcab -+ * @param nextcab the cabinet which will be appended, -+ * successor of cab -+ * @return an error code, or MSPACK_ERR_OK if successful -+ * @see prepend(), open(), close() -+ */ -+ int (*append) (struct mscab_decompressor *self, -+ struct mscabd_cabinet *cab, -+ struct mscabd_cabinet *nextcab); -+ -+ /** -+ * Prepends one mscabd_cabinet to another, forming or extending a -+ * cabinet set. -+ * -+ * This will attempt to prepend one cabinet to another, such that -+ * (cab->prevcab == prevcab) && (prevcab->nextcab == cab). In -+ * all other respects, it is identical to append(). See append() for the -+ * full documentation. -+ * -+ * @param self a self-referential pointer to the mscab_decompressor -+ * instance being called -+ * @param cab the cabinet which will be prepended to, -+ * successor of prevcab -+ * @param prevcab the cabinet which will be prepended, -+ * predecessor of cab -+ * @return an error code, or MSPACK_ERR_OK if successful -+ * @see append(), open(), close() -+ */ -+ int (*prepend) (struct mscab_decompressor *self, -+ struct mscabd_cabinet *cab, -+ struct mscabd_cabinet *prevcab); -+ -+ /** -+ * Extracts a file from a cabinet or cabinet set. -+ * -+ * This extracts a compressed file in a cabinet and writes it to the given -+ * filename. -+ * -+ * The MS-DOS filename of the file, mscabd_file::filename, is NOT USED -+ * by extract(). The caller must examine this MS-DOS filename, copy and -+ * change it as necessary, create directories as necessary, and provide -+ * the correct filename as a parameter, which will be passed unchanged -+ * to the decompressor's mspack_system::open() -+ * -+ * If the file belongs to a split folder in a multi-part cabinet set, -+ * and not enough parts of the cabinet set have been loaded and appended -+ * or prepended, an error will be returned immediately. -+ * -+ * @param self a self-referential pointer to the mscab_decompressor -+ * instance being called -+ * @param file the file to be decompressed -+ * @param filename the filename of the file being written to -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*extract)(struct mscab_decompressor *self, -+ struct mscabd_file *file, -+ const char *filename); -+ -+ /** -+ * Sets a CAB decompression engine parameter. -+ * -+ * The following parameters are defined: -+ * - #MSCABD_PARAM_SEARCHBUF: How many bytes should be allocated as a -+ * buffer when using search()? The minimum value is 4. The default -+ * value is 32768. -+ * - #MSCABD_PARAM_FIXMSZIP: If non-zero, extract() will ignore bad -+ * checksums and recover from decompression errors in MS-ZIP -+ * compressed folders. The default value is 0 (don't recover). -+ * - #MSCABD_PARAM_DECOMPBUF: How many bytes should be used as an input -+ * bit buffer by decompressors? The minimum value is 4. The default -+ * value is 4096. -+ * -+ * @param self a self-referential pointer to the mscab_decompressor -+ * instance being called -+ * @param param the parameter to set -+ * @param value the value to set the parameter to -+ * @return MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if there -+ * is a problem with either parameter or value. -+ * @see search(), extract() -+ */ -+ int (*set_param)(struct mscab_decompressor *self, -+ int param, -+ int value); -+ -+ /** -+ * Returns the error code set by the most recently called method. -+ * -+ * This is useful for open() and search(), which do not return an error -+ * code directly. -+ * -+ * @param self a self-referential pointer to the mscab_decompressor -+ * instance being called -+ * @return the most recent error code -+ * @see open(), search() -+ */ -+ int (*last_error)(struct mscab_decompressor *self); -+}; -+ -+/* --- support for .CHM (HTMLHelp) file format ----------------------------- */ -+ -+/** -+ * A structure which represents a file to be placed in a CHM helpfile. -+ * -+ * A contiguous array of these structures should be passed to -+ * mschm_compressor::generate(). The array list is terminated with an -+ * entry whose mschmc_file::section field is set to #MSCHMC_ENDLIST, the -+ * other fields in this entry are ignored. -+ */ -+struct mschmc_file { -+ /** One of #MSCHMC_ENDLIST, #MSCHMC_UNCOMP or #MSCHMC_MSCOMP. */ -+ int section; -+ -+ /** The filename of the source file that will be added to the CHM. This -+ * is passed directly to mspack_system::open(). */ -+ const char *filename; -+ -+ /** The full path and filename of the file within the CHM helpfile, a -+ * UTF-1 encoded null-terminated string. */ -+ char *chm_filename; -+ -+ /** The length of the file, in bytes. This will be adhered to strictly -+ * and a read error will be issued if this many bytes cannot be read -+ * from the real file at CHM generation time. */ -+ off_t length; -+}; -+ -+/** -+ * A structure which represents a section of a CHM helpfile. -+ * -+ * All fields are READ ONLY. -+ * -+ * Not used directly, but used as a generic base type for -+ * mschmd_sec_uncompressed and mschmd_sec_mscompressed. -+ */ -+struct mschmd_section { -+ /** A pointer to the CHM helpfile that contains this section. */ -+ struct mschmd_header *chm; -+ -+ /** -+ * The section ID. Either 0 for the uncompressed section -+ * mschmd_sec_uncompressed, or 1 for the LZX compressed section -+ * mschmd_sec_mscompressed. No other section IDs are known. -+ */ -+ unsigned int id; -+}; -+ -+/** -+ * A structure which represents the uncompressed section of a CHM helpfile. -+ * -+ * All fields are READ ONLY. -+ */ -+struct mschmd_sec_uncompressed { -+ /** Generic section data. */ -+ struct mschmd_section base; -+ -+ /** The file offset of where this section begins in the CHM helpfile. */ -+ off_t offset; -+}; -+ -+/** -+ * A structure which represents the LZX compressed section of a CHM helpfile. -+ * -+ * All fields are READ ONLY. -+ */ -+struct mschmd_sec_mscompressed { -+ /** Generic section data. */ -+ struct mschmd_section base; -+ -+ /** A pointer to the meta-file which represents all LZX compressed data. */ -+ struct mschmd_file *content; -+ -+ /** A pointer to the file which contains the LZX control data. */ -+ struct mschmd_file *control; -+ -+ /** A pointer to the file which contains the LZX reset table. */ -+ struct mschmd_file *rtable; -+ -+ /** A pointer to the file which contains the LZX span information. -+ * Available only in CHM decoder version 2 and above. -+ */ -+ struct mschmd_file *spaninfo; -+}; -+ -+/** -+ * A structure which represents a CHM helpfile. -+ * -+ * All fields are READ ONLY. -+ */ -+struct mschmd_header { -+ /** The version of the CHM file format used in this file. */ -+ unsigned int version; -+ -+ /** -+ * The "timestamp" of the CHM helpfile. -+ * -+ * It is the lower 32 bits of a 64-bit value representing the number of -+ * centiseconds since 1601-01-01 00:00:00 UTC, plus 42. It is not useful -+ * as a timestamp, but it is useful as a semi-unique ID. -+ */ -+ unsigned int timestamp; -+ -+ /** -+ * The default Language and Country ID (LCID) of the user who ran the -+ * HTMLHelp Compiler. This is not the language of the CHM file itself. -+ */ -+ unsigned int language; -+ -+ /** -+ * The filename of the CHM helpfile. This is given by the library user -+ * and may be in any format. -+ */ -+ const char *filename; -+ -+ /** The length of the CHM helpfile, in bytes. */ -+ off_t length; -+ -+ /** A list of all non-system files in the CHM helpfile. */ -+ struct mschmd_file *files; -+ -+ /** -+ * A list of all system files in the CHM helpfile. -+ * -+ * System files are files which begin with "::". They are meta-files -+ * generated by the CHM creation process. -+ */ -+ struct mschmd_file *sysfiles; -+ -+ /** The section 0 (uncompressed) data in this CHM helpfile. */ -+ struct mschmd_sec_uncompressed sec0; -+ -+ /** The section 1 (MSCompressed) data in this CHM helpfile. */ -+ struct mschmd_sec_mscompressed sec1; -+ -+ /** The file offset of the first PMGL/PMGI directory chunk. */ -+ off_t dir_offset; -+ -+ /** The number of PMGL/PMGI directory chunks in this CHM helpfile. */ -+ unsigned int num_chunks; -+ -+ /** The size of each PMGL/PMGI chunk, in bytes. */ -+ unsigned int chunk_size; -+ -+ /** The "density" of the quick-reference section in PMGL/PMGI chunks. */ -+ unsigned int density; -+ -+ /** The depth of the index tree. -+ * -+ * - if 1, there are no PMGI chunks, only PMGL chunks. -+ * - if 2, there is 1 PMGI chunk. All chunk indices point to PMGL chunks. -+ * - if 3, the root PMGI chunk points to secondary PMGI chunks, which in -+ * turn point to PMGL chunks. -+ * - and so on... -+ */ -+ unsigned int depth; -+ -+ /** -+ * The number of the root PMGI chunk. -+ * -+ * If there is no index in the CHM helpfile, this will be 0xFFFFFFFF. -+ */ -+ unsigned int index_root; -+ -+ /** -+ * The number of the first PMGL chunk. Usually zero. -+ * Available only in CHM decoder version 2 and above. -+ */ -+ unsigned int first_pmgl; -+ -+ /** -+ * The number of the last PMGL chunk. Usually num_chunks-1. -+ * Available only in CHM decoder version 2 and above. -+ */ -+ unsigned int last_pmgl; -+ -+ /** -+ * A cache of loaded chunks, filled in by mschm_decoder::fast_find(). -+ * Available only in CHM decoder version 2 and above. -+ */ -+ unsigned char **chunk_cache; -+}; -+ -+/** -+ * A structure which represents a file stored in a CHM helpfile. -+ * -+ * All fields are READ ONLY. -+ */ -+struct mschmd_file { -+ /** -+ * A pointer to the next file in the list, or NULL if this is the final -+ * file. -+ */ -+ struct mschmd_file *next; -+ -+ /** -+ * A pointer to the section that this file is located in. Indirectly, -+ * it also points to the CHM helpfile the file is located in. -+ */ -+ struct mschmd_section *section; -+ -+ /** The offset within the section data that this file is located at. */ -+ off_t offset; -+ -+ /** The length of this file, in bytes */ -+ off_t length; -+ -+ /** The filename of this file -- a null terminated string in UTF-8. */ -+ char *filename; -+}; -+ -+/** mschmc_file::section value: end of CHM file list */ -+#define MSCHMC_ENDLIST (0) -+/** mschmc_file::section value: this file is in the Uncompressed section */ -+#define MSCHMC_UNCOMP (1) -+/** mschmc_file::section value: this file is in the MSCompressed section */ -+#define MSCHMC_MSCOMP (2) -+ -+/** mschm_compressor::set_param() parameter: "timestamp" header */ -+#define MSCHMC_PARAM_TIMESTAMP (0) -+/** mschm_compressor::set_param() parameter: "language" header */ -+#define MSCHMC_PARAM_LANGUAGE (1) -+/** mschm_compressor::set_param() parameter: LZX window size */ -+#define MSCHMC_PARAM_LZXWINDOW (2) -+/** mschm_compressor::set_param() parameter: intra-chunk quickref density */ -+#define MSCHMC_PARAM_DENSITY (3) -+/** mschm_compressor::set_param() parameter: whether to create indices */ -+#define MSCHMC_PARAM_INDEX (4) -+ -+/** -+ * A compressor for .CHM (Microsoft HTMLHelp) files. -+ * -+ * All fields are READ ONLY. -+ * -+ * @see mspack_create_chm_compressor(), mspack_destroy_chm_compressor() -+ */ -+struct mschm_compressor { -+ /** -+ * Generates a CHM help file. -+ * -+ * The help file will contain up to two sections, an Uncompressed -+ * section and potentially an MSCompressed (LZX compressed) -+ * section. -+ * -+ * While the contents listing of a CHM file is always in lexical order, -+ * the file list passed in will be taken as the correct order for files -+ * within the sections. It is in your interest to place similar files -+ * together for better compression. -+ * -+ * There are two modes of generation, to use a temporary file or not to -+ * use one. See use_temporary_file() for the behaviour of generate() in -+ * these two different modes. -+ * -+ * @param self a self-referential pointer to the mschm_compressor -+ * instance being called -+ * @param file_list an array of mschmc_file structures, terminated -+ * with an entry whose mschmc_file::section field is -+ * #MSCHMC_ENDLIST. The order of the list is -+ * preserved within each section. The length of any -+ * mschmc_file::chm_filename string cannot exceed -+ * roughly 4096 bytes. Each source file must be able -+ * to supply as many bytes as given in the -+ * mschmc_file::length field. -+ * @param output_file the file to write the generated CHM helpfile to. -+ * This is passed directly to mspack_system::open() -+ * @return an error code, or MSPACK_ERR_OK if successful -+ * @see use_temporary_file() set_param() -+ */ -+ int (*generate)(struct mschm_compressor *self, -+ struct mschmc_file file_list[], -+ const char *output_file); -+ -+ /** -+ * Specifies whether a temporary file is used during CHM generation. -+ * -+ * The CHM file format includes data about the compressed section (such -+ * as its overall size) that is stored in the output CHM file prior to -+ * the compressed section itself. This unavoidably requires that the -+ * compressed section has to be generated, before these details can be -+ * set. There are several ways this can be handled. Firstly, the -+ * compressed section could be generated entirely in memory before -+ * writing any of the output CHM file. This approach is not used in -+ * libmspack, as the compressed section can exceed the addressable -+ * memory space on most architectures. -+ * -+ * libmspack has two options, either to write these unknowable sections -+ * with blank data, generate the compressed section, then re-open the -+ * output file for update once the compressed section has been -+ * completed, or to write the compressed section to a temporary file, -+ * then write the entire output file at once, performing a simple -+ * file-to-file copy for the compressed section. -+ * -+ * The simple solution of buffering the entire compressed section in -+ * memory can still be used, if desired. As the temporary file's -+ * filename is passed directly to mspack_system::open(), it is possible -+ * for a custom mspack_system implementation to hold this file in memory, -+ * without writing to a disk. -+ * -+ * If a temporary file is set, generate() performs the following -+ * sequence of events: the temporary file is opened for writing, the -+ * compression algorithm writes to the temporary file, the temporary -+ * file is closed. Then the output file is opened for writing and the -+ * temporary file is re-opened for reading. The output file is written -+ * and the temporary file is read from. Both files are then closed. The -+ * temporary file itself is not deleted. If that is desired, the -+ * temporary file should be deleted after the completion of generate(), -+ * if it exists. -+ * -+ * If a temporary file is set not to be used, generate() performs the -+ * following sequence of events: the output file is opened for writing, -+ * then it is written and closed. The output file is then re-opened for -+ * update, the appropriate sections are seek()ed to and re-written, then -+ * the output file is closed. -+ * -+ * @param self a self-referential pointer to the -+ * mschm_compressor instance being called -+ * @param use_temp_file non-zero if the temporary file should be used, -+ * zero if the temporary file should not be used. -+ * @param temp_file a file to temporarily write compressed data to, -+ * before opening it for reading and copying the -+ * contents to the output file. This is passed -+ * directly to mspack_system::open(). -+ * @return an error code, or MSPACK_ERR_OK if successful -+ * @see generate() -+ */ -+ int (*use_temporary_file)(struct mschm_compressor *self, -+ int use_temp_file, -+ const char *temp_file); -+ /** -+ * Sets a CHM compression engine parameter. -+ * -+ * The following parameters are defined: -+ -+ * - #MSCHMC_PARAM_TIMESTAMP: Sets the "timestamp" of the CHM file -+ * generated. This is not a timestamp, see mschmd_header::timestamp -+ * for a description. If this timestamp is 0, generate() will use its -+ * own algorithm for making a unique ID, based on the lengths and -+ * names of files in the CHM itself. Defaults to 0, any value between -+ * 0 and (2^32)-1 is valid. -+ * - #MSCHMC_PARAM_LANGUAGE: Sets the "language" of the CHM file -+ * generated. This is not the language used in the CHM file, but the -+ * language setting of the user who ran the HTMLHelp compiler. It -+ * defaults to 0x0409. The valid range is between 0x0000 and 0x7F7F. -+ * - #MSCHMC_PARAM_LZXWINDOW: Sets the size of the LZX history window, -+ * which is also the interval at which the compressed data stream can be -+ * randomly accessed. The value is not a size in bytes, but a power of -+ * two. The default value is 16 (which makes the window 2^16 bytes, or -+ * 64 kilobytes), the valid range is from 15 (32 kilobytes) to 21 (2 -+ * megabytes). -+ * - #MSCHMC_PARAM_DENSITY: Sets the "density" of quick reference -+ * entries stored at the end of directory listing chunk. Each chunk is -+ * 4096 bytes in size, and contains as many file entries as there is -+ * room for. At the other end of the chunk, a list of "quick reference" -+ * pointers is included. The offset of every 'N'th file entry is given a -+ * quick reference, where N = (2^density) + 1. The default density is -+ * 2. The smallest density is 0 (N=2), the maximum is 10 (N=1025). As -+ * each file entry requires at least 5 bytes, the maximum number of -+ * entries in a single chunk is roughly 800, so the maximum value 10 -+ * can be used to indicate there are no quickrefs at all. -+ * - #MSCHMC_PARAM_INDEX: Sets whether or not to include quick lookup -+ * index chunk(s), in addition to normal directory listing chunks. A -+ * value of zero means no index chunks will be created, a non-zero value -+ * means index chunks will be created. The default is zero, "don't -+ * create an index". -+ * -+ * @param self a self-referential pointer to the mschm_compressor -+ * instance being called -+ * @param param the parameter to set -+ * @param value the value to set the parameter to -+ * @return MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if there -+ * is a problem with either parameter or value. -+ * @see generate() -+ */ -+ int (*set_param)(struct mschm_compressor *self, -+ int param, -+ unsigned int value); -+ -+ /** -+ * Returns the error code set by the most recently called method. -+ * -+ * @param self a self-referential pointer to the mschm_compressor -+ * instance being called -+ * @return the most recent error code -+ * @see set_param(), generate() -+ */ -+ int (*last_error)(struct mschm_compressor *self); -+}; -+ -+/** -+ * A decompressor for .CHM (Microsoft HTMLHelp) files -+ * -+ * All fields are READ ONLY. -+ * -+ * @see mspack_create_chm_decompressor(), mspack_destroy_chm_decompressor() -+ */ -+struct mschm_decompressor { -+ /** -+ * Opens a CHM helpfile and reads its contents. -+ * -+ * If the file opened is a valid CHM helpfile, all headers will be read -+ * and a mschmd_header structure will be returned, with a full list of -+ * files. -+ * -+ * In the case of an error occuring, NULL is returned and the error code -+ * is available from last_error(). -+ * -+ * The filename pointer should be considered "in use" until close() is -+ * called on the CHM helpfile. -+ * -+ * @param self a self-referential pointer to the mschm_decompressor -+ * instance being called -+ * @param filename the filename of the CHM helpfile. This is passed -+ * directly to mspack_system::open(). -+ * @return a pointer to a mschmd_header structure, or NULL on failure -+ * @see close() -+ */ -+ struct mschmd_header *(*open)(struct mschm_decompressor *self, -+ const char *filename); -+ -+ /** -+ * Closes a previously opened CHM helpfile. -+ * -+ * This closes a CHM helpfile, frees the mschmd_header and all -+ * mschmd_file structures associated with it (if any). This works on -+ * both helpfiles opened with open() and helpfiles opened with -+ * fast_open(). -+ * -+ * The CHM header pointer is now invalid and cannot be used again. All -+ * mschmd_file pointers referencing that CHM are also now invalid, and -+ * cannot be used again. -+ * -+ * @param self a self-referential pointer to the mschm_decompressor -+ * instance being called -+ * @param chm the CHM helpfile to close -+ * @see open(), fast_open() -+ */ -+ void (*close)(struct mschm_decompressor *self, -+ struct mschmd_header *chm); -+ -+ /** -+ * Extracts a file from a CHM helpfile. -+ * -+ * This extracts a file from a CHM helpfile and writes it to the given -+ * filename. The filename of the file, mscabd_file::filename, is not -+ * used by extract(), but can be used by the caller as a guide for -+ * constructing an appropriate filename. -+ * -+ * This method works both with files found in the mschmd_header::files -+ * and mschmd_header::sysfiles list and mschmd_file structures generated -+ * on the fly by fast_find(). -+ * -+ * @param self a self-referential pointer to the mschm_decompressor -+ * instance being called -+ * @param file the file to be decompressed -+ * @param filename the filename of the file being written to -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*extract)(struct mschm_decompressor *self, -+ struct mschmd_file *file, -+ const char *filename); -+ -+ /** -+ * Returns the error code set by the most recently called method. -+ * -+ * This is useful for open() and fast_open(), which do not return an -+ * error code directly. -+ * -+ * @param self a self-referential pointer to the mschm_decompressor -+ * instance being called -+ * @return the most recent error code -+ * @see open(), extract() -+ */ -+ int (*last_error)(struct mschm_decompressor *self); -+ -+ /** -+ * Opens a CHM helpfile quickly. -+ * -+ * If the file opened is a valid CHM helpfile, only essential headers -+ * will be read. A mschmd_header structure will be still be returned, as -+ * with open(), but the mschmd_header::files field will be NULL. No -+ * files details will be automatically read. The fast_find() method -+ * must be used to obtain file details. -+ * -+ * In the case of an error occuring, NULL is returned and the error code -+ * is available from last_error(). -+ * -+ * The filename pointer should be considered "in use" until close() is -+ * called on the CHM helpfile. -+ * -+ * @param self a self-referential pointer to the mschm_decompressor -+ * instance being called -+ * @param filename the filename of the CHM helpfile. This is passed -+ * directly to mspack_system::open(). -+ * @return a pointer to a mschmd_header structure, or NULL on failure -+ * @see open(), close(), fast_find(), extract() -+ */ -+ struct mschmd_header *(*fast_open)(struct mschm_decompressor *self, -+ const char *filename); -+ -+ /** -+ * Finds file details quickly. -+ * -+ * Instead of reading all CHM helpfile headers and building a list of -+ * files, fast_open() and fast_find() are intended for finding file -+ * details only when they are needed. The CHM file format includes an -+ * on-disk file index to allow this. -+ * -+ * Given a case-sensitive filename, fast_find() will search the on-disk -+ * index for that file. -+ * -+ * If the file was found, the caller-provided mschmd_file structure will -+ * be filled out like so: -+ * - section: the correct value for the found file -+ * - offset: the correct value for the found file -+ * - length: the correct value for the found file -+ * - all other structure elements: NULL or 0 -+ * -+ * If the file was not found, MSPACK_ERR_OK will still be returned as the -+ * result, but the caller-provided structure will be filled out like so: -+ * - section: NULL -+ * - offset: 0 -+ * - length: 0 -+ * - all other structure elements: NULL or 0 -+ * -+ * This method is intended to be used in conjunction with CHM helpfiles -+ * opened with fast_open(), but it also works with helpfiles opened -+ * using the regular open(). -+ * -+ * @param self a self-referential pointer to the mschm_decompressor -+ * instance being called -+ * @param chm the CHM helpfile to search for the file -+ * @param filename the filename of the file to search for -+ * @param f_ptr a pointer to a caller-provded mschmd_file structure -+ * @param f_size sizeof(struct mschmd_file) -+ * @return an error code, or MSPACK_ERR_OK if successful -+ * @see open(), close(), fast_find(), extract() -+ */ -+ int (*fast_find)(struct mschm_decompressor *self, -+ struct mschmd_header *chm, -+ const char *filename, -+ struct mschmd_file *f_ptr, -+ int f_size); -+}; -+ -+/* --- support for .LIT (EBook) file format -------------------------------- */ -+ -+/** TODO */ -+struct mslit_compressor { -+ int dummy; -+}; -+ -+/** TODO */ -+struct mslit_decompressor { -+ int dummy; -+}; -+ -+ -+/* --- support for .HLP (MS Help) file format ------------------------------ */ -+ -+/** TODO */ -+struct mshlp_compressor { -+ int dummy; -+}; -+ -+/** TODO */ -+struct mshlp_decompressor { -+ int dummy; -+}; -+ -+ -+/* --- support for SZDD file format ---------------------------------------- */ -+ -+/** msszdd_compressor::set_param() parameter: the missing character */ -+#define MSSZDDC_PARAM_MISSINGCHAR (0) -+ -+/** msszddd_header::format value - a regular SZDD file */ -+#define MSSZDD_FMT_NORMAL (0) -+ -+/** msszddd_header::format value - a special QBasic SZDD file */ -+#define MSSZDD_FMT_QBASIC (1) -+ -+/** -+ * A structure which represents an SZDD compressed file. -+ * -+ * All fields are READ ONLY. -+ */ -+struct msszddd_header { -+ /** The file format; either #MSSZDD_FMT_NORMAL or #MSSZDD_FMT_QBASIC */ -+ int format; -+ -+ /** The amount of data in the SZDD file once uncompressed. */ -+ off_t length; -+ -+ /** -+ * The last character in the filename, traditionally replaced with an -+ * underscore to show the file is compressed. The null character is used -+ * to show that this character has not been stored (e.g. because the -+ * filename is not known). Generally, only characters that may appear in -+ * an MS-DOS filename (except ".") are valid. -+ */ -+ char missing_char; -+}; -+ -+/** -+ * A compressor for the SZDD file format. -+ * -+ * All fields are READ ONLY. -+ * -+ * @see mspack_create_szdd_compressor(), mspack_destroy_szdd_compressor() -+ */ -+struct msszdd_compressor { -+ /** -+ * Reads an input file and creates a compressed output file in the -+ * SZDD compressed file format. The SZDD compression format is quick -+ * but gives poor compression. It is possible for the compressed output -+ * file to be larger than the input file. -+ * -+ * Conventionally, SZDD compressed files have the final character in -+ * their filename replaced with an underscore, to show they are -+ * compressed. The missing character is stored in the compressed file -+ * itself. This is due to the restricted filename conventions of MS-DOS, -+ * most operating systems, such as UNIX, simply append another file -+ * extension to the existing filename. As mspack does not deal with -+ * filenames, this is left up to you. If you wish to set the missing -+ * character stored in the file header, use set_param() with the -+ * #MSSZDDC_PARAM_MISSINGCHAR parameter. -+ * -+ * "Stream" compression (where the length of the input data is not -+ * known) is not possible. The length of the input data is stored in the -+ * header of the SZDD file and must therefore be known before any data -+ * is compressed. Due to technical limitations of the file format, the -+ * maximum size of uncompressed file that will be accepted is 2147483647 -+ * bytes. -+ * -+ * @param self a self-referential pointer to the msszdd_compressor -+ * instance being called -+ * @param input the name of the file to compressed. This is passed -+ * passed directly to mspack_system::open() -+ * @param output the name of the file to write compressed data to. -+ * This is passed directly to mspack_system::open(). -+ * @param length the length of the uncompressed file, or -1 to indicate -+ * that this should be determined automatically by using -+ * mspack_system::seek() on the input file. -+ * @return an error code, or MSPACK_ERR_OK if successful -+ * @see set_param() -+ */ -+ int (*compress)(struct msszdd_compressor *self, -+ const char *input, -+ const char *output, -+ off_t length); -+ -+ /** -+ * Sets an SZDD compression engine parameter. -+ * -+ * The following parameters are defined: -+ -+ * - #MSSZDDC_PARAM_CHARACTER: the "missing character", the last character -+ * in the uncompressed file's filename, which is traditionally replaced -+ * with an underscore to show the file is compressed. Traditionally, -+ * this can only be a character that is a valid part of an MS-DOS, -+ * filename, but libmspack permits any character between 0x00 and 0xFF -+ * to be stored. 0x00 is the default, and it represents "no character -+ * stored". -+ * -+ * @param self a self-referential pointer to the msszdd_compressor -+ * instance being called -+ * @param param the parameter to set -+ * @param value the value to set the parameter to -+ * @return MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if there -+ * is a problem with either parameter or value. -+ * @see compress() -+ */ -+ int (*set_param)(struct msszdd_compressor *self, -+ int param, -+ unsigned int value); -+ -+ /** -+ * Returns the error code set by the most recently called method. -+ * -+ * @param self a self-referential pointer to the msszdd_compressor -+ * instance being called -+ * @return the most recent error code -+ * @see compress() -+ */ -+ int (*last_error)(struct mschm_decompressor *self); -+}; -+ -+/** -+ * A decompressor for SZDD compressed files. -+ * -+ * All fields are READ ONLY. -+ * -+ * @see mspack_create_szdd_decompressor(), mspack_destroy_szdd_decompressor() -+ */ -+struct msszdd_decompressor { -+ /** -+ * Opens a SZDD file and reads the header. -+ * -+ * If the file opened is a valid SZDD file, all headers will be read and -+ * a msszddd_header structure will be returned. -+ * -+ * In the case of an error occuring, NULL is returned and the error code -+ * is available from last_error(). -+ * -+ * The filename pointer should be considered "in use" until close() is -+ * called on the SZDD file. -+ * -+ * @param self a self-referential pointer to the msszdd_decompressor -+ * instance being called -+ * @param filename the filename of the SZDD compressed file. This is -+ * passed directly to mspack_system::open(). -+ * @return a pointer to a msszddd_header structure, or NULL on failure -+ * @see close() -+ */ -+ struct msszddd_header *(*open)(struct msszdd_decompressor *self, -+ const char *filename); -+ -+ /** -+ * Closes a previously opened SZDD file. -+ * -+ * This closes a SZDD file and frees the msszddd_header associated with -+ * it. -+ * -+ * The SZDD header pointer is now invalid and cannot be used again. -+ * -+ * @param self a self-referential pointer to the msszdd_decompressor -+ * instance being called -+ * @param szdd the SZDD file to close -+ * @see open() -+ */ -+ void (*close)(struct msszdd_decompressor *self, -+ struct msszddd_header *szdd); -+ -+ /** -+ * Extracts the compressed data from a SZDD file. -+ * -+ * This decompresses the compressed SZDD data stream and writes it to -+ * an output file. -+ * -+ * @param self a self-referential pointer to the msszdd_decompressor -+ * instance being called -+ * @param szdd the SZDD file to extract data from -+ * @param filename the filename to write the decompressed data to. This -+ * is passed directly to mspack_system::open(). -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*extract)(struct msszdd_decompressor *self, -+ struct msszddd_header *szdd, -+ const char *filename); -+ -+ /** -+ * Decompresses an SZDD file to an output file in one step. -+ * -+ * This opens an SZDD file as input, reads the header, then decompresses -+ * the compressed data immediately to an output file, finally closing -+ * both the input and output file. It is more convenient to use than -+ * open() then extract() then close(), if you do not need to know the -+ * SZDD output size or missing character. -+ * -+ * @param self a self-referential pointer to the msszdd_decompressor -+ * instance being called -+ * @param input the filename of the input SZDD file. This is passed -+ * directly to mspack_system::open(). -+ * @param output the filename to write the decompressed data to. This -+ * is passed directly to mspack_system::open(). -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*decompress)(struct msszdd_decompressor *self, -+ const char *input, -+ const char *output); -+ -+ /** -+ * Returns the error code set by the most recently called method. -+ * -+ * This is useful for open() which does not return an -+ * error code directly. -+ * -+ * @param self a self-referential pointer to the msszdd_decompressor -+ * instance being called -+ * @return the most recent error code -+ * @see open(), extract(), decompress() -+ */ -+ int (*last_error)(struct msszdd_decompressor *self); -+}; -+ -+/* --- support for KWAJ file format ---------------------------------------- */ -+ -+/** mskwaj_compressor::set_param() parameter: compression type */ -+#define MSKWAJC_PARAM_COMP_TYPE (0) -+ -+/** mskwaj_compressor::set_param() parameter: include the length of the -+ * uncompressed file in the header? -+ */ -+#define MSKWAJC_PARAM_INCLUDE_LENGTH (1) -+ -+/** KWAJ compression type: no compression. */ -+#define MSKWAJ_COMP_NONE (0) -+/** KWAJ compression type: no compression, 0xFF XOR "encryption". */ -+#define MSKWAJ_COMP_XOR (1) -+/** KWAJ compression type: LZSS (same method as SZDD) */ -+#define MSKWAJ_COMP_SZDD (2) -+/** KWAJ compression type: LZ+Huffman compression */ -+#define MSKWAJ_COMP_LZH (3) -+/** KWAJ compression type: MSZIP */ -+#define MSKWAJ_COMP_MSZIP (4) -+ -+/** KWAJ optional header flag: decompressed file length is included */ -+#define MSKWAJ_HDR_HASLENGTH (0x01) -+ -+/** KWAJ optional header flag: unknown 2-byte structure is included */ -+#define MSKWAJ_HDR_HASUNKNOWN1 (0x02) -+ -+/** KWAJ optional header flag: unknown multi-sized structure is included */ -+#define MSKWAJ_HDR_HASUNKNOWN2 (0x04) -+ -+/** KWAJ optional header flag: file name (no extension) is included */ -+#define MSKWAJ_HDR_HASFILENAME (0x08) -+ -+/** KWAJ optional header flag: file extension is included */ -+#define MSKWAJ_HDR_HASFILEEXT (0x10) -+ -+/** KWAJ optional header flag: extra text is included */ -+#define MSKWAJ_HDR_HASEXTRATEXT (0x20) -+ -+/** -+ * A structure which represents an KWAJ compressed file. -+ * -+ * All fields are READ ONLY. -+ */ -+struct mskwajd_header { -+ /** The compression type; should be one of #MSKWAJ_COMP_NONE, -+ * #MSKWAJ_COMP_XOR, #MSKWAJ_COMP_SZDD or #MSKWAJ_COMP_LZH -+ */ -+ unsigned short comp_type; -+ -+ /** The offset in the file where the compressed data stream begins */ -+ off_t data_offset; -+ -+ /** Flags indicating which optional headers were included. */ -+ int headers; -+ -+ /** The amount of uncompressed data in the file, or 0 if not present. */ -+ off_t length; -+ -+ /** output filename, or NULL if not present */ -+ char *filename; -+ -+ /** extra uncompressed data (usually text) in the header. -+ * This data can contain nulls so use extra_length to get the size. -+ */ -+ char *extra; -+ -+ /** length of extra uncompressed data in the header */ -+ unsigned short extra_length; -+}; -+ -+/** -+ * A compressor for the KWAJ file format. -+ * -+ * All fields are READ ONLY. -+ * -+ * @see mspack_create_kwaj_compressor(), mspack_destroy_kwaj_compressor() -+ */ -+struct mskwaj_compressor { -+ /** -+ * Reads an input file and creates a compressed output file in the -+ * KWAJ compressed file format. The KWAJ compression format is quick -+ * but gives poor compression. It is possible for the compressed output -+ * file to be larger than the input file. -+ * -+ * @param self a self-referential pointer to the mskwaj_compressor -+ * instance being called -+ * @param input the name of the file to compressed. This is passed -+ * passed directly to mspack_system::open() -+ * @param output the name of the file to write compressed data to. -+ * This is passed directly to mspack_system::open(). -+ * @param length the length of the uncompressed file, or -1 to indicate -+ * that this should be determined automatically by using -+ * mspack_system::seek() on the input file. -+ * @return an error code, or MSPACK_ERR_OK if successful -+ * @see set_param() -+ */ -+ int (*compress)(struct mskwaj_compressor *self, -+ const char *input, -+ const char *output, -+ off_t length); -+ -+ /** -+ * Sets an KWAJ compression engine parameter. -+ * -+ * The following parameters are defined: -+ * -+ * - #MSKWAJC_PARAM_COMP_TYPE: the compression method to use. Must -+ * be one of #MSKWAJC_COMP_NONE, #MSKWAJC_COMP_XOR, #MSKWAJ_COMP_SZDD -+ * or #MSKWAJ_COMP_LZH. The default is #MSKWAJ_COMP_LZH. -+ * -+ * - #MSKWAJC_PARAM_INCLUDE_LENGTH: a boolean; should the compressed -+ * output file should include the uncompressed length of the input -+ * file in the header? This adds 4 bytes to the size of the output -+ * file. A value of zero says "no", non-zero says "yes". The default -+ * is "no". -+ * -+ * @param self a self-referential pointer to the mskwaj_compressor -+ * instance being called -+ * @param param the parameter to set -+ * @param value the value to set the parameter to -+ * @return MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if there -+ * is a problem with either parameter or value. -+ * @see generate() -+ */ -+ int (*set_param)(struct mskwaj_compressor *self, -+ int param, -+ unsigned int value); -+ -+ -+ /** -+ * Sets the original filename of the file before compression, -+ * which will be stored in the header of the output file. -+ * -+ * The filename should be a null-terminated string, it must be an -+ * MS-DOS "8.3" type filename (up to 8 bytes for the filename, then -+ * optionally a "." and up to 3 bytes for a filename extension). -+ * -+ * If NULL is passed as the filename, no filename is included in the -+ * header. This is the default. -+ * -+ * @param self a self-referential pointer to the mskwaj_compressor -+ * instance being called -+ * @param filename the original filename to use -+ * @return MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS if the -+ * filename is too long -+ */ -+ int (*set_filename)(struct mskwaj_compressor *self, -+ const char *filename); -+ -+ /** -+ * Sets arbitrary data that will be stored in the header of the -+ * output file, uncompressed. It can be up to roughly 64 kilobytes, -+ * as the overall size of the header must not exceed 65535 bytes. -+ * The data can contain null bytes if desired. -+ * -+ * If NULL is passed as the data pointer, or zero is passed as the -+ * length, no extra data is included in the header. This is the -+ * default. -+ * -+ * @param self a self-referential pointer to the mskwaj_compressor -+ * instance being called -+ * @param data a pointer to the data to be stored in the header -+ * @param bytes the length of the data in bytes -+ * @return MSPACK_ERR_OK if all is OK, or MSPACK_ERR_ARGS extra data -+ * is too long -+ */ -+ int (*set_extra_data)(struct mskwaj_compressor *self, -+ void *data, -+ size_t bytes); -+ -+ /** -+ * Returns the error code set by the most recently called method. -+ * -+ * @param self a self-referential pointer to the mskwaj_compressor -+ * instance being called -+ * @return the most recent error code -+ * @see compress() -+ */ -+ int (*last_error)(struct mschm_decompressor *self); -+}; -+ -+/** -+ * A decompressor for KWAJ compressed files. -+ * -+ * All fields are READ ONLY. -+ * -+ * @see mspack_create_kwaj_decompressor(), mspack_destroy_kwaj_decompressor() -+ */ -+struct mskwaj_decompressor { -+ /** -+ * Opens a KWAJ file and reads the header. -+ * -+ * If the file opened is a valid KWAJ file, all headers will be read and -+ * a mskwajd_header structure will be returned. -+ * -+ * In the case of an error occuring, NULL is returned and the error code -+ * is available from last_error(). -+ * -+ * The filename pointer should be considered "in use" until close() is -+ * called on the KWAJ file. -+ * -+ * @param self a self-referential pointer to the mskwaj_decompressor -+ * instance being called -+ * @param filename the filename of the KWAJ compressed file. This is -+ * passed directly to mspack_system::open(). -+ * @return a pointer to a mskwajd_header structure, or NULL on failure -+ * @see close() -+ */ -+ struct mskwajd_header *(*open)(struct mskwaj_decompressor *self, -+ const char *filename); -+ -+ /** -+ * Closes a previously opened KWAJ file. -+ * -+ * This closes a KWAJ file and frees the mskwajd_header associated -+ * with it. The KWAJ header pointer is now invalid and cannot be -+ * used again. -+ * -+ * @param self a self-referential pointer to the mskwaj_decompressor -+ * instance being called -+ * @param kwaj the KWAJ file to close -+ * @see open() -+ */ -+ void (*close)(struct mskwaj_decompressor *self, -+ struct mskwajd_header *kwaj); -+ -+ /** -+ * Extracts the compressed data from a KWAJ file. -+ * -+ * This decompresses the compressed KWAJ data stream and writes it to -+ * an output file. -+ * -+ * @param self a self-referential pointer to the mskwaj_decompressor -+ * instance being called -+ * @param kwaj the KWAJ file to extract data from -+ * @param filename the filename to write the decompressed data to. This -+ * is passed directly to mspack_system::open(). -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*extract)(struct mskwaj_decompressor *self, -+ struct mskwajd_header *kwaj, -+ const char *filename); -+ -+ /** -+ * Decompresses an KWAJ file to an output file in one step. -+ * -+ * This opens an KWAJ file as input, reads the header, then decompresses -+ * the compressed data immediately to an output file, finally closing -+ * both the input and output file. It is more convenient to use than -+ * open() then extract() then close(), if you do not need to know the -+ * KWAJ output size or output filename. -+ * -+ * @param self a self-referential pointer to the mskwaj_decompressor -+ * instance being called -+ * @param input the filename of the input KWAJ file. This is passed -+ * directly to mspack_system::open(). -+ * @param output the filename to write the decompressed data to. This -+ * is passed directly to mspack_system::open(). -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*decompress)(struct mskwaj_decompressor *self, -+ const char *input, -+ const char *output); -+ -+ /** -+ * Returns the error code set by the most recently called method. -+ * -+ * This is useful for open() which does not return an -+ * error code directly. -+ * -+ * @param self a self-referential pointer to the mskwaj_decompressor -+ * instance being called -+ * @return the most recent error code -+ * @see open(), search() -+ */ -+ int (*last_error)(struct mskwaj_decompressor *self); -+}; -+ -+/* --- support for .LZX (Offline Address Book) file format ----------------- */ -+ -+/** -+ * A compressor for the Offline Address Book (OAB) format. -+ * -+ * All fields are READ ONLY. -+ * -+ * @see mspack_create_oab_compressor(), mspack_destroy_oab_compressor() -+ */ -+struct msoab_compressor { -+ /** -+ * Compress a full OAB file. -+ * -+ * The input file will be read and the compressed contents written to the -+ * output file. -+ * -+ * @param self a self-referential pointer to the msoab_decompressor -+ * instance being called -+ * @param input the filename of the input file. This is passed -+ * directly to mspack_system::open(). -+ * @param output the filename of the output file. This is passed -+ * directly to mspack_system::open(). -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*compress) (struct msoab_compressor *self, -+ const char *input, -+ const char *output); -+ -+ /** -+ * Generate a compressed incremental OAB patch file. -+ * -+ * The two uncompressed files "input" and "base" will be read, and an -+ * incremental patch to generate "input" from "base" will be written to -+ * the output file. -+ * -+ * @param self a self-referential pointer to the msoab_compressor -+ * instance being called -+ * @param input the filename of the input file containing the new -+ * version of its contents. This is passed directly -+ * to mspack_system::open(). -+ * @param base the filename of the original base file containing -+ * the old version of its contents, against which the -+ * incremental patch shall generated. This is passed -+ * directly to mspack_system::open(). -+ * @param output the filename of the output file. This is passed -+ * directly to mspack_system::open(). -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*compress_incremental) (struct msoab_compressor *self, -+ const char *input, -+ const char *base, -+ const char *output); -+}; -+ -+/** -+ * A decompressor for .LZX (Offline Address Book) files -+ * -+ * All fields are READ ONLY. -+ * -+ * @see mspack_create_oab_decompressor(), mspack_destroy_oab_decompressor() -+ */ -+struct msoab_decompressor { -+ /** -+ * Decompresses a full Offline Address Book file. -+ * -+ * If the input file is a valid compressed Offline Address Book file, -+ * it will be read and the decompressed contents will be written to -+ * the output file. -+ * -+ * @param self a self-referential pointer to the msoab_decompressor -+ * instance being called -+ * @param input the filename of the input file. This is passed -+ * directly to mspack_system::open(). -+ * @param output the filename of the output file. This is passed -+ * directly to mspack_system::open(). -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*decompress) (struct msoab_decompressor *self, -+ const char *input, -+ const char *output); -+ -+ /** -+ * Decompresses an Offline Address Book with an incremental patch file. -+ * -+ * This requires both a full UNCOMPRESSED Offline Address Book file to -+ * act as the "base", and a compressed incremental patch file as input. -+ * If the input file is valid, it will be decompressed with reference to -+ * the base file, and the decompressed contents will be written to the -+ * output file. -+ * -+ * There is no way to tell what the right base file is for the given -+ * incremental patch, but if you get it wrong, this will usually result -+ * in incorrect data being decompressed, which will then fail a checksum -+ * test. -+ * -+ * @param self a self-referential pointer to the msoab_decompressor -+ * instance being called -+ * @param input the filename of the input file. This is passed -+ * directly to mspack_system::open(). -+ * @param base the filename of the base file to which the -+ * incremental patch shall be applied. This is passed -+ * directly to mspack_system::open(). -+ * @param output the filename of the output file. This is passed -+ * directly to mspack_system::open(). -+ * @return an error code, or MSPACK_ERR_OK if successful -+ */ -+ int (*decompress_incremental) (struct msoab_decompressor *self, -+ const char *input, -+ const char *base, -+ const char *output); -+}; -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/mszip.h b/libclamav/libmspack-0.4alpha/mspack/mszip.h -new file mode 100644 -index 000000000000..0fe79e4af516 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/mszip.h -@@ -0,0 +1,126 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * The deflate method was created by Phil Katz. MSZIP is equivalent to the -+ * deflate method. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_MSZIP_H -+#define MSPACK_MSZIP_H 1 -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* MSZIP (deflate) compression / (inflate) decompression definitions */ -+ -+#define MSZIP_FRAME_SIZE (32768) /* size of LZ history window */ -+#define MSZIP_LITERAL_MAXSYMBOLS (288) /* literal/length huffman tree */ -+#define MSZIP_LITERAL_TABLEBITS (9) -+#define MSZIP_DISTANCE_MAXSYMBOLS (32) /* distance huffman tree */ -+#define MSZIP_DISTANCE_TABLEBITS (6) -+ -+/* if there are less direct lookup entries than symbols, the longer -+ * code pointers will be <= maxsymbols. This must not happen, or we -+ * will decode entries badly */ -+#if (1 << MSZIP_LITERAL_TABLEBITS) < (MSZIP_LITERAL_MAXSYMBOLS * 2) -+# define MSZIP_LITERAL_TABLESIZE (MSZIP_LITERAL_MAXSYMBOLS * 4) -+#else -+# define MSZIP_LITERAL_TABLESIZE ((1 << MSZIP_LITERAL_TABLEBITS) + \ -+ (MSZIP_LITERAL_MAXSYMBOLS * 2)) -+#endif -+ -+#if (1 << MSZIP_DISTANCE_TABLEBITS) < (MSZIP_DISTANCE_MAXSYMBOLS * 2) -+# define MSZIP_DISTANCE_TABLESIZE (MSZIP_DISTANCE_MAXSYMBOLS * 4) -+#else -+# define MSZIP_DISTANCE_TABLESIZE ((1 << MSZIP_DISTANCE_TABLEBITS) + \ -+ (MSZIP_DISTANCE_MAXSYMBOLS * 2)) -+#endif -+ -+struct mszipd_stream { -+ struct mspack_system *sys; /* I/O routines */ -+ struct mspack_file *input; /* input file handle */ -+ struct mspack_file *output; /* output file handle */ -+ unsigned int window_posn; /* offset within window */ -+ -+ /* inflate() will call this whenever the window should be emptied. */ -+ int (*flush_window)(struct mszipd_stream *, unsigned int); -+ -+ int error, repair_mode, bytes_output; -+ -+ /* I/O buffering */ -+ unsigned char *inbuf, *i_ptr, *i_end, *o_ptr, *o_end, input_end; -+ unsigned int bit_buffer, bits_left, inbuf_size; -+ -+ -+ /* huffman code lengths */ -+ unsigned char LITERAL_len[MSZIP_LITERAL_MAXSYMBOLS]; -+ unsigned char DISTANCE_len[MSZIP_DISTANCE_MAXSYMBOLS]; -+ -+ /* huffman decoding tables */ -+ unsigned short LITERAL_table [MSZIP_LITERAL_TABLESIZE]; -+ unsigned short DISTANCE_table[MSZIP_DISTANCE_TABLESIZE]; -+ -+ /* 32kb history window */ -+ unsigned char window[MSZIP_FRAME_SIZE]; -+}; -+ -+/* allocates MS-ZIP decompression stream for decoding the given stream. -+ * -+ * - uses system->alloc() to allocate memory -+ * -+ * - returns NULL if not enough memory -+ * -+ * - input_buffer_size is how many bytes to use as an input bitstream buffer -+ * -+ * - if repair_mode is non-zero, errors in decompression will be skipped -+ * and 'holes' left will be filled with zero bytes. This allows at least -+ * a partial recovery of erroneous data. -+ */ -+extern struct mszipd_stream *mszipd_init(struct mspack_system *system, -+ struct mspack_file *input, -+ struct mspack_file *output, -+ int input_buffer_size, -+ int repair_mode); -+ -+/* decompresses, or decompresses more of, an MS-ZIP stream. -+ * -+ * - out_bytes of data will be decompressed and the function will return -+ * with an MSPACK_ERR_OK return code. -+ * -+ * - decompressing will stop as soon as out_bytes is reached. if the true -+ * amount of bytes decoded spills over that amount, they will be kept for -+ * a later invocation of mszipd_decompress(). -+ * -+ * - the output bytes will be passed to the system->write() function given in -+ * mszipd_init(), using the output file handle given in mszipd_init(). More -+ * than one call may be made to system->write() -+ * -+ * - MS-ZIP will read input bytes as necessary using the system->read() -+ * function given in mszipd_init(), using the input file handle given in -+ * mszipd_init(). This will continue until system->read() returns 0 bytes, -+ * or an error. -+ */ -+extern int mszipd_decompress(struct mszipd_stream *zip, off_t out_bytes); -+ -+/* decompresses an entire MS-ZIP stream in a KWAJ file. Acts very much -+ * like mszipd_decompress(), but doesn't take an out_bytes parameter -+ */ -+extern int mszipd_decompress_kwaj(struct mszipd_stream *zip); -+ -+/* frees all stream associated with an MS-ZIP data stream -+ * -+ * - calls system->free() using the system pointer given in mszipd_init() -+ */ -+void mszipd_free(struct mszipd_stream *zip); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/mszipc.c b/libclamav/libmspack-0.4alpha/mspack/mszipc.c -new file mode 100644 -index 000000000000..2f1ecb2e8757 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/mszipc.c -@@ -0,0 +1,18 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * The deflate method was created by Phil Katz. MSZIP is equivalent to the -+ * deflate method. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* MS-ZIP compression implementation */ -+ -+#include -+#include -+ -+/* todo */ -diff --git a/libclamav/libmspack-0.4alpha/mspack/mszipd.c b/libclamav/libmspack-0.4alpha/mspack/mszipd.c -new file mode 100644 -index 000000000000..cd85bb9fa1ca ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/mszipd.c -@@ -0,0 +1,514 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2010 Stuart Caie. -+ * -+ * The deflate method was created by Phil Katz. MSZIP is equivalent to the -+ * deflate method. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* MS-ZIP decompression implementation. */ -+ -+#include -+#include -+ -+/* import bit-reading macros and code */ -+#define BITS_TYPE struct mszipd_stream -+#define BITS_VAR zip -+#define BITS_ORDER_LSB -+#define BITS_LSB_TABLE -+#define READ_BYTES do { \ -+ READ_IF_NEEDED; \ -+ INJECT_BITS(*i_ptr++, 8); \ -+} while (0) -+#include -+ -+/* import huffman macros and code */ -+#define TABLEBITS(tbl) MSZIP_##tbl##_TABLEBITS -+#define MAXSYMBOLS(tbl) MSZIP_##tbl##_MAXSYMBOLS -+#define HUFF_TABLE(tbl,idx) zip->tbl##_table[idx] -+#define HUFF_LEN(tbl,idx) zip->tbl##_len[idx] -+#define HUFF_ERROR return INF_ERR_HUFFSYM -+#include -+ -+#define FLUSH_IF_NEEDED do { \ -+ if (zip->window_posn == MSZIP_FRAME_SIZE) { \ -+ if (zip->flush_window(zip, MSZIP_FRAME_SIZE)) { \ -+ return INF_ERR_FLUSH; \ -+ } \ -+ zip->window_posn = 0; \ -+ } \ -+} while (0) -+ -+/* match lengths for literal codes 257.. 285 */ -+static const unsigned short lit_lengths[29] = { -+ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, -+ 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 -+}; -+ -+/* match offsets for distance codes 0 .. 29 */ -+static const unsigned short dist_offsets[30] = { -+ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, -+ 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 -+}; -+ -+/* extra bits required for literal codes 257.. 285 */ -+static const unsigned char lit_extrabits[29] = { -+ 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, -+ 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 -+}; -+ -+/* extra bits required for distance codes 0 .. 29 */ -+static const unsigned char dist_extrabits[30] = { -+ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, -+ 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13 -+}; -+ -+/* the order of the bit length Huffman code lengths */ -+static const unsigned char bitlen_order[19] = { -+ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 -+}; -+ -+/* inflate() error codes */ -+#define INF_ERR_BLOCKTYPE (-1) /* unknown block type */ -+#define INF_ERR_COMPLEMENT (-2) /* block size complement mismatch */ -+#define INF_ERR_FLUSH (-3) /* error from flush_window() callback */ -+#define INF_ERR_BITBUF (-4) /* too many bits in bit buffer */ -+#define INF_ERR_SYMLENS (-5) /* too many symbols in blocktype 2 header */ -+#define INF_ERR_BITLENTBL (-6) /* failed to build bitlens huffman table */ -+#define INF_ERR_LITERALTBL (-7) /* failed to build literals huffman table */ -+#define INF_ERR_DISTANCETBL (-8) /* failed to build distance huffman table */ -+#define INF_ERR_BITOVERRUN (-9) /* bitlen RLE code goes over table size */ -+#define INF_ERR_BADBITLEN (-10) /* invalid bit-length code */ -+#define INF_ERR_LITCODE (-11) /* out-of-range literal code */ -+#define INF_ERR_DISTCODE (-12) /* out-of-range distance code */ -+#define INF_ERR_DISTANCE (-13) /* somehow, distance is beyond 32k */ -+#define INF_ERR_HUFFSYM (-14) /* out of bits decoding huffman symbol */ -+ -+static int zip_read_lens(struct mszipd_stream *zip) { -+ /* for the bit buffer and huffman decoding */ -+ register unsigned int bit_buffer; -+ register int bits_left; -+ unsigned char *i_ptr, *i_end; -+ -+ /* bitlen Huffman codes -- immediate lookup, 7 bit max code length */ -+ unsigned short bl_table[(1 << 7)]; -+ unsigned char bl_len[19]; -+ -+ unsigned char lens[MSZIP_LITERAL_MAXSYMBOLS + MSZIP_DISTANCE_MAXSYMBOLS]; -+ unsigned int lit_codes, dist_codes, code, last_code=0, bitlen_codes, i, run; -+ -+ RESTORE_BITS; -+ -+ /* read the number of codes */ -+ READ_BITS(lit_codes, 5); lit_codes += 257; -+ READ_BITS(dist_codes, 5); dist_codes += 1; -+ READ_BITS(bitlen_codes, 4); bitlen_codes += 4; -+ if (lit_codes > MSZIP_LITERAL_MAXSYMBOLS) return INF_ERR_SYMLENS; -+ if (dist_codes > MSZIP_DISTANCE_MAXSYMBOLS) return INF_ERR_SYMLENS; -+ -+ /* read in the bit lengths in their unusual order */ -+ for (i = 0; i < bitlen_codes; i++) READ_BITS(bl_len[bitlen_order[i]], 3); -+ while (i < 19) bl_len[bitlen_order[i++]] = 0; -+ -+ /* create decoding table with an immediate lookup */ -+ if (make_decode_table(19, 7, &bl_len[0], &bl_table[0])) { -+ return INF_ERR_BITLENTBL; -+ } -+ -+ /* read literal / distance code lengths */ -+ for (i = 0; i < (lit_codes + dist_codes); i++) { -+ /* single-level huffman lookup */ -+ ENSURE_BITS(7); -+ code = bl_table[PEEK_BITS(7)]; -+ REMOVE_BITS(bl_len[code]); -+ -+ if (code < 16) lens[i] = last_code = code; -+ else { -+ switch (code) { -+ case 16: READ_BITS(run, 2); run += 3; code = last_code; break; -+ case 17: READ_BITS(run, 3); run += 3; code = 0; break; -+ case 18: READ_BITS(run, 7); run += 11; code = 0; break; -+ default: D(("bad code!: %u", code)) return INF_ERR_BADBITLEN; -+ } -+ if ((i + run) > (lit_codes + dist_codes)) return INF_ERR_BITOVERRUN; -+ while (run--) lens[i++] = code; -+ i--; -+ } -+ } -+ -+ /* copy LITERAL code lengths and clear any remaining */ -+ i = lit_codes; -+ zip->sys->copy(&lens[0], &zip->LITERAL_len[0], i); -+ while (i < MSZIP_LITERAL_MAXSYMBOLS) zip->LITERAL_len[i++] = 0; -+ -+ i = dist_codes; -+ zip->sys->copy(&lens[lit_codes], &zip->DISTANCE_len[0], i); -+ while (i < MSZIP_DISTANCE_MAXSYMBOLS) zip->DISTANCE_len[i++] = 0; -+ -+ STORE_BITS; -+ return 0; -+} -+ -+/* a clean implementation of RFC 1951 / inflate */ -+static int inflate(struct mszipd_stream *zip) { -+ unsigned int last_block, block_type, distance, length, this_run, i; -+ -+ /* for the bit buffer and huffman decoding */ -+ register unsigned int bit_buffer; -+ register int bits_left; -+ register unsigned short sym; -+ unsigned char *i_ptr, *i_end; -+ -+ RESTORE_BITS; -+ -+ do { -+ /* read in last block bit */ -+ READ_BITS(last_block, 1); -+ -+ /* read in block type */ -+ READ_BITS(block_type, 2); -+ -+ if (block_type == 0) { -+ /* uncompressed block */ -+ unsigned char lens_buf[4]; -+ -+ /* go to byte boundary */ -+ i = bits_left & 7; REMOVE_BITS(i); -+ -+ /* read 4 bytes of data, emptying the bit-buffer if necessary */ -+ for (i = 0; (bits_left >= 8); i++) { -+ if (i == 4) return INF_ERR_BITBUF; -+ lens_buf[i] = PEEK_BITS(8); -+ REMOVE_BITS(8); -+ } -+ if (bits_left != 0) return INF_ERR_BITBUF; -+ while (i < 4) { -+ READ_IF_NEEDED; -+ lens_buf[i++] = *i_ptr++; -+ } -+ -+ /* get the length and its complement */ -+ length = lens_buf[0] | (lens_buf[1] << 8); -+ i = lens_buf[2] | (lens_buf[3] << 8); -+ if (length != (~i & 0xFFFF)) return INF_ERR_COMPLEMENT; -+ -+ /* read and copy the uncompressed data into the window */ -+ while (length > 0) { -+ READ_IF_NEEDED; -+ -+ this_run = length; -+ if (this_run > (unsigned int)(i_end - i_ptr)) this_run = i_end - i_ptr; -+ if (this_run > (MSZIP_FRAME_SIZE - zip->window_posn)) -+ this_run = MSZIP_FRAME_SIZE - zip->window_posn; -+ -+ zip->sys->copy(i_ptr, &zip->window[zip->window_posn], this_run); -+ zip->window_posn += this_run; -+ i_ptr += this_run; -+ length -= this_run; -+ FLUSH_IF_NEEDED; -+ } -+ } -+ else if ((block_type == 1) || (block_type == 2)) { -+ /* Huffman-compressed LZ77 block */ -+ unsigned int match_posn, code; -+ -+ if (block_type == 1) { -+ /* block with fixed Huffman codes */ -+ i = 0; -+ while (i < 144) zip->LITERAL_len[i++] = 8; -+ while (i < 256) zip->LITERAL_len[i++] = 9; -+ while (i < 280) zip->LITERAL_len[i++] = 7; -+ while (i < 288) zip->LITERAL_len[i++] = 8; -+ for (i = 0; i < 32; i++) zip->DISTANCE_len[i] = 5; -+ } -+ else { -+ /* block with dynamic Huffman codes */ -+ STORE_BITS; -+ if ((i = zip_read_lens(zip))) return i; -+ RESTORE_BITS; -+ } -+ -+ /* now huffman lengths are read for either kind of block, -+ * create huffman decoding tables */ -+ if (make_decode_table(MSZIP_LITERAL_MAXSYMBOLS, MSZIP_LITERAL_TABLEBITS, -+ &zip->LITERAL_len[0], &zip->LITERAL_table[0])) -+ { -+ return INF_ERR_LITERALTBL; -+ } -+ -+ if (make_decode_table(MSZIP_DISTANCE_MAXSYMBOLS,MSZIP_DISTANCE_TABLEBITS, -+ &zip->DISTANCE_len[0], &zip->DISTANCE_table[0])) -+ { -+ return INF_ERR_DISTANCETBL; -+ } -+ -+ /* decode forever until end of block code */ -+ for (;;) { -+ READ_HUFFSYM(LITERAL, code); -+ if (code < 256) { -+ zip->window[zip->window_posn++] = (unsigned char) code; -+ FLUSH_IF_NEEDED; -+ } -+ else if (code == 256) { -+ /* END OF BLOCK CODE: loop break point */ -+ break; -+ } -+ else { -+ code -= 257; /* codes 257-285 are matches */ -+ if (code >= 29) return INF_ERR_LITCODE; /* codes 286-287 are illegal */ -+ READ_BITS_T(length, lit_extrabits[code]); -+ length += lit_lengths[code]; -+ -+ READ_HUFFSYM(DISTANCE, code); -+ if (code > 30) return INF_ERR_DISTCODE; -+ READ_BITS_T(distance, dist_extrabits[code]); -+ distance += dist_offsets[code]; -+ -+ /* match position is window position minus distance. If distance -+ * is more than window position numerically, it must 'wrap -+ * around' the frame size. */ -+ match_posn = ((distance > zip->window_posn) ? MSZIP_FRAME_SIZE : 0) -+ + zip->window_posn - distance; -+ -+ /* copy match */ -+ if (length < 12) { -+ /* short match, use slower loop but no loop setup code */ -+ while (length--) { -+ zip->window[zip->window_posn++] = zip->window[match_posn++]; -+ match_posn &= MSZIP_FRAME_SIZE - 1; -+ FLUSH_IF_NEEDED; -+ } -+ } -+ else { -+ /* longer match, use faster loop but with setup expense */ -+ unsigned char *runsrc, *rundest; -+ do { -+ this_run = length; -+ if ((match_posn + this_run) > MSZIP_FRAME_SIZE) -+ this_run = MSZIP_FRAME_SIZE - match_posn; -+ if ((zip->window_posn + this_run) > MSZIP_FRAME_SIZE) -+ this_run = MSZIP_FRAME_SIZE - zip->window_posn; -+ -+ rundest = &zip->window[zip->window_posn]; zip->window_posn += this_run; -+ runsrc = &zip->window[match_posn]; match_posn += this_run; -+ length -= this_run; -+ while (this_run--) *rundest++ = *runsrc++; -+ if (match_posn == MSZIP_FRAME_SIZE) match_posn = 0; -+ FLUSH_IF_NEEDED; -+ } while (length > 0); -+ } -+ -+ } /* else (code >= 257) */ -+ -+ } /* for(;;) -- break point at 'code == 256' */ -+ } -+ else { -+ /* block_type == 3 -- bad block type */ -+ return INF_ERR_BLOCKTYPE; -+ } -+ } while (!last_block); -+ -+ /* flush the remaining data */ -+ if (zip->window_posn) { -+ if (zip->flush_window(zip, zip->window_posn)) return INF_ERR_FLUSH; -+ } -+ STORE_BITS; -+ -+ /* return success */ -+ return 0; -+} -+ -+/* inflate() calls this whenever the window should be flushed. As -+ * MSZIP only expands to the size of the window, the implementation used -+ * simply keeps track of the amount of data flushed, and if more than 32k -+ * is flushed, an error is raised. -+ */ -+static int mszipd_flush_window(struct mszipd_stream *zip, -+ unsigned int data_flushed) -+{ -+ zip->bytes_output += data_flushed; -+ if (zip->bytes_output > MSZIP_FRAME_SIZE) { -+ D(("overflow: %u bytes flushed, total is now %u", -+ data_flushed, zip->bytes_output)) -+ return 1; -+ } -+ return 0; -+} -+ -+struct mszipd_stream *mszipd_init(struct mspack_system *system, -+ struct mspack_file *input, -+ struct mspack_file *output, -+ int input_buffer_size, -+ int repair_mode) -+{ -+ struct mszipd_stream *zip; -+ -+ if (!system) return NULL; -+ -+ input_buffer_size = (input_buffer_size + 1) & -2; -+ if (!input_buffer_size) return NULL; -+ -+ /* allocate decompression state */ -+ if (!(zip = (struct mszipd_stream *) system->alloc(system, sizeof(struct mszipd_stream)))) { -+ return NULL; -+ } -+ -+ /* allocate input buffer */ -+ zip->inbuf = (unsigned char *) system->alloc(system, (size_t) input_buffer_size); -+ if (!zip->inbuf) { -+ system->free(zip); -+ return NULL; -+ } -+ -+ /* initialise decompression state */ -+ zip->sys = system; -+ zip->input = input; -+ zip->output = output; -+ zip->inbuf_size = input_buffer_size; -+ zip->input_end = 0; -+ zip->error = MSPACK_ERR_OK; -+ zip->repair_mode = repair_mode; -+ zip->flush_window = &mszipd_flush_window; -+ -+ zip->i_ptr = zip->i_end = &zip->inbuf[0]; -+ zip->o_ptr = zip->o_end = NULL; -+ zip->bit_buffer = 0; zip->bits_left = 0; -+ return zip; -+} -+ -+int mszipd_decompress(struct mszipd_stream *zip, off_t out_bytes) { -+ /* for the bit buffer */ -+ register unsigned int bit_buffer; -+ register int bits_left; -+ unsigned char *i_ptr, *i_end; -+ -+ int i, state, error; -+ -+ /* easy answers */ -+ if (!zip || (out_bytes < 0)) return MSPACK_ERR_ARGS; -+ if (zip->error) return zip->error; -+ -+ /* flush out any stored-up bytes before we begin */ -+ i = zip->o_end - zip->o_ptr; -+ if ((off_t) i > out_bytes) i = (int) out_bytes; -+ if (i) { -+ if (zip->sys->write(zip->output, zip->o_ptr, i) != i) { -+ return zip->error = MSPACK_ERR_WRITE; -+ } -+ zip->o_ptr += i; -+ out_bytes -= i; -+ } -+ if (out_bytes == 0) return MSPACK_ERR_OK; -+ -+ -+ while (out_bytes > 0) { -+ /* unpack another block */ -+ RESTORE_BITS; -+ -+ /* skip to next read 'CK' header */ -+ i = bits_left & 7; REMOVE_BITS(i); /* align to bytestream */ -+ state = 0; -+ do { -+ READ_BITS(i, 8); -+ if (i == 'C') state = 1; -+ else if ((state == 1) && (i == 'K')) state = 2; -+ else state = 0; -+ } while (state != 2); -+ -+ /* inflate a block, repair and realign if necessary */ -+ zip->window_posn = 0; -+ zip->bytes_output = 0; -+ STORE_BITS; -+ if ((error = inflate(zip))) { -+ D(("inflate error %d", error)) -+ if (zip->repair_mode) { -+ /* recover partially-inflated buffers */ -+ if (zip->bytes_output == 0 && zip->window_posn > 0) { -+ zip->flush_window(zip, zip->window_posn); -+ } -+ zip->sys->message(NULL, "MSZIP error, %u bytes of data lost.", -+ MSZIP_FRAME_SIZE - zip->bytes_output); -+ for (i = zip->bytes_output; i < MSZIP_FRAME_SIZE; i++) { -+ zip->window[i] = '\0'; -+ } -+ zip->bytes_output = MSZIP_FRAME_SIZE; -+ } -+ else { -+ return zip->error = (error > 0) ? error : MSPACK_ERR_DECRUNCH; -+ } -+ } -+ zip->o_ptr = &zip->window[0]; -+ zip->o_end = &zip->o_ptr[zip->bytes_output]; -+ -+ /* write a frame */ -+ i = (out_bytes < (off_t)zip->bytes_output) ? -+ (int)out_bytes : zip->bytes_output; -+ if (zip->sys->write(zip->output, zip->o_ptr, i) != i) { -+ return zip->error = MSPACK_ERR_WRITE; -+ } -+ -+ /* mspack errors (i.e. read errors) are fatal and can't be recovered */ -+ if ((error > 0) && zip->repair_mode) return error; -+ -+ zip->o_ptr += i; -+ out_bytes -= i; -+ } -+ -+ if (out_bytes) { -+ D(("bytes left to output")) -+ return zip->error = MSPACK_ERR_DECRUNCH; -+ } -+ return MSPACK_ERR_OK; -+} -+ -+int mszipd_decompress_kwaj(struct mszipd_stream *zip) { -+ /* for the bit buffer */ -+ register unsigned int bit_buffer; -+ register int bits_left; -+ unsigned char *i_ptr, *i_end; -+ -+ int i, error, block_len; -+ -+ /* unpack blocks until block_len == 0 */ -+ for (;;) { -+ RESTORE_BITS; -+ -+ /* align to bytestream, read block_len */ -+ i = bits_left & 7; REMOVE_BITS(i); -+ READ_BITS(block_len, 8); -+ READ_BITS(i, 8); block_len |= i << 8; -+ -+ if (block_len == 0) break; -+ -+ /* read "CK" header */ -+ READ_BITS(i, 8); if (i != 'C') return MSPACK_ERR_DATAFORMAT; -+ READ_BITS(i, 8); if (i != 'K') return MSPACK_ERR_DATAFORMAT; -+ -+ /* inflate block */ -+ zip->window_posn = 0; -+ zip->bytes_output = 0; -+ STORE_BITS; -+ if ((error = inflate(zip))) { -+ D(("inflate error %d", error)) -+ return zip->error = (error > 0) ? error : MSPACK_ERR_DECRUNCH; -+ } -+ -+ /* write inflated block */ -+ if (zip->sys->write(zip->output, &zip->window[0], zip->bytes_output) -+ != zip->bytes_output) return zip->error = MSPACK_ERR_WRITE; -+ } -+ return MSPACK_ERR_OK; -+} -+ -+void mszipd_free(struct mszipd_stream *zip) { -+ struct mspack_system *sys; -+ if (zip) { -+ sys = zip->sys; -+ sys->free(zip->inbuf); -+ sys->free(zip); -+ } -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/oab.h b/libclamav/libmspack-0.4alpha/mspack/oab.h -new file mode 100644 -index 000000000000..565220888097 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/oab.h -@@ -0,0 +1,60 @@ -+/* This file is part of libmspack. -+ * © 2013 Intel Corporation -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_OAB_H -+#define MSPACK_OAB_H 1 -+ -+#include -+ -+/* generic OAB definitions */ -+ -+/* OAB compression definitions */ -+ -+struct msoab_compressor_p { -+ struct msoab_compressor base; -+ struct mspack_system *system; -+ /* todo */ -+}; -+ -+/* OAB decompression definitions */ -+ -+struct msoab_decompressor_p { -+ struct msoab_decompressor base; -+ struct mspack_system *system; -+ /* todo */ -+}; -+ -+#define oabhead_VersionHi (0x0000) -+#define oabhead_VersionLo (0x0004) -+#define oabhead_BlockMax (0x0008) -+#define oabhead_TargetSize (0x000c) -+#define oabhead_SIZEOF (0x0010) -+ -+#define oabblk_Flags (0x0000) -+#define oabblk_CompSize (0x0004) -+#define oabblk_UncompSize (0x0008) -+#define oabblk_CRC (0x000c) -+#define oabblk_SIZEOF (0x0010) -+ -+#define patchhead_VersionHi (0x0000) -+#define patchhead_VersionLo (0x0004) -+#define patchhead_BlockMax (0x0008) -+#define patchhead_SourceSize (0x000c) -+#define patchhead_TargetSize (0x0010) -+#define patchhead_SourceCRC (0x0014) -+#define patchhead_TargetCRC (0x0018) -+#define patchhead_SIZEOF (0x001c) -+ -+#define patchblk_PatchSize (0x0000) -+#define patchblk_TargetSize (0x0004) -+#define patchblk_SourceSize (0x0008) -+#define patchblk_CRC (0x000c) -+#define patchblk_SIZEOF (0x0010) -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/oabc.c b/libclamav/libmspack-0.4alpha/mspack/oabc.c -new file mode 100644 -index 000000000000..327ce61ba12c ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/oabc.c -@@ -0,0 +1,24 @@ -+/* This file is part of libmspack. -+ * © 2013 Intel Corporation -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* OAB compression implementation */ -+ -+#include -+#include -+ -+struct msoab_compressor * -+ mspack_create_oab_compressor(struct mspack_system *sys) -+{ -+ /* todo */ -+ return NULL; -+} -+ -+void mspack_destroy_oab_compressor(struct msoab_compressor *self) { -+ /* todo */ -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/oabd.c b/libclamav/libmspack-0.4alpha/mspack/oabd.c -new file mode 100644 -index 000000000000..e4b9e4bbc084 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/oabd.c -@@ -0,0 +1,408 @@ -+/* This file is part of libmspack. -+ * © 2013 Intel Corporation -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* The Exchange Online Addressbook (OAB or sometimes OAL) is distributed -+ * as a .LZX file in one of two forms. Either a "full download" containing -+ * the entire address list, or an incremental binary patch which should be -+ * applied to a previous version of the full decompressed data. -+ * -+ * The contents and format of the decompressed OAB are not handled here. -+ * -+ * For a complete description of the format, see the MSDN site: -+ * -+ * http://msdn.microsoft.com/en-us/library/cc463914 - [MS-OXOAB].pdf -+ * http://msdn.microsoft.com/en-us/library/cc483133 - [MS-PATCH].pdf -+ */ -+ -+/* OAB decompression implementation */ -+ -+#include -+#include -+#include -+#include -+ -+/* prototypes */ -+static int oabd_decompress(struct msoab_decompressor *self, const char *input, -+ const char *output); -+static int oabd_decompress_incremental(struct msoab_decompressor *self, -+ const char *input, const char *base, -+ const char *output); -+ -+struct msoab_decompressor * -+ mspack_create_oab_decompressor(struct mspack_system *sys) -+{ -+ struct msoab_decompressor_p *self = NULL; -+ -+ if (!sys) sys = mspack_default_system; -+ if (!mspack_valid_system(sys)) return NULL; -+ -+ if ((self = (struct msoab_decompressor_p *) sys->alloc(sys, sizeof(struct msoab_decompressor_p)))) { -+ self->base.decompress = &oabd_decompress; -+ self->base.decompress_incremental = &oabd_decompress_incremental; -+ self->system = sys; -+ } -+ return (struct msoab_decompressor *) self; -+} -+ -+void mspack_destroy_oab_decompressor(struct msoab_decompressor *base) { -+ struct msoab_decompressor_p *self = (struct msoab_decompressor_p *)base; -+ if (self) { -+ struct mspack_system *sys = self->system; -+ sys->free(self); -+ } -+} -+ -+struct oabd_file { -+ struct mspack_system *orig_sys; -+ struct mspack_file *orig_file; -+ unsigned int crc; -+ size_t available; -+}; -+ -+ -+static int oabd_sys_read (struct mspack_file *base_file, void *buf, int size) -+{ -+ struct oabd_file *file = (struct oabd_file *)base_file; -+ int bytes_read; -+ -+ if ((size_t)size > file->available) -+ size = file->available; -+ -+ bytes_read = file->orig_sys->read(file->orig_file, buf, size); -+ if (bytes_read < 0) -+ return bytes_read; -+ -+ file->available -= bytes_read; -+ return bytes_read; -+} -+ -+static int oabd_sys_write (struct mspack_file *base_file, void *buf, int size) -+{ -+ struct oabd_file *file = (struct oabd_file *)base_file; -+ int bytes_written = file->orig_sys->write(file->orig_file, buf, size); -+ -+ if (bytes_written > 0) -+ file->crc = crc32(file->crc, buf, bytes_written); -+ -+ return bytes_written; -+} -+ -+static int oabd_decompress(struct msoab_decompressor *_self, const char *input, -+ const char *output) -+{ -+ struct msoab_decompressor_p *self = (struct msoab_decompressor_p *) _self; -+ struct mspack_system *sys; -+ struct mspack_file *infh = NULL; -+ struct mspack_file *outfh = NULL; -+ unsigned char *buf = NULL; -+ unsigned char hdrbuf[oabhead_SIZEOF]; -+ unsigned int block_max, target_size; -+ struct lzxd_stream *lzx = NULL; -+ struct mspack_system oabd_sys; -+ struct oabd_file in_ofh, out_ofh; -+ unsigned int window_bits; -+ int ret = MSPACK_ERR_OK; -+ -+ if (!self) return MSPACK_ERR_ARGS; -+ sys = self->system; -+ -+ infh = sys->open(sys, input, MSPACK_SYS_OPEN_READ); -+ if (!infh) { -+ ret = MSPACK_ERR_OPEN; -+ goto out; -+ } -+ -+ if (sys->read(infh, hdrbuf, oabhead_SIZEOF) != oabhead_SIZEOF) { -+ ret = MSPACK_ERR_READ; -+ goto out; -+ } -+ -+ if (EndGetI32(&hdrbuf[oabhead_VersionHi]) != 3 || -+ EndGetI32(&hdrbuf[oabhead_VersionLo]) != 1) { -+ ret = MSPACK_ERR_SIGNATURE; -+ goto out; -+ } -+ -+ block_max = EndGetI32(&hdrbuf[oabhead_BlockMax]); -+ target_size = EndGetI32(&hdrbuf[oabhead_TargetSize]); -+ -+ /* We use it for reading block headers too */ -+ if (block_max < oabblk_SIZEOF) -+ block_max = oabblk_SIZEOF; -+ -+ outfh = sys->open(sys, output, MSPACK_SYS_OPEN_WRITE); -+ if (!outfh) { -+ ret = MSPACK_ERR_OPEN; -+ goto out; -+ } -+ -+ buf = sys->alloc(sys, block_max); -+ if (!buf) { -+ ret = MSPACK_ERR_NOMEMORY; -+ goto out; -+ } -+ -+ oabd_sys = *sys; -+ oabd_sys.read = oabd_sys_read; -+ oabd_sys.write = oabd_sys_write; -+ -+ in_ofh.orig_sys = sys; -+ in_ofh.orig_file = infh; -+ -+ out_ofh.orig_sys = sys; -+ out_ofh.orig_file = outfh; -+ -+ while (target_size) { -+ unsigned int blk_csize, blk_dsize, blk_crc, blk_flags; -+ -+ if (sys->read(infh, buf, oabblk_SIZEOF) != oabblk_SIZEOF) { -+ ret = MSPACK_ERR_READ; -+ goto out; -+ } -+ blk_flags = EndGetI32(&buf[oabblk_Flags]); -+ blk_csize = EndGetI32(&buf[oabblk_CompSize]); -+ blk_dsize = EndGetI32(&buf[oabblk_UncompSize]); -+ blk_crc = EndGetI32(&buf[oabblk_CRC]); -+ -+ if (blk_dsize > block_max || blk_dsize > target_size || blk_flags > 1) { -+ ret = MSPACK_ERR_DATAFORMAT; -+ goto out; -+ } -+ -+ if (!blk_flags) { -+ /* Uncompressed block */ -+ if (blk_dsize != blk_csize) { -+ ret = MSPACK_ERR_DATAFORMAT; -+ goto out; -+ } -+ if (sys->read(infh, buf, blk_dsize) != (int)blk_dsize) { -+ ret = MSPACK_ERR_READ; -+ goto out; -+ } -+ if (sys->write(outfh, buf, blk_dsize) != (int)blk_dsize) { -+ ret = MSPACK_ERR_WRITE; -+ goto out; -+ } -+ } else { -+ /* LZX compressed block */ -+ window_bits = 17; -+ -+ while (window_bits < 25 && (1U << window_bits) < blk_dsize) -+ window_bits++; -+ -+ in_ofh.available = blk_csize; -+ out_ofh.crc = 0xffffffff; -+ -+ lzx = lzxd_init(&oabd_sys, (void *)&in_ofh, (void *)&out_ofh, window_bits, -+ 0, 4096, blk_dsize, 1); -+ if (!lzx) { -+ ret = MSPACK_ERR_NOMEMORY; -+ goto out; -+ } -+ -+ ret = lzxd_decompress(lzx, blk_dsize); -+ if (ret != MSPACK_ERR_OK) -+ goto out; -+ -+ lzxd_free(lzx); -+ lzx = NULL; -+ -+ /* Consume any trailing padding bytes before the next block */ -+ while (in_ofh.available) { -+ int count = block_max; -+ if ((size_t)count > in_ofh.available) -+ count = in_ofh.available; -+ -+ count = sys->read(infh, buf, count); -+ if (count < 0) { -+ ret = MSPACK_ERR_READ; -+ goto out; -+ } -+ in_ofh.available -= count; -+ } -+ -+ if (out_ofh.crc != blk_crc) { -+ ret = MSPACK_ERR_CHECKSUM; -+ goto out; -+ } -+ } -+ target_size -= blk_dsize; -+ } -+ -+ out: -+ if (lzx) -+ lzxd_free(lzx); -+ if (buf) -+ sys->free(buf); -+ if (outfh) -+ sys->close(outfh); -+ if (infh) -+ sys->close(infh); -+ -+ return ret; -+} -+ -+static int oabd_decompress_incremental(struct msoab_decompressor *_self, -+ const char *input, const char *base, -+ const char *output) -+{ -+ struct msoab_decompressor_p *self = (struct msoab_decompressor_p *) _self; -+ struct mspack_system *sys; -+ struct mspack_file *infh = NULL; -+ struct mspack_file *basefh = NULL; -+ struct mspack_file *outfh = NULL; -+ unsigned char *buf = NULL; -+ unsigned char hdrbuf[patchhead_SIZEOF]; -+ unsigned int block_max, source_size, target_size, source_crc, target_crc; -+ struct lzxd_stream *lzx = NULL; -+ struct mspack_system oabd_sys; -+ struct oabd_file in_ofh, out_ofh; -+ unsigned int window_bits, window_size; -+ int ret = MSPACK_ERR_OK; -+ -+ if (!self) return MSPACK_ERR_ARGS; -+ sys = self->system; -+ -+ infh = sys->open(sys, input, MSPACK_SYS_OPEN_READ); -+ if (!infh) { -+ ret = MSPACK_ERR_OPEN; -+ goto out; -+ } -+ -+ if (sys->read(infh, hdrbuf, patchhead_SIZEOF) != patchhead_SIZEOF) { -+ ret = MSPACK_ERR_READ; -+ goto out; -+ } -+ -+ if (EndGetI32(&hdrbuf[patchhead_VersionHi]) != 3 || -+ EndGetI32(&hdrbuf[patchhead_VersionLo]) != 2) { -+ ret = MSPACK_ERR_SIGNATURE; -+ goto out; -+ } -+ -+ block_max = EndGetI32(&hdrbuf[patchhead_BlockMax]); -+ source_size = EndGetI32(&hdrbuf[patchhead_SourceSize]); -+ target_size = EndGetI32(&hdrbuf[patchhead_TargetSize]); -+ source_crc = EndGetI32(&hdrbuf[patchhead_SourceCRC]); -+ target_crc = EndGetI32(&hdrbuf[patchhead_TargetCRC]); -+ -+ /* We use it for reading block headers too */ -+ if (block_max < patchblk_SIZEOF) -+ block_max = patchblk_SIZEOF; -+ -+ basefh = sys->open(sys, base, MSPACK_SYS_OPEN_READ); -+ if (!basefh) { -+ ret = MSPACK_ERR_OPEN; -+ goto out; -+ } -+ -+ outfh = sys->open(sys, output, MSPACK_SYS_OPEN_WRITE); -+ if (!outfh) { -+ ret = MSPACK_ERR_OPEN; -+ goto out; -+ } -+ -+ buf = sys->alloc(sys, block_max); -+ if (!buf) { -+ ret = MSPACK_ERR_NOMEMORY; -+ goto out; -+ } -+ -+ oabd_sys = *sys; -+ oabd_sys.read = oabd_sys_read; -+ oabd_sys.write = oabd_sys_write; -+ -+ in_ofh.orig_sys = sys; -+ in_ofh.orig_file = infh; -+ -+ out_ofh.orig_sys = sys; -+ out_ofh.orig_file = outfh; -+ -+ while (target_size) { -+ unsigned int blk_csize, blk_dsize, blk_ssize, blk_crc; -+ -+ if (sys->read(infh, buf, patchblk_SIZEOF) != patchblk_SIZEOF) { -+ ret = MSPACK_ERR_READ; -+ goto out; -+ } -+ blk_csize = EndGetI32(&buf[patchblk_PatchSize]); -+ blk_dsize = EndGetI32(&buf[patchblk_TargetSize]); -+ blk_ssize = EndGetI32(&buf[patchblk_SourceSize]); -+ blk_crc = EndGetI32(&buf[patchblk_CRC]); -+ -+ if (blk_dsize > block_max || blk_dsize > target_size || -+ blk_ssize > block_max) { -+ ret = MSPACK_ERR_DATAFORMAT; -+ goto out; -+ } -+ -+ -+ window_size = (blk_ssize + 32767) & ~32767; -+ window_size += blk_dsize; -+ window_bits = 17; -+ -+ while (window_bits < 25 && (1U << window_bits) < window_size) -+ window_bits++; -+ -+ in_ofh.available = blk_csize; -+ out_ofh.crc = 0xffffffff; -+ -+ lzx = lzxd_init(&oabd_sys, (void *)&in_ofh, (void *)&out_ofh, window_bits, -+ 0, 4096, blk_dsize, 1); -+ if (!lzx) { -+ ret = MSPACK_ERR_NOMEMORY; -+ goto out; -+ } -+ ret = lzxd_set_reference_data(lzx, sys, basefh, blk_ssize); -+ if (ret != MSPACK_ERR_OK) -+ goto out; -+ -+ ret = lzxd_decompress(lzx, blk_dsize); -+ if (ret != MSPACK_ERR_OK) -+ goto out; -+ -+ lzxd_free(lzx); -+ lzx = NULL; -+ -+ /* Consume any trailing padding bytes before the next block */ -+ while (in_ofh.available) { -+ int count = block_max; -+ if ((size_t)count > in_ofh.available) -+ count = in_ofh.available; -+ -+ count = sys->read(infh, buf, count); -+ if (count < 0) { -+ ret = MSPACK_ERR_READ; -+ goto out; -+ } -+ in_ofh.available -= count; -+ } -+ -+ if (out_ofh.crc != blk_crc) { -+ ret = MSPACK_ERR_CHECKSUM; -+ goto out; -+ } -+ -+ target_size -= blk_dsize; -+ } -+ -+ out: -+ if (lzx) -+ lzxd_free(lzx); -+ if (buf) -+ sys->free(buf); -+ if (outfh) -+ sys->close(outfh); -+ if (basefh) -+ sys->close(basefh); -+ if (infh) -+ sys->close(infh); -+ -+ return ret; -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/qtm.h b/libclamav/libmspack-0.4alpha/mspack/qtm.h -new file mode 100644 -index 000000000000..ab0bb4c32cc2 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/qtm.h -@@ -0,0 +1,128 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * The Quantum method was created by David Stafford, adapted by Microsoft -+ * Corporation. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_QTM_H -+#define MSPACK_QTM_H 1 -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* Quantum compression / decompression definitions */ -+ -+#define QTM_FRAME_SIZE (32768) -+ -+struct qtmd_modelsym { -+ unsigned short sym, cumfreq; -+}; -+ -+struct qtmd_model { -+ int shiftsleft, entries; -+ struct qtmd_modelsym *syms; -+}; -+ -+struct qtmd_stream { -+ struct mspack_system *sys; /* I/O routines */ -+ struct mspack_file *input; /* input file handle */ -+ struct mspack_file *output; /* output file handle */ -+ -+ unsigned char *window; /* decoding window */ -+ unsigned int window_size; /* window size */ -+ unsigned int window_posn; /* decompression offset within window */ -+ unsigned int frame_todo; /* bytes remaining for current frame */ -+ -+ unsigned short H, L, C; /* high/low/current: arith coding state */ -+ unsigned char header_read; /* have we started decoding a new frame? */ -+ -+ int error; -+ -+ /* I/O buffers */ -+ unsigned char *inbuf, *i_ptr, *i_end, *o_ptr, *o_end; -+ unsigned int bit_buffer, inbuf_size; -+ unsigned char bits_left, input_end; -+ -+ /* four literal models, each representing 64 symbols -+ * model0 for literals from 0 to 63 (selector = 0) -+ * model1 for literals from 64 to 127 (selector = 1) -+ * model2 for literals from 128 to 191 (selector = 2) -+ * model3 for literals from 129 to 255 (selector = 3) */ -+ struct qtmd_model model0, model1, model2, model3; -+ -+ /* three match models. -+ * model4 for match with fixed length of 3 bytes -+ * model5 for match with fixed length of 4 bytes -+ * model6 for variable length match, encoded with model6len model */ -+ struct qtmd_model model4, model5, model6, model6len; -+ -+ /* selector model. 0-6 to say literal (0,1,2,3) or match (4,5,6) */ -+ struct qtmd_model model7; -+ -+ /* symbol arrays for all models */ -+ struct qtmd_modelsym m0sym[64 + 1]; -+ struct qtmd_modelsym m1sym[64 + 1]; -+ struct qtmd_modelsym m2sym[64 + 1]; -+ struct qtmd_modelsym m3sym[64 + 1]; -+ struct qtmd_modelsym m4sym[24 + 1]; -+ struct qtmd_modelsym m5sym[36 + 1]; -+ struct qtmd_modelsym m6sym[42 + 1], m6lsym[27 + 1]; -+ struct qtmd_modelsym m7sym[7 + 1]; -+}; -+ -+/* allocates Quantum decompression state for decoding the given stream. -+ * -+ * - returns NULL if window_bits is outwith the range 10 to 21 (inclusive). -+ * -+ * - uses system->alloc() to allocate memory -+ * -+ * - returns NULL if not enough memory -+ * -+ * - window_bits is the size of the Quantum window, from 1Kb (10) to 2Mb (21). -+ * -+ * - input_buffer_size is the number of bytes to use to store bitstream data. -+ */ -+extern struct qtmd_stream *qtmd_init(struct mspack_system *system, -+ struct mspack_file *input, -+ struct mspack_file *output, -+ int window_bits, -+ int input_buffer_size); -+ -+/* decompresses, or decompresses more of, a Quantum stream. -+ * -+ * - out_bytes of data will be decompressed and the function will return -+ * with an MSPACK_ERR_OK return code. -+ * -+ * - decompressing will stop as soon as out_bytes is reached. if the true -+ * amount of bytes decoded spills over that amount, they will be kept for -+ * a later invocation of qtmd_decompress(). -+ * -+ * - the output bytes will be passed to the system->write() function given in -+ * qtmd_init(), using the output file handle given in qtmd_init(). More -+ * than one call may be made to system->write() -+ * -+ * - Quantum will read input bytes as necessary using the system->read() -+ * function given in qtmd_init(), using the input file handle given in -+ * qtmd_init(). This will continue until system->read() returns 0 bytes, -+ * or an error. -+ */ -+extern int qtmd_decompress(struct qtmd_stream *qtm, off_t out_bytes); -+ -+/* frees all state associated with a Quantum data stream -+ * -+ * - calls system->free() using the system pointer given in qtmd_init() -+ */ -+void qtmd_free(struct qtmd_stream *qtm); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/qtmd.c b/libclamav/libmspack-0.4alpha/mspack/qtmd.c -new file mode 100644 -index 000000000000..12b27f5608c4 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/qtmd.c -@@ -0,0 +1,489 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * The Quantum method was created by David Stafford, adapted by Microsoft -+ * Corporation. -+ * -+ * This decompressor is based on an implementation by Matthew Russotto, used -+ * with permission. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* Quantum decompression implementation */ -+ -+/* This decompressor was researched and implemented by Matthew Russotto. It -+ * has since been tidied up by Stuart Caie. More information can be found at -+ * http://www.speakeasy.org/~russotto/quantumcomp.html -+ */ -+ -+#include -+#include -+ -+/* import bit-reading macros and code */ -+#define BITS_TYPE struct qtmd_stream -+#define BITS_VAR qtm -+#define BITS_ORDER_MSB -+#define READ_BYTES do { \ -+ unsigned char b0, b1; \ -+ READ_IF_NEEDED; b0 = *i_ptr++; \ -+ READ_IF_NEEDED; b1 = *i_ptr++; \ -+ INJECT_BITS((b0 << 8) | b1, 16); \ -+} while (0) -+#include -+ -+/* Quantum static data tables: -+ * -+ * Quantum uses 'position slots' to represent match offsets. For every -+ * match, a small 'position slot' number and a small offset from that slot -+ * are encoded instead of one large offset. -+ * -+ * position_base[] is an index to the position slot bases -+ * -+ * extra_bits[] states how many bits of offset-from-base data is needed. -+ * -+ * length_base[] and length_extra[] are equivalent in function, but are -+ * used for encoding selector 6 (variable length match) match lengths, -+ * instead of match offsets. -+ * -+ * They are generated with the following code: -+ * unsigned int i, offset; -+ * for (i = 0, offset = 0; i < 42; i++) { -+ * position_base[i] = offset; -+ * extra_bits[i] = ((i < 2) ? 0 : (i - 2)) >> 1; -+ * offset += 1 << extra_bits[i]; -+ * } -+ * for (i = 0, offset = 0; i < 26; i++) { -+ * length_base[i] = offset; -+ * length_extra[i] = (i < 2 ? 0 : i - 2) >> 2; -+ * offset += 1 << length_extra[i]; -+ * } -+ * length_base[26] = 254; length_extra[26] = 0; -+ */ -+static const unsigned int position_base[42] = { -+ 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, -+ 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576, 32768, 49152, -+ 65536, 98304, 131072, 196608, 262144, 393216, 524288, 786432, 1048576, 1572864 -+}; -+static const unsigned char extra_bits[42] = { -+ 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, -+ 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19 -+}; -+static const unsigned char length_base[27] = { -+ 0, 1, 2, 3, 4, 5, 6, 8, 10, 12, 14, 18, 22, 26, -+ 30, 38, 46, 54, 62, 78, 94, 110, 126, 158, 190, 222, 254 -+}; -+static const unsigned char length_extra[27] = { -+ 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, -+ 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0 -+}; -+ -+ -+/* Arithmetic decoder: -+ * -+ * GET_SYMBOL(model, var) fetches the next symbol from the stated model -+ * and puts it in var. -+ * -+ * If necessary, qtmd_update_model() is called. -+ */ -+#define GET_SYMBOL(model, var) do { \ -+ range = ((H - L) & 0xFFFF) + 1; \ -+ symf = ((((C - L + 1) * model.syms[0].cumfreq)-1) / range) & 0xFFFF; \ -+ \ -+ for (i = 1; i < model.entries; i++) { \ -+ if (model.syms[i].cumfreq <= symf) break; \ -+ } \ -+ (var) = model.syms[i-1].sym; \ -+ \ -+ range = (H - L) + 1; \ -+ symf = model.syms[0].cumfreq; \ -+ H = L + ((model.syms[i-1].cumfreq * range) / symf) - 1; \ -+ L = L + ((model.syms[i].cumfreq * range) / symf); \ -+ \ -+ do { model.syms[--i].cumfreq += 8; } while (i > 0); \ -+ if (model.syms[0].cumfreq > 3800) qtmd_update_model(&model); \ -+ \ -+ while (1) { \ -+ if ((L & 0x8000) != (H & 0x8000)) { \ -+ if ((L & 0x4000) && !(H & 0x4000)) { \ -+ /* underflow case */ \ -+ C ^= 0x4000; L &= 0x3FFF; H |= 0x4000; \ -+ } \ -+ else break; \ -+ } \ -+ L <<= 1; H = (H << 1) | 1; \ -+ ENSURE_BITS(1); \ -+ C = (C << 1) | PEEK_BITS(1); \ -+ REMOVE_BITS(1); \ -+ } \ -+} while (0) -+ -+static void qtmd_update_model(struct qtmd_model *model) { -+ struct qtmd_modelsym tmp; -+ int i, j; -+ -+ if (--model->shiftsleft) { -+ for (i = model->entries - 1; i >= 0; i--) { -+ /* -1, not -2; the 0 entry saves this */ -+ model->syms[i].cumfreq >>= 1; -+ if (model->syms[i].cumfreq <= model->syms[i+1].cumfreq) { -+ model->syms[i].cumfreq = model->syms[i+1].cumfreq + 1; -+ } -+ } -+ } -+ else { -+ model->shiftsleft = 50; -+ for (i = 0; i < model->entries; i++) { -+ /* no -1, want to include the 0 entry */ -+ /* this converts cumfreqs into frequencies, then shifts right */ -+ model->syms[i].cumfreq -= model->syms[i+1].cumfreq; -+ model->syms[i].cumfreq++; /* avoid losing things entirely */ -+ model->syms[i].cumfreq >>= 1; -+ } -+ -+ /* now sort by frequencies, decreasing order -- this must be an -+ * inplace selection sort, or a sort with the same (in)stability -+ * characteristics */ -+ for (i = 0; i < model->entries - 1; i++) { -+ for (j = i + 1; j < model->entries; j++) { -+ if (model->syms[i].cumfreq < model->syms[j].cumfreq) { -+ tmp = model->syms[i]; -+ model->syms[i] = model->syms[j]; -+ model->syms[j] = tmp; -+ } -+ } -+ } -+ -+ /* then convert frequencies back to cumfreq */ -+ for (i = model->entries - 1; i >= 0; i--) { -+ model->syms[i].cumfreq += model->syms[i+1].cumfreq; -+ } -+ } -+} -+ -+/* Initialises a model to decode symbols from [start] to [start]+[len]-1 */ -+static void qtmd_init_model(struct qtmd_model *model, -+ struct qtmd_modelsym *syms, int start, int len) -+{ -+ int i; -+ -+ model->shiftsleft = 4; -+ model->entries = len; -+ model->syms = syms; -+ -+ for (i = 0; i <= len; i++) { -+ syms[i].sym = start + i; /* actual symbol */ -+ syms[i].cumfreq = len - i; /* current frequency of that symbol */ -+ } -+} -+ -+ -+/*-------- main Quantum code --------*/ -+ -+struct qtmd_stream *qtmd_init(struct mspack_system *system, -+ struct mspack_file *input, -+ struct mspack_file *output, -+ int window_bits, int input_buffer_size) -+{ -+ unsigned int window_size = 1 << window_bits; -+ struct qtmd_stream *qtm; -+ int i; -+ -+ if (!system) return NULL; -+ -+ /* Quantum supports window sizes of 2^10 (1Kb) through 2^21 (2Mb) */ -+ if (window_bits < 10 || window_bits > 21) return NULL; -+ -+ input_buffer_size = (input_buffer_size + 1) & -2; -+ if (input_buffer_size < 2) return NULL; -+ -+ /* allocate decompression state */ -+ if (!(qtm = (struct qtmd_stream *) system->alloc(system, sizeof(struct qtmd_stream)))) { -+ return NULL; -+ } -+ -+ /* allocate decompression window and input buffer */ -+ qtm->window = (unsigned char *) system->alloc(system, (size_t) window_size); -+ qtm->inbuf = (unsigned char *) system->alloc(system, (size_t) input_buffer_size); -+ if (!qtm->window || !qtm->inbuf) { -+ system->free(qtm->window); -+ system->free(qtm->inbuf); -+ system->free(qtm); -+ return NULL; -+ } -+ -+ /* initialise decompression state */ -+ qtm->sys = system; -+ qtm->input = input; -+ qtm->output = output; -+ qtm->inbuf_size = input_buffer_size; -+ qtm->window_size = window_size; -+ qtm->window_posn = 0; -+ qtm->frame_todo = QTM_FRAME_SIZE; -+ qtm->header_read = 0; -+ qtm->error = MSPACK_ERR_OK; -+ -+ qtm->i_ptr = qtm->i_end = &qtm->inbuf[0]; -+ qtm->o_ptr = qtm->o_end = &qtm->window[0]; -+ qtm->input_end = 0; -+ qtm->bits_left = 0; -+ qtm->bit_buffer = 0; -+ -+ /* initialise arithmetic coding models -+ * - model 4 depends on window size, ranges from 20 to 24 -+ * - model 5 depends on window size, ranges from 20 to 36 -+ * - model 6pos depends on window size, ranges from 20 to 42 -+ */ -+ i = window_bits * 2; -+ qtmd_init_model(&qtm->model0, &qtm->m0sym[0], 0, 64); -+ qtmd_init_model(&qtm->model1, &qtm->m1sym[0], 64, 64); -+ qtmd_init_model(&qtm->model2, &qtm->m2sym[0], 128, 64); -+ qtmd_init_model(&qtm->model3, &qtm->m3sym[0], 192, 64); -+ qtmd_init_model(&qtm->model4, &qtm->m4sym[0], 0, (i > 24) ? 24 : i); -+ qtmd_init_model(&qtm->model5, &qtm->m5sym[0], 0, (i > 36) ? 36 : i); -+ qtmd_init_model(&qtm->model6, &qtm->m6sym[0], 0, i); -+ qtmd_init_model(&qtm->model6len, &qtm->m6lsym[0], 0, 27); -+ qtmd_init_model(&qtm->model7, &qtm->m7sym[0], 0, 7); -+ -+ /* all ok */ -+ return qtm; -+} -+ -+int qtmd_decompress(struct qtmd_stream *qtm, off_t out_bytes) { -+ unsigned int frame_todo, frame_end, window_posn, match_offset, range; -+ unsigned char *window, *i_ptr, *i_end, *runsrc, *rundest; -+ int i, j, selector, extra, sym, match_length; -+ unsigned short H, L, C, symf; -+ -+ register unsigned int bit_buffer; -+ register unsigned char bits_left; -+ -+ /* easy answers */ -+ if (!qtm || (out_bytes < 0)) return MSPACK_ERR_ARGS; -+ if (qtm->error) return qtm->error; -+ -+ /* flush out any stored-up bytes before we begin */ -+ i = qtm->o_end - qtm->o_ptr; -+ if ((off_t) i > out_bytes) i = (int) out_bytes; -+ if (i) { -+ if (qtm->sys->write(qtm->output, qtm->o_ptr, i) != i) { -+ return qtm->error = MSPACK_ERR_WRITE; -+ } -+ qtm->o_ptr += i; -+ out_bytes -= i; -+ } -+ if (out_bytes == 0) return MSPACK_ERR_OK; -+ -+ /* restore local state */ -+ RESTORE_BITS; -+ window = qtm->window; -+ window_posn = qtm->window_posn; -+ frame_todo = qtm->frame_todo; -+ H = qtm->H; -+ L = qtm->L; -+ C = qtm->C; -+ -+ /* while we do not have enough decoded bytes in reserve: */ -+ while ((qtm->o_end - qtm->o_ptr) < out_bytes) { -+ /* read header if necessary. Initialises H, L and C */ -+ if (!qtm->header_read) { -+ H = 0xFFFF; L = 0; READ_BITS(C, 16); -+ qtm->header_read = 1; -+ } -+ -+ /* decode more, up to the number of bytes needed, the frame boundary, -+ * or the window boundary, whichever comes first */ -+ frame_end = window_posn + (out_bytes - (qtm->o_end - qtm->o_ptr)); -+ if ((window_posn + frame_todo) < frame_end) { -+ frame_end = window_posn + frame_todo; -+ } -+ if (frame_end > qtm->window_size) { -+ frame_end = qtm->window_size; -+ } -+ -+ while (window_posn < frame_end) { -+ GET_SYMBOL(qtm->model7, selector); -+ if (selector < 4) { -+ /* literal byte */ -+ struct qtmd_model *mdl = (selector == 0) ? &qtm->model0 : -+ ((selector == 1) ? &qtm->model1 : -+ ((selector == 2) ? &qtm->model2 : -+ &qtm->model3)); -+ GET_SYMBOL((*mdl), sym); -+ window[window_posn++] = sym; -+ frame_todo--; -+ } -+ else { -+ /* match repeated string */ -+ switch (selector) { -+ case 4: /* selector 4 = fixed length match (3 bytes) */ -+ GET_SYMBOL(qtm->model4, sym); -+ READ_MANY_BITS(extra, extra_bits[sym]); -+ match_offset = position_base[sym] + extra + 1; -+ match_length = 3; -+ break; -+ -+ case 5: /* selector 5 = fixed length match (4 bytes) */ -+ GET_SYMBOL(qtm->model5, sym); -+ READ_MANY_BITS(extra, extra_bits[sym]); -+ match_offset = position_base[sym] + extra + 1; -+ match_length = 4; -+ break; -+ -+ case 6: /* selector 6 = variable length match */ -+ GET_SYMBOL(qtm->model6len, sym); -+ READ_MANY_BITS(extra, length_extra[sym]); -+ match_length = length_base[sym] + extra + 5; -+ -+ GET_SYMBOL(qtm->model6, sym); -+ READ_MANY_BITS(extra, extra_bits[sym]); -+ match_offset = position_base[sym] + extra + 1; -+ break; -+ -+ default: -+ /* should be impossible, model7 can only return 0-6 */ -+ D(("got %d from selector", selector)) -+ return qtm->error = MSPACK_ERR_DECRUNCH; -+ } -+ -+ rundest = &window[window_posn]; -+ frame_todo -= match_length; -+ -+ /* does match destination wrap the window? This situation is possible -+ * where the window size is less than the 32k frame size, but matches -+ * must not go beyond a frame boundary */ -+ if ((window_posn + match_length) > qtm->window_size) { -+ /* copy first part of match, before window end */ -+ i = qtm->window_size - window_posn; -+ j = window_posn - match_offset; -+ while (i--) *rundest++ = window[j++ & (qtm->window_size - 1)]; -+ -+ /* flush currently stored data */ -+ i = (&window[qtm->window_size] - qtm->o_ptr); -+ -+ /* this should not happen, but if it does then this code -+ * can't handle the situation (can't flush up to the end of -+ * the window, but can't break out either because we haven't -+ * finished writing the match). bail out in this case */ -+ if (i > out_bytes) { -+ D(("during window-wrap match; %d bytes to flush but only need %d", -+ i, (int) out_bytes)) -+ return qtm->error = MSPACK_ERR_DECRUNCH; -+ } -+ if (qtm->sys->write(qtm->output, qtm->o_ptr, i) != i) { -+ return qtm->error = MSPACK_ERR_WRITE; -+ } -+ out_bytes -= i; -+ qtm->o_ptr = &window[0]; -+ qtm->o_end = &window[0]; -+ -+ /* copy second part of match, after window wrap */ -+ rundest = &window[0]; -+ i = match_length - (qtm->window_size - window_posn); -+ while (i--) *rundest++ = window[j++ & (qtm->window_size - 1)]; -+ window_posn = window_posn + match_length - qtm->window_size; -+ -+ break; /* because "window_posn < frame_end" has now failed */ -+ } -+ else { -+ /* normal match - output won't wrap window or frame end */ -+ i = match_length; -+ -+ /* does match _offset_ wrap the window? */ -+ if (match_offset > window_posn) { -+ /* j = length from match offset to end of window */ -+ j = match_offset - window_posn; -+ if (j > (int) qtm->window_size) { -+ D(("match offset beyond window boundaries")) -+ return qtm->error = MSPACK_ERR_DECRUNCH; -+ } -+ runsrc = &window[qtm->window_size - j]; -+ if (j < i) { -+ /* if match goes over the window edge, do two copy runs */ -+ i -= j; while (j-- > 0) *rundest++ = *runsrc++; -+ runsrc = window; -+ } -+ while (i-- > 0) *rundest++ = *runsrc++; -+ } -+ else { -+ runsrc = rundest - match_offset; -+ while (i-- > 0) *rundest++ = *runsrc++; -+ } -+ window_posn += match_length; -+ } -+ } /* if (window_posn+match_length > frame_end) */ -+ } /* while (window_posn < frame_end) */ -+ -+ qtm->o_end = &window[window_posn]; -+ -+ /* if we subtracted too much from frame_todo, it will -+ * wrap around past zero and go above its max value */ -+ if (frame_todo > QTM_FRAME_SIZE) { -+ D(("overshot frame alignment")) -+ return qtm->error = MSPACK_ERR_DECRUNCH; -+ } -+ -+ /* another frame completed? */ -+ if (frame_todo == 0) { -+ /* re-align input */ -+ if (bits_left & 7) REMOVE_BITS(bits_left & 7); -+ -+ /* special Quantum hack -- cabd.c injects a trailer byte to allow the -+ * decompressor to realign itself. CAB Quantum blocks, unlike LZX -+ * blocks, can have anything from 0 to 4 trailing null bytes. */ -+ do { READ_BITS(i, 8); } while (i != 0xFF); -+ -+ qtm->header_read = 0; -+ -+ frame_todo = QTM_FRAME_SIZE; -+ } -+ -+ /* window wrap? */ -+ if (window_posn == qtm->window_size) { -+ /* flush all currently stored data */ -+ i = (qtm->o_end - qtm->o_ptr); -+ /* break out if we have more than enough to finish this request */ -+ if (i >= out_bytes) break; -+ if (qtm->sys->write(qtm->output, qtm->o_ptr, i) != i) { -+ return qtm->error = MSPACK_ERR_WRITE; -+ } -+ out_bytes -= i; -+ qtm->o_ptr = &window[0]; -+ qtm->o_end = &window[0]; -+ window_posn = 0; -+ } -+ -+ } /* while (more bytes needed) */ -+ -+ if (out_bytes) { -+ i = (int) out_bytes; -+ if (qtm->sys->write(qtm->output, qtm->o_ptr, i) != i) { -+ return qtm->error = MSPACK_ERR_WRITE; -+ } -+ qtm->o_ptr += i; -+ } -+ -+ /* store local state */ -+ -+ STORE_BITS; -+ qtm->window_posn = window_posn; -+ qtm->frame_todo = frame_todo; -+ qtm->H = H; -+ qtm->L = L; -+ qtm->C = C; -+ -+ return MSPACK_ERR_OK; -+} -+ -+void qtmd_free(struct qtmd_stream *qtm) { -+ struct mspack_system *sys; -+ if (qtm) { -+ sys = qtm->sys; -+ sys->free(qtm->window); -+ sys->free(qtm->inbuf); -+ sys->free(qtm); -+ } -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/readbits.h b/libclamav/libmspack-0.4alpha/mspack/readbits.h -new file mode 100644 -index 000000000000..457cbdd7d4cc ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/readbits.h -@@ -0,0 +1,207 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2010 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_READBITS_H -+#define MSPACK_READBITS_H 1 -+ -+/* this header defines macros that read data streams by -+ * the individual bits -+ * -+ * INIT_BITS initialises bitstream state in state structure -+ * STORE_BITS stores bitstream state in state structure -+ * RESTORE_BITS restores bitstream state from state structure -+ * ENSURE_BITS(n) ensure there are at least N bits in the bit buffer -+ * READ_BITS(var,n) takes N bits from the buffer and puts them in var -+ * PEEK_BITS(n) extracts without removing N bits from the bit buffer -+ * REMOVE_BITS(n) removes N bits from the bit buffer -+ * -+ * READ_BITS simply calls ENSURE_BITS, PEEK_BITS and REMOVE_BITS, -+ * which means it's limited to reading the number of bits you can -+ * ensure at any one time. It also fails if asked to read zero bits. -+ * If you need to read zero bits, or more bits than can be ensured in -+ * one go, use READ_MANY_BITS instead. -+ * -+ * These macros have variable names baked into them, so to use them -+ * you have to define some macros: -+ * - BITS_TYPE: the type name of your state structure -+ * - BITS_VAR: the variable that points to your state structure -+ * - define BITS_ORDER_MSB if bits are read from the MSB, or -+ * define BITS_ORDER_LSB if bits are read from the LSB -+ * - READ_BYTES: some code that reads more data into the bit buffer, -+ * it should use READ_IF_NEEDED (calls read_input if the byte buffer -+ * is empty), then INJECT_BITS(data,n) to put data from the byte -+ * buffer into the bit buffer. -+ * -+ * You also need to define some variables and structure members: -+ * - unsigned char *i_ptr; // current position in the byte buffer -+ * - unsigned char *i_end; // end of the byte buffer -+ * - unsigned int bit_buffer; // the bit buffer itself -+ * - unsigned int bits_left; // number of bits remaining -+ * -+ * If you use read_input() and READ_IF_NEEDED, they also expect these -+ * structure members: -+ * - struct mspack_system *sys; // to access sys->read() -+ * - unsigned int error; // to record/return read errors -+ * - unsigned char input_end; // to mark reaching the EOF -+ * - unsigned char *inbuf; // the input byte buffer -+ * - unsigned int inbuf_size; // the size of the input byte buffer -+ * -+ * Your READ_BYTES implementation should read data from *i_ptr and -+ * put them in the bit buffer. READ_IF_NEEDED will call read_input() -+ * if i_ptr reaches i_end, and will fill up inbuf and set i_ptr to -+ * the start of inbuf and i_end to the end of inbuf. -+ * -+ * If you're reading in MSB order, the routines work by using the area -+ * beyond the MSB and the LSB of the bit buffer as a free source of -+ * zeroes when shifting. This avoids having to mask any bits. So we -+ * have to know the bit width of the bit buffer variable. We use -+ * and CHAR_BIT to find the size of the bit buffer in bits. -+ * -+ * If you are reading in LSB order, bits need to be masked. Normally -+ * this is done by computing the mask: N bits are masked by the value -+ * (1< -+#endif -+#ifndef CHAR_BIT -+# define CHAR_BIT (8) -+#endif -+#define BITBUF_WIDTH (sizeof(bit_buffer) * CHAR_BIT) -+ -+#define INIT_BITS do { \ -+ BITS_VAR->i_ptr = &BITS_VAR->inbuf[0]; \ -+ BITS_VAR->i_end = &BITS_VAR->inbuf[0]; \ -+ BITS_VAR->bit_buffer = 0; \ -+ BITS_VAR->bits_left = 0; \ -+ BITS_VAR->input_end = 0; \ -+} while (0) -+ -+#define STORE_BITS do { \ -+ BITS_VAR->i_ptr = i_ptr; \ -+ BITS_VAR->i_end = i_end; \ -+ BITS_VAR->bit_buffer = bit_buffer; \ -+ BITS_VAR->bits_left = bits_left; \ -+} while (0) -+ -+#define RESTORE_BITS do { \ -+ i_ptr = BITS_VAR->i_ptr; \ -+ i_end = BITS_VAR->i_end; \ -+ bit_buffer = BITS_VAR->bit_buffer; \ -+ bits_left = BITS_VAR->bits_left; \ -+} while (0) -+ -+#define ENSURE_BITS(nbits) do { \ -+ while (bits_left < (nbits)) READ_BYTES; \ -+} while (0) -+ -+#define READ_BITS(val, nbits) do { \ -+ ENSURE_BITS(nbits); \ -+ (val) = PEEK_BITS(nbits); \ -+ REMOVE_BITS(nbits); \ -+} while (0) -+ -+#define READ_MANY_BITS(val, bits) do { \ -+ unsigned char needed = (bits), bitrun; \ -+ (val) = 0; \ -+ while (needed > 0) { \ -+ if (bits_left <= (BITBUF_WIDTH - 16)) READ_BYTES; \ -+ bitrun = (bits_left < needed) ? bits_left : needed; \ -+ (val) = ((val) << bitrun) | PEEK_BITS(bitrun); \ -+ REMOVE_BITS(bitrun); \ -+ needed -= bitrun; \ -+ } \ -+} while (0) -+ -+#ifdef BITS_ORDER_MSB -+# define PEEK_BITS(nbits) (bit_buffer >> (BITBUF_WIDTH - (nbits))) -+# define REMOVE_BITS(nbits) ((bit_buffer <<= (nbits)), (bits_left -= (nbits))) -+# define INJECT_BITS(bitdata,nbits) ((bit_buffer |= \ -+ (bitdata) << (BITBUF_WIDTH - (nbits) - bits_left)), (bits_left += (nbits))) -+#else /* BITS_ORDER_LSB */ -+# define PEEK_BITS(nbits) (bit_buffer & ((1 << (nbits))-1)) -+# define REMOVE_BITS(nbits) ((bit_buffer >>= (nbits)), (bits_left -= (nbits))) -+# define INJECT_BITS(bitdata,nbits) ((bit_buffer |= \ -+ (bitdata) << bits_left), (bits_left += (nbits))) -+#endif -+ -+#ifdef BITS_LSB_TABLE -+/* lsb_bit_mask[n] = (1 << n) - 1 */ -+static const unsigned short lsb_bit_mask[17] = { -+ 0x0000, 0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff, -+ 0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff -+}; -+# define PEEK_BITS_T(nbits) (bit_buffer & lsb_bit_mask[(nbits)]) -+# define READ_BITS_T(val, nbits) do { \ -+ ENSURE_BITS(nbits); \ -+ (val) = PEEK_BITS_T(nbits); \ -+ REMOVE_BITS(nbits); \ -+} while (0) -+#endif -+ -+#ifndef BITS_NO_READ_INPUT -+# define READ_IF_NEEDED do { \ -+ if (i_ptr >= i_end) { \ -+ if (read_input(BITS_VAR)) \ -+ return BITS_VAR->error; \ -+ i_ptr = BITS_VAR->i_ptr; \ -+ i_end = BITS_VAR->i_end; \ -+ } \ -+} while (0) -+ -+static int read_input(BITS_TYPE *p) { -+ int read = p->sys->read(p->input, &p->inbuf[0], (int)p->inbuf_size); -+ if (read < 0) return p->error = MSPACK_ERR_READ; -+ -+ /* we might overrun the input stream by asking for bits we don't use, -+ * so fake 2 more bytes at the end of input */ -+ if (read == 0) { -+ if (p->input_end) { -+ D(("out of input bytes")) -+ return p->error = MSPACK_ERR_READ; -+ } -+ else { -+ read = 2; -+ p->inbuf[0] = p->inbuf[1] = 0; -+ p->input_end = 1; -+ } -+ } -+ -+ /* update i_ptr and i_end */ -+ p->i_ptr = &p->inbuf[0]; -+ p->i_end = &p->inbuf[read]; -+ return MSPACK_ERR_OK; -+} -+#endif -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/readhuff.h b/libclamav/libmspack-0.4alpha/mspack/readhuff.h -new file mode 100644 -index 000000000000..bb15c0a12362 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/readhuff.h -@@ -0,0 +1,173 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2010 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_READHUFF_H -+#define MSPACK_READHUFF_H 1 -+ -+/* This implements a fast Huffman tree decoding system. -+ */ -+ -+#if !(defined(BITS_ORDER_MSB) || defined(BITS_ORDER_LSB)) -+# error "readhuff.h is used in conjunction with readbits.h, include that first" -+#endif -+#if !(defined(TABLEBITS) && defined(MAXSYMBOLS)) -+# error "define TABLEBITS(tbl) and MAXSYMBOLS(tbl) before using readhuff.h" -+#endif -+#if !(defined(HUFF_TABLE) && defined(HUFF_LEN)) -+# error "define HUFF_TABLE(tbl) and HUFF_LEN(tbl) before using readhuff.h" -+#endif -+#ifndef HUFF_ERROR -+# error "define HUFF_ERROR before using readhuff.h" -+#endif -+#ifndef HUFF_MAXBITS -+# define HUFF_MAXBITS 16 -+#endif -+ -+/* Decodes the next huffman symbol from the input bitstream into var. -+ * Do not use this macro on a table unless build_decode_table() succeeded. -+ */ -+#define READ_HUFFSYM(tbl, var) do { \ -+ ENSURE_BITS(HUFF_MAXBITS); \ -+ sym = HUFF_TABLE(tbl, PEEK_BITS(TABLEBITS(tbl))); \ -+ if (sym >= MAXSYMBOLS(tbl)) HUFF_TRAVERSE(tbl); \ -+ (var) = sym; \ -+ i = HUFF_LEN(tbl, sym); \ -+ REMOVE_BITS(i); \ -+} while (0) -+ -+#ifdef BITS_ORDER_LSB -+# define HUFF_TRAVERSE(tbl) do { \ -+ i = TABLEBITS(tbl) - 1; \ -+ do { \ -+ if (i++ > HUFF_MAXBITS) HUFF_ERROR; \ -+ sym = HUFF_TABLE(tbl, \ -+ (sym << 1) | ((bit_buffer >> i) & 1)); \ -+ } while (sym >= MAXSYMBOLS(tbl)); \ -+} while (0) -+#else -+#define HUFF_TRAVERSE(tbl) do { \ -+ i = 1 << (BITBUF_WIDTH - TABLEBITS(tbl)); \ -+ do { \ -+ if ((i >>= 1) == 0) HUFF_ERROR; \ -+ sym = HUFF_TABLE(tbl, \ -+ (sym << 1) | ((bit_buffer & i) ? 1 : 0)); \ -+ } while (sym >= MAXSYMBOLS(tbl)); \ -+} while (0) -+#endif -+ -+/* make_decode_table(nsyms, nbits, length[], table[]) -+ * -+ * This function was originally coded by David Tritscher. -+ * It builds a fast huffman decoding table from -+ * a canonical huffman code lengths table. -+ * -+ * nsyms = total number of symbols in this huffman tree. -+ * nbits = any symbols with a code length of nbits or less can be decoded -+ * in one lookup of the table. -+ * length = A table to get code lengths from [0 to nsyms-1] -+ * table = The table to fill up with decoded symbols and pointers. -+ * Should be ((1<> 1; /* don't do 0 length codes */ -+ -+ /* fill entries for codes short enough for a direct mapping */ -+ for (bit_num = 1; bit_num <= nbits; bit_num++) { -+ for (sym = 0; sym < nsyms; sym++) { -+ if (length[sym] != bit_num) continue; -+#ifdef BITS_ORDER_MSB -+ leaf = pos; -+#else -+ /* reverse the significant bits */ -+ fill = length[sym]; reverse = pos >> (nbits - fill); leaf = 0; -+ do {leaf <<= 1; leaf |= reverse & 1; reverse >>= 1;} while (--fill); -+#endif -+ -+ if((pos += bit_mask) > table_mask) return 1; /* table overrun */ -+ -+ /* fill all possible lookups of this symbol with the symbol itself */ -+#ifdef BITS_ORDER_MSB -+ for (fill = bit_mask; fill-- > 0;) table[leaf++] = sym; -+#else -+ fill = bit_mask; next_symbol = 1 << bit_num; -+ do { table[leaf] = sym; leaf += next_symbol; } while (--fill); -+#endif -+ } -+ bit_mask >>= 1; -+ } -+ -+ /* exit with success if table is now complete */ -+ if (pos == table_mask) return 0; -+ -+ /* mark all remaining table entries as unused */ -+ for (sym = pos; sym < table_mask; sym++) { -+#ifdef BITS_ORDER_MSB -+ table[sym] = 0xFFFF; -+#else -+ reverse = sym; leaf = 0; fill = nbits; -+ do { leaf <<= 1; leaf |= reverse & 1; reverse >>= 1; } while (--fill); -+ table[leaf] = 0xFFFF; -+#endif -+ } -+ -+ /* next_symbol = base of allocation for long codes */ -+ next_symbol = ((table_mask >> 1) < nsyms) ? nsyms : (table_mask >> 1); -+ -+ /* give ourselves room for codes to grow by up to 16 more bits. -+ * codes now start at bit nbits+16 and end at (nbits+16-codelength) */ -+ pos <<= 16; -+ table_mask <<= 16; -+ bit_mask = 1 << 15; -+ -+ for (bit_num = nbits+1; bit_num <= HUFF_MAXBITS; bit_num++) { -+ for (sym = 0; sym < nsyms; sym++) { -+ if (length[sym] != bit_num) continue; -+ -+#ifdef BITS_ORDER_MSB -+ leaf = pos >> 16; -+#else -+ /* leaf = the first nbits of the code, reversed */ -+ reverse = pos >> 16; leaf = 0; fill = nbits; -+ do {leaf <<= 1; leaf |= reverse & 1; reverse >>= 1;} while (--fill); -+#endif -+ for (fill = 0; fill < (bit_num - nbits); fill++) { -+ /* if this path hasn't been taken yet, 'allocate' two entries */ -+ if (table[leaf] == 0xFFFF) { -+ table[(next_symbol << 1) ] = 0xFFFF; -+ table[(next_symbol << 1) + 1 ] = 0xFFFF; -+ table[leaf] = next_symbol++; -+ } -+ -+ /* follow the path and select either left or right for next bit */ -+ leaf = table[leaf] << 1; -+ if ((pos >> (15-fill)) & 1) leaf++; -+ } -+ table[leaf] = sym; -+ -+ if ((pos += bit_mask) > table_mask) return 1; /* table overflow */ -+ } -+ bit_mask >>= 1; -+ } -+ -+ /* full table? */ -+ return (pos == table_mask) ? 0 : 1; -+} -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/sha.h b/libclamav/libmspack-0.4alpha/mspack/sha.h -new file mode 100644 -index 000000000000..360521519beb ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/sha.h -@@ -0,0 +1,15 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_LZSS_H -+#define MSPACK_LZSS_H 1 -+ -+/* SHA-1 message digest definitions */ -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/system.c b/libclamav/libmspack-0.4alpha/mspack/system.c -new file mode 100644 -index 000000000000..978a4d7e2357 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/system.c -@@ -0,0 +1,239 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifdef HAVE_CONFIG_H -+# include -+#endif -+ -+#include -+ -+#ifndef LARGEFILE_SUPPORT -+const char *largefile_msg = "library not compiled to support large files."; -+#endif -+ -+ -+int mspack_version(int entity) { -+ switch (entity) { -+ /* CHM decoder version 1 -> 2 changes: -+ * - added mschmd_sec_mscompressed::spaninfo -+ * - added mschmd_header::first_pmgl -+ * - added mschmd_header::last_pmgl -+ * - added mschmd_header::chunk_cache; -+ */ -+ case MSPACK_VER_MSCHMD: -+ return 2; -+ case MSPACK_VER_LIBRARY: -+ case MSPACK_VER_SYSTEM: -+ case MSPACK_VER_MSCABD: -+ case MSPACK_VER_MSSZDDD: -+ case MSPACK_VER_MSKWAJD: -+ case MSPACK_VER_MSOABD: -+ return 1; -+ case MSPACK_VER_MSCABC: -+ case MSPACK_VER_MSCHMC: -+ case MSPACK_VER_MSLITD: -+ case MSPACK_VER_MSLITC: -+ case MSPACK_VER_MSHLPD: -+ case MSPACK_VER_MSHLPC: -+ case MSPACK_VER_MSSZDDC: -+ case MSPACK_VER_MSKWAJC: -+ case MSPACK_VER_MSOABC: -+ return 0; -+ } -+ return -1; -+} -+ -+int mspack_sys_selftest_internal(int offt_size) { -+ return (sizeof(off_t) == offt_size) ? MSPACK_ERR_OK : MSPACK_ERR_SEEK; -+} -+ -+/* validates a system structure */ -+int mspack_valid_system(struct mspack_system *sys) { -+ return (sys != NULL) && (sys->open != NULL) && (sys->close != NULL) && -+ (sys->read != NULL) && (sys->write != NULL) && (sys->seek != NULL) && -+ (sys->tell != NULL) && (sys->message != NULL) && (sys->alloc != NULL) && -+ (sys->free != NULL) && (sys->copy != NULL) && (sys->null_ptr == NULL); -+} -+ -+/* returns the length of a file opened for reading */ -+int mspack_sys_filelen(struct mspack_system *system, -+ struct mspack_file *file, off_t *length) -+{ -+ off_t current; -+ -+ if (!system || !file || !length) return MSPACK_ERR_OPEN; -+ -+ /* get current offset */ -+ current = system->tell(file); -+ -+ /* seek to end of file */ -+ if (system->seek(file, (off_t) 0, MSPACK_SYS_SEEK_END)) { -+ return MSPACK_ERR_SEEK; -+ } -+ -+ /* get offset of end of file */ -+ *length = system->tell(file); -+ -+ /* seek back to original offset */ -+ if (system->seek(file, current, MSPACK_SYS_SEEK_START)) { -+ return MSPACK_ERR_SEEK; -+ } -+ -+ return MSPACK_ERR_OK; -+} -+ -+ -+ -+/* definition of mspack_default_system -- if the library is compiled with -+ * MSPACK_NO_DEFAULT_SYSTEM, no default system will be provided. Otherwise, -+ * an appropriate default system (e.g. the standard C library, or some native -+ * API calls) -+ */ -+ -+#ifdef MSPACK_NO_DEFAULT_SYSTEM -+struct mspack_system *mspack_default_system = NULL; -+#else -+ -+/* implementation of mspack_default_system for standard C library */ -+ -+#include -+#include -+#include -+#include -+ -+struct mspack_file_p { -+ FILE *fh; -+ const char *name; -+}; -+ -+static struct mspack_file *msp_open(struct mspack_system *self, -+ const char *filename, int mode) -+{ -+ struct mspack_file_p *fh; -+ const char *fmode; -+ -+ switch (mode) { -+ case MSPACK_SYS_OPEN_READ: fmode = "rb"; break; -+ case MSPACK_SYS_OPEN_WRITE: fmode = "wb"; break; -+ case MSPACK_SYS_OPEN_UPDATE: fmode = "r+b"; break; -+ case MSPACK_SYS_OPEN_APPEND: fmode = "ab"; break; -+ default: return NULL; -+ } -+ -+ if ((fh = (struct mspack_file_p *) malloc(sizeof(struct mspack_file_p)))) { -+ fh->name = filename; -+ if ((fh->fh = fopen(filename, fmode))) return (struct mspack_file *) fh; -+ free(fh); -+ } -+ return NULL; -+} -+ -+static void msp_close(struct mspack_file *file) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+ if (self) { -+ fclose(self->fh); -+ free(self); -+ } -+} -+ -+static int msp_read(struct mspack_file *file, void *buffer, int bytes) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+ if (self && buffer && bytes >= 0) { -+ size_t count = fread(buffer, 1, (size_t) bytes, self->fh); -+ if (!ferror(self->fh)) return (int) count; -+ } -+ return -1; -+} -+ -+static int msp_write(struct mspack_file *file, void *buffer, int bytes) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+ if (self && buffer && bytes >= 0) { -+ size_t count = fwrite(buffer, 1, (size_t) bytes, self->fh); -+ if (!ferror(self->fh)) return (int) count; -+ } -+ return -1; -+} -+ -+static int msp_seek(struct mspack_file *file, off_t offset, int mode) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+ if (self) { -+ switch (mode) { -+ case MSPACK_SYS_SEEK_START: mode = SEEK_SET; break; -+ case MSPACK_SYS_SEEK_CUR: mode = SEEK_CUR; break; -+ case MSPACK_SYS_SEEK_END: mode = SEEK_END; break; -+ default: return -1; -+ } -+#ifdef HAVE_FSEEKO -+ return fseeko(self->fh, offset, mode); -+#else -+ return fseek(self->fh, offset, mode); -+#endif -+ } -+ return -1; -+} -+ -+static off_t msp_tell(struct mspack_file *file) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+#ifdef HAVE_FSEEKO -+ return (self) ? (off_t) ftello(self->fh) : 0; -+#else -+ return (self) ? (off_t) ftell(self->fh) : 0; -+#endif -+} -+ -+static void msp_msg(struct mspack_file *file, const char *format, ...) { -+ va_list ap; -+ if (file) fprintf(stderr, "%s: ", ((struct mspack_file_p *) file)->name); -+ va_start(ap, format); -+ vfprintf(stderr, format, ap); -+ va_end(ap); -+ fputc((int) '\n', stderr); -+ fflush(stderr); -+} -+ -+static void *msp_alloc(struct mspack_system *self, size_t bytes) { -+#ifdef DEBUG -+ /* make uninitialised data obvious */ -+ char *buf = malloc(bytes + 8); -+ if (buf) memset(buf, 0xDC, bytes); -+ *((size_t *)buf) = bytes; -+ return &buf[8]; -+#else -+ return malloc(bytes); -+#endif -+} -+ -+static void msp_free(void *buffer) { -+#ifdef DEBUG -+ char *buf = buffer; -+ size_t bytes; -+ if (buf) { -+ buf -= 8; -+ bytes = *((size_t *)buf); -+ /* make freed data obvious */ -+ memset(buf, 0xED, bytes); -+ free(buf); -+ } -+#else -+ free(buffer); -+#endif -+} -+ -+static void msp_copy(void *src, void *dest, size_t bytes) { -+ memcpy(dest, src, bytes); -+} -+ -+static struct mspack_system msp_system = { -+ &msp_open, &msp_close, &msp_read, &msp_write, &msp_seek, -+ &msp_tell, &msp_msg, &msp_alloc, &msp_free, &msp_copy, NULL -+}; -+ -+struct mspack_system *mspack_default_system = &msp_system; -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/system.h b/libclamav/libmspack-0.4alpha/mspack/system.h -new file mode 100644 -index 000000000000..4a400850aa52 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/system.h -@@ -0,0 +1,124 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_SYSTEM_H -+#define MSPACK_SYSTEM_H 1 -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* ensure config.h is read before mspack.h */ -+#ifdef HAVE_CONFIG_H -+# include -+#endif -+ -+#include -+ -+/* fix for problem with GCC 4 and glibc (thanks to Ville Skytta) -+ * http://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=150429 -+ */ -+#ifdef read -+# undef read -+#endif -+ -+#ifdef DEBUG -+# include -+/* Old GCCs don't have __func__, but __FUNCTION__: -+ * http://gcc.gnu.org/onlinedocs/gcc/Function-Names.html -+ */ -+# if __STDC_VERSION__ < 199901L -+# if __GNUC__ >= 2 -+# define __func__ __FUNCTION__ -+# else -+# define __func__ "" -+# endif -+# endif -+# define D(x) do { printf("%s:%d (%s) ",__FILE__, __LINE__, __func__); \ -+ printf x ; fputc('\n', stdout); fflush(stdout);} while (0); -+#else -+# define D(x) -+#endif -+ -+/* CAB supports searching through files over 4GB in size, and the CHM file -+ * format actively uses 64-bit offsets. These can only be fully supported -+ * if the system the code runs on supports large files. If not, the library -+ * will work as normal using only 32-bit arithmetic, but if an offset -+ * greater than 2GB is detected, an error message indicating the library -+ * can't support the file should be printed. -+ */ -+#ifdef HAVE_LIMITS_H -+# include -+#endif -+ -+#if ((defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS >= 64) || \ -+ (defined(FILESIZEBITS) && FILESIZEBITS >= 64) || \ -+ (defined(SIZEOF_OFF_T) && SIZEOF_OFF_T >= 8) || \ -+ defined(_LARGEFILE_SOURCE) || defined(_LARGEFILE64_SOURCE)) -+# define LARGEFILE_SUPPORT -+# define LD "lld" -+# define LU "llu" -+#else -+extern const char *largefile_msg; -+# define LD "ld" -+# define LU "lu" -+#endif -+ -+/* endian-neutral reading of little-endian data */ -+#define __egi32(a,n) ( ((((unsigned char *) a)[n+3]) << 24) | \ -+ ((((unsigned char *) a)[n+2]) << 16) | \ -+ ((((unsigned char *) a)[n+1]) << 8) | \ -+ ((((unsigned char *) a)[n+0]))) -+#define EndGetI64(a) ((((unsigned long long int) __egi32(a,4)) << 32) | \ -+ ((unsigned int) __egi32(a,0))) -+#define EndGetI32(a) __egi32(a,0) -+#define EndGetI16(a) ((((a)[1])<<8)|((a)[0])) -+ -+/* endian-neutral reading of big-endian data */ -+#define EndGetM32(a) (((((unsigned char *) a)[0]) << 24) | \ -+ ((((unsigned char *) a)[1]) << 16) | \ -+ ((((unsigned char *) a)[2]) << 8) | \ -+ ((((unsigned char *) a)[3]))) -+#define EndGetM16(a) ((((a)[0])<<8)|((a)[1])) -+ -+extern struct mspack_system *mspack_default_system; -+ -+/* returns the length of a file opened for reading */ -+extern int mspack_sys_filelen(struct mspack_system *system, -+ struct mspack_file *file, off_t *length); -+ -+/* validates a system structure */ -+extern int mspack_valid_system(struct mspack_system *sys); -+ -+#if HAVE_STRINGS_H -+# include -+#endif -+ -+#if HAVE_STRING_H -+# include -+#endif -+ -+#if HAVE_MEMCMP -+# define mspack_memcmp memcmp -+#else -+/* inline memcmp() */ -+static inline int mspack_memcmp(const void *s1, const void *s2, size_t n) { -+ unsigned char *c1 = (unsigned char *) s1; -+ unsigned char *c2 = (unsigned char *) s2; -+ if (n == 0) return 0; -+ while (--n && (*c1 == *c2)) c1++, c2++; -+ return *c1 - *c2; -+} -+#endif -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/szdd.h b/libclamav/libmspack-0.4alpha/mspack/szdd.h -new file mode 100644 -index 000000000000..e07c6b7c8edd ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/szdd.h -@@ -0,0 +1,39 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+#ifndef MSPACK_SZDD_H -+#define MSPACK_SZDD_H 1 -+ -+#include -+ -+/* input buffer size during decompression - not worth parameterising IMHO */ -+#define SZDD_INPUT_SIZE (2048) -+ -+/* SZDD compression definitions */ -+ -+struct msszdd_compressor_p { -+ struct msszdd_compressor base; -+ struct mspack_system *system; -+ int error; -+}; -+ -+/* SZDD decompression definitions */ -+ -+struct msszdd_decompressor_p { -+ struct msszdd_decompressor base; -+ struct mspack_system *system; -+ int error; -+}; -+ -+struct msszddd_header_p { -+ struct msszddd_header base; -+ struct mspack_file *fh; -+}; -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/mspack/szddc.c b/libclamav/libmspack-0.4alpha/mspack/szddc.c -new file mode 100644 -index 000000000000..cdd39a630532 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/szddc.c -@@ -0,0 +1,24 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2004 Stuart Caie. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* SZDD compression implementation */ -+ -+#include -+#include -+ -+struct msszdd_compressor * -+ mspack_create_szdd_compressor(struct mspack_system *sys) -+{ -+ /* todo */ -+ return NULL; -+} -+ -+void mspack_destroy_szdd_compressor(struct msszdd_compressor *self) { -+ /* todo */ -+} -diff --git a/libclamav/libmspack-0.4alpha/mspack/szddd.c b/libclamav/libmspack-0.4alpha/mspack/szddd.c -new file mode 100644 -index 000000000000..99c5aa465852 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/mspack/szddd.c -@@ -0,0 +1,247 @@ -+/* This file is part of libmspack. -+ * (C) 2003-2010 Stuart Caie. -+ * -+ * SZDD is a format used in the MS-DOS commands COMPRESS.EXE and -+ * EXPAND.EXE. The compression method is attributed to Steven Zeck, -+ * however it's pretty much identical to LZSS. -+ * -+ * libmspack is free software; you can redistribute it and/or modify it under -+ * the terms of the GNU Lesser General Public License (LGPL) version 2.1 -+ * -+ * For further details, see the file COPYING.LIB distributed with libmspack -+ */ -+ -+/* SZDD decompression implementation */ -+ -+#include -+#include -+ -+/* prototypes */ -+static struct msszddd_header *szddd_open( -+ struct msszdd_decompressor *base, const char *filename); -+static void szddd_close( -+ struct msszdd_decompressor *base, struct msszddd_header *hdr); -+static int szddd_read_headers( -+ struct mspack_system *sys, struct mspack_file *fh, -+ struct msszddd_header *hdr); -+static int szddd_extract( -+ struct msszdd_decompressor *base, struct msszddd_header *hdr, -+ const char *filename); -+static int szddd_decompress( -+ struct msszdd_decompressor *base, const char *input, const char *output); -+static int szddd_error( -+ struct msszdd_decompressor *base); -+ -+/*************************************** -+ * MSPACK_CREATE_SZDD_DECOMPRESSOR -+ *************************************** -+ * constructor -+ */ -+struct msszdd_decompressor * -+ mspack_create_szdd_decompressor(struct mspack_system *sys) -+{ -+ struct msszdd_decompressor_p *self = NULL; -+ -+ if (!sys) sys = mspack_default_system; -+ if (!mspack_valid_system(sys)) return NULL; -+ -+ if ((self = (struct msszdd_decompressor_p *) sys->alloc(sys, sizeof(struct msszdd_decompressor_p)))) { -+ self->base.open = &szddd_open; -+ self->base.close = &szddd_close; -+ self->base.extract = &szddd_extract; -+ self->base.decompress = &szddd_decompress; -+ self->base.last_error = &szddd_error; -+ self->system = sys; -+ self->error = MSPACK_ERR_OK; -+ } -+ return (struct msszdd_decompressor *) self; -+} -+ -+/*************************************** -+ * MSPACK_DESTROY_SZDD_DECOMPRESSOR -+ *************************************** -+ * destructor -+ */ -+void mspack_destroy_szdd_decompressor(struct msszdd_decompressor *base) -+{ -+ struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; -+ if (self) { -+ struct mspack_system *sys = self->system; -+ sys->free(self); -+ } -+} -+ -+/*************************************** -+ * SZDDD_OPEN -+ *************************************** -+ * opens an SZDD file without decompressing, reads header -+ */ -+static struct msszddd_header *szddd_open(struct msszdd_decompressor *base, -+ const char *filename) -+{ -+ struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; -+ struct msszddd_header *hdr; -+ struct mspack_system *sys; -+ struct mspack_file *fh; -+ -+ if (!self) return NULL; -+ sys = self->system; -+ -+ fh = sys->open(sys, filename, MSPACK_SYS_OPEN_READ); -+ hdr = (struct msszddd_header *) sys->alloc(sys, sizeof(struct msszddd_header_p)); -+ if (fh && hdr) { -+ ((struct msszddd_header_p *) hdr)->fh = fh; -+ self->error = szddd_read_headers(sys, fh, hdr); -+ } -+ else { -+ if (!fh) self->error = MSPACK_ERR_OPEN; -+ if (!hdr) self->error = MSPACK_ERR_NOMEMORY; -+ } -+ -+ if (self->error) { -+ if (fh) sys->close(fh); -+ if (hdr) sys->free(hdr); -+ hdr = NULL; -+ } -+ -+ return hdr; -+} -+ -+/*************************************** -+ * SZDDD_CLOSE -+ *************************************** -+ * closes an SZDD file -+ */ -+static void szddd_close(struct msszdd_decompressor *base, -+ struct msszddd_header *hdr) -+{ -+ struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; -+ struct msszddd_header_p *hdr_p = (struct msszddd_header_p *) hdr; -+ -+ if (!self || !self->system) return; -+ -+ /* close the file handle associated */ -+ self->system->close(hdr_p->fh); -+ -+ /* free the memory associated */ -+ self->system->free(hdr); -+ -+ self->error = MSPACK_ERR_OK; -+} -+ -+/*************************************** -+ * SZDDD_READ_HEADERS -+ *************************************** -+ * reads the headers of an SZDD format file -+ */ -+static unsigned char szdd_signature_expand[8] = { -+ 0x53, 0x5A, 0x44, 0x44, 0x88, 0xF0, 0x27, 0x33 -+}; -+static unsigned char szdd_signature_qbasic[8] = { -+ 0x53, 0x5A, 0x20, 0x88, 0xF0, 0x27, 0x33, 0xD1 -+}; -+ -+static int szddd_read_headers(struct mspack_system *sys, -+ struct mspack_file *fh, -+ struct msszddd_header *hdr) -+{ -+ unsigned char buf[8]; -+ -+ /* read and check signature */ -+ if (sys->read(fh, buf, 8) != 8) return MSPACK_ERR_READ; -+ -+ if ((mspack_memcmp(buf, szdd_signature_expand, 8) == 0)) { -+ /* common SZDD */ -+ hdr->format = MSSZDD_FMT_NORMAL; -+ -+ /* read the rest of the header */ -+ if (sys->read(fh, buf, 6) != 6) return MSPACK_ERR_READ; -+ if (buf[0] != 0x41) return MSPACK_ERR_DATAFORMAT; -+ hdr->missing_char = buf[1]; -+ hdr->length = EndGetI32(&buf[2]); -+ } -+ else if ((mspack_memcmp(buf, szdd_signature_qbasic, 8) == 0)) { -+ /* special QBasic SZDD */ -+ hdr->format = MSSZDD_FMT_QBASIC; -+ if (sys->read(fh, buf, 4) != 4) return MSPACK_ERR_READ; -+ hdr->missing_char = '\0'; -+ hdr->length = EndGetI32(buf); -+ } -+ else { -+ return MSPACK_ERR_SIGNATURE; -+ } -+ return MSPACK_ERR_OK; -+} -+ -+/*************************************** -+ * SZDDD_EXTRACT -+ *************************************** -+ * decompresses an SZDD file -+ */ -+static int szddd_extract(struct msszdd_decompressor *base, -+ struct msszddd_header *hdr, const char *filename) -+{ -+ struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; -+ struct mspack_file *fh, *outfh; -+ struct mspack_system *sys; -+ off_t data_offset; -+ -+ if (!self) return MSPACK_ERR_ARGS; -+ if (!hdr) return self->error = MSPACK_ERR_ARGS; -+ sys = self->system; -+ -+ fh = ((struct msszddd_header_p *) hdr)->fh; -+ -+ /* seek to the compressed data */ -+ data_offset = (hdr->format == MSSZDD_FMT_NORMAL) ? 14 : 12; -+ if (sys->seek(fh, data_offset, MSPACK_SYS_SEEK_START)) { -+ return self->error = MSPACK_ERR_SEEK; -+ } -+ -+ /* open file for output */ -+ if (!(outfh = sys->open(sys, filename, MSPACK_SYS_OPEN_WRITE))) { -+ return self->error = MSPACK_ERR_OPEN; -+ } -+ -+ /* decompress the data */ -+ self->error = lzss_decompress(sys, fh, outfh, SZDD_INPUT_SIZE, -+ hdr->format == MSSZDD_FMT_NORMAL -+ ? LZSS_MODE_EXPAND -+ : LZSS_MODE_QBASIC); -+ -+ /* close output file */ -+ sys->close(outfh); -+ -+ return self->error; -+} -+ -+/*************************************** -+ * SZDDD_DECOMPRESS -+ *************************************** -+ * unpacks directly from input to output -+ */ -+static int szddd_decompress(struct msszdd_decompressor *base, -+ const char *input, const char *output) -+{ -+ struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; -+ struct msszddd_header *hdr; -+ int error; -+ -+ if (!self) return MSPACK_ERR_ARGS; -+ -+ if (!(hdr = szddd_open(base, input))) return self->error; -+ error = szddd_extract(base, hdr, output); -+ szddd_close(base, hdr); -+ return self->error = error; -+} -+ -+/*************************************** -+ * SZDDD_ERROR -+ *************************************** -+ * returns the last error that occurred -+ */ -+static int szddd_error(struct msszdd_decompressor *base) -+{ -+ struct msszdd_decompressor_p *self = (struct msszdd_decompressor_p *) base; -+ return (self) ? self->error : MSPACK_ERR_ARGS; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/cabd_md5.c b/libclamav/libmspack-0.4alpha/test/cabd_md5.c -new file mode 100644 -index 000000000000..6a00dbda3f0d ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/cabd_md5.c -@@ -0,0 +1,161 @@ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+/** -+ * Matches a cabinet's filename case-insensitively in the filesystem and -+ * returns the case-correct form. -+ * -+ * @param origcab if this is non-NULL, the pathname part of this filename -+ * will be extracted, and the search will be conducted in -+ * that directory. -+ * @param cabname the internal CAB filename to search for. -+ * @return a copy of the full, case-correct filename of the given cabinet -+ * filename, or NULL if the specified filename does not exist on disk. -+ */ -+static char *find_cabinet_file(char *origcab, char *cabname) { -+ struct dirent *entry; -+ struct stat st_buf; -+ int found = 0, len; -+ char *tail, *cab; -+ DIR *dir; -+ -+ /* ensure we have a cabinet name at all */ -+ if (!cabname || !cabname[0]) return NULL; -+ -+ /* find if there's a directory path in the origcab */ -+ tail = origcab ? strrchr(origcab, '/') : NULL; -+ len = (tail - origcab) + 1; -+ -+ /* allocate memory for our copy */ -+ if (!(cab = (char *) malloc((tail ? len : 2) + strlen(cabname) + 1))) return NULL; -+ -+ /* add the directory path from the original cabinet name, or "." */ -+ if (tail) memcpy(cab, origcab, (size_t) len); -+ else cab[0]='.', cab[1]='/', len=2; -+ cab[len] = '\0'; -+ -+ /* try accessing the cabinet with its current name (case-sensitive) */ -+ strcpy(&cab[len], cabname); -+ if (stat(cab, &st_buf) == 0) { -+ found = 1; -+ } -+ else { -+ /* cabinet was not found, look for it in the current dir */ -+ cab[len] = '\0'; -+ if ((dir = opendir(cab))) { -+ while ((entry = readdir(dir))) { -+ if (strcasecmp(cabname, entry->d_name) == 0) { -+ strcat(cab, entry->d_name); -+ found = (stat(cab, &st_buf) == 0); -+ break; -+ } -+ } -+ closedir(dir); -+ } -+ } -+ -+ if (!found || !S_ISREG(st_buf.st_mode)) { -+ /* cabinet not found, or not a regular file */ -+ free(cab); -+ cab = NULL; -+ } -+ -+ return cab; -+} -+ -+ -+int main(int argc, char *argv[]) { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab, *c, *c2; -+ struct mscabd_file *file; -+ char *cabname, *newname; -+ int err; -+ -+ setbuf(stdout, NULL); -+ setbuf(stderr, NULL); -+ -+ /* if self-test reveals an error */ -+ MSPACK_SYS_SELFTEST(err); -+ if (err) return 1; -+ -+ if (!(cabd = mspack_create_cab_decompressor(&read_files_write_md5))) { -+ fprintf(stderr, "can't make decompressor\n"); -+ return 1; -+ } -+ -+ for (argv++; (cabname = *argv); argv++) { -+ printf("*** %s\n", cabname); -+ -+ if (!(cab = cabd->open(cabd, cabname))) { -+ fprintf(stderr, "cab open error: %s\n", ERROR(cabd)); -+ continue; -+ } -+ -+ /* prepend any spanning cabinets */ -+ for (c = cab; c && (c->flags & MSCAB_HDR_PREVCAB); c = c->prevcab) { -+ if (!(newname = find_cabinet_file(cabname, c->prevname))) { -+ fprintf(stderr, "%s: can't find \"%s\" to prepend\n", -+ cabname, c->prevname); -+ break; -+ } -+ if (!(c2 = cabd->open(cabd, newname))) { -+ fprintf(stderr, "%s: error opening \"%s\" for prepend: %s\n", -+ cabname, newname, ERROR(cabd)); -+ break; -+ } -+ if (cabd->prepend(cabd, c, c2) != MSPACK_ERR_OK) { -+ fprintf(stderr, "%s: error prepending \"%s\": %s\n", -+ cabname, newname, ERROR(cabd)); -+ break; -+ } -+ } -+ -+ /* append any spanning cabinets */ -+ for (c = cab; c && (c->flags & MSCAB_HDR_NEXTCAB); c = c->nextcab) { -+ if (!(newname = find_cabinet_file(cabname, c->nextname))) { -+ fprintf(stderr, "%s: can't find \"%s\" to append\n", -+ cabname, c->nextname); -+ break; -+ } -+ if (!(c2 = cabd->open(cabd, newname))) { -+ fprintf(stderr, "%s: error opening \"%s\" for append: %s\n", -+ cabname, newname, ERROR(cabd)); -+ break; -+ } -+ if (cabd->append(cabd, c, c2) != MSPACK_ERR_OK) { -+ fprintf(stderr, "%s: error appending \"%s\": %s\n", -+ cabname, newname, ERROR(cabd)); -+ break; -+ } -+ } -+ -+ /* extract files */ -+ for (file = cab->files; file; file = file->next ) { -+ if (cabd->extract(cabd, file, NULL) == MSPACK_ERR_OK) { -+ printf("%s %s\n", md5_string, file->filename); -+ } -+ else { -+ fprintf(stderr, "%s: error extracting \"%s\": %s\n", -+ cabname, file->filename, ERROR(cabd)); -+ } -+ } -+ -+ /* free all resources */ -+ for (c2 = cab->prevcab; c2; c2 = c2->prevcab) free((void*)c2->filename); -+ for (c2 = cab->nextcab; c2; c2 = c2->nextcab) free((void*)c2->filename); -+ cabd->close(cabd, cab); -+ } -+ mspack_destroy_cab_decompressor(cabd); -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/cabd_memory.c b/libclamav/libmspack-0.4alpha/test/cabd_memory.c -new file mode 100644 -index 000000000000..f7a78972c8e4 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/cabd_memory.c -@@ -0,0 +1,179 @@ -+/* An implementation of the mspack_system interface using only memory */ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+ -+/* use a pointer to a mem_buf structure as "filenames" */ -+struct mem_buf { -+ void *data; -+ size_t length; -+}; -+ -+struct mem_file { -+ char *data; -+ size_t length, posn; -+}; -+ -+static void *mem_alloc(struct mspack_system *self, size_t bytes) { -+ /* put your memory allocator here */ -+ return malloc(bytes); -+} -+ -+static void mem_free(void *buffer) { -+ /* put your memory deallocator here */ -+ free(buffer); -+} -+ -+static void mem_copy(void *src, void *dest, size_t bytes) { -+ /* put your own memory copy routine here */ -+ memcpy(dest, src, bytes); -+} -+ -+static void mem_msg(struct mem_file *file, const char *format, ...) { -+ /* put your own printf-type routine here, or leave it empty */ -+} -+ -+static struct mem_file *mem_open(struct mspack_system *self, -+ struct mem_buf *fn, int mode) -+{ -+ struct mem_file *fh; -+ if (!fn || !fn->data || !fn->length) return NULL; -+ if ((fh = (struct mem_file *) mem_alloc(self, sizeof(struct mem_file)))) { -+ fh->data = (char *) fn->data; -+ fh->length = fn->length; -+ fh->posn = (mode == MSPACK_SYS_OPEN_APPEND) ? fn->length : 0; -+ } -+ return fh; -+} -+ -+static void mem_close(struct mem_file *fh) { -+ if (fh) mem_free(fh); -+} -+ -+static int mem_read(struct mem_file *fh, void *buffer, int bytes) { -+ int todo; -+ if (!fh || !buffer || bytes < 0) return -1; -+ todo = fh->length - fh->posn; -+ if (todo > bytes) todo = bytes; -+ if (todo > 0) mem_copy(&fh->data[fh->posn], buffer, (size_t) todo); -+ fh->posn += todo; return todo; -+} -+ -+static int mem_write(struct mem_file *fh, void *buffer, int bytes) { -+ int todo; -+ if (!fh || !buffer || bytes < 0) return -1; -+ todo = fh->length - fh->posn; -+ if (todo > bytes) todo = bytes; -+ if (todo > 0) mem_copy(buffer, &fh->data[fh->posn], (size_t) todo); -+ fh->posn += todo; return todo; -+} -+ -+static int mem_seek(struct mem_file *fh, off_t offset, int mode) { -+ if (!fh) return 1; -+ switch (mode) { -+ case MSPACK_SYS_SEEK_START: break; -+ case MSPACK_SYS_SEEK_CUR: offset += (off_t) fh->posn; break; -+ case MSPACK_SYS_SEEK_END: offset += (off_t) fh->length; break; -+ default: return 1; -+ } -+ if ((offset < 0) || (offset > (off_t) fh->length)) return 1; -+ fh->posn = (size_t) offset; -+ return 0; -+} -+ -+static off_t mem_tell(struct mem_file *fh) { -+ return (fh) ? (off_t) fh->posn : -1; -+} -+ -+static struct mspack_system mem_system = { -+ (struct mspack_file * (*)(struct mspack_system *, const char *, int)) &mem_open, -+ (void (*)(struct mspack_file *)) &mem_close, -+ (int (*)(struct mspack_file *, void *, int)) &mem_read, -+ (int (*)(struct mspack_file *, void *, int)) &mem_write, -+ (int (*)(struct mspack_file *, off_t, int)) &mem_seek, -+ (off_t (*)(struct mspack_file *)) &mem_tell, -+ (void (*)(struct mspack_file *, const char *, ...)) &mem_msg, -+ &mem_alloc, -+ &mem_free, -+ &mem_copy, -+ NULL -+}; -+ -+/* example of usage with mscab_decompressor */ -+ -+/* a simple cabinet */ -+static unsigned char embedded_cab[] = { -+ 0x4D,0x53,0x43,0x46,0x00,0x00,0x00,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x01,0x01,0x00,0x02,0x00, -+ 0x00,0x00,0x22,0x06,0x00,0x00,0x5E,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x4D, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x22,0xBA,0x59,0x20,0x00, -+ 0x68,0x65,0x6C,0x6C,0x6F,0x2E,0x63,0x00,0x4A,0x00,0x00,0x00,0x4D,0x00,0x00, -+ 0x00,0x00,0x00,0x6C,0x22,0xE7,0x59,0x20,0x00,0x77,0x65,0x6C,0x63,0x6F,0x6D, -+ 0x65,0x2E,0x63,0x00,0xBD,0x5A,0xA6,0x30,0x97,0x00,0x97,0x00,0x23,0x69,0x6E, -+ 0x63,0x6C,0x75,0x64,0x65,0x20,0x3C,0x73,0x74,0x64,0x69,0x6F,0x2E,0x68,0x3E, -+ 0x0D,0x0A,0x0D,0x0A,0x76,0x6F,0x69,0x64,0x20,0x6D,0x61,0x69,0x6E,0x28,0x76, -+ 0x6F,0x69,0x64,0x29,0x0D,0x0A,0x7B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x70,0x72, -+ 0x69,0x6E,0x74,0x66,0x28,0x22,0x48,0x65,0x6C,0x6C,0x6F,0x2C,0x20,0x77,0x6F, -+ 0x72,0x6C,0x64,0x21,0x5C,0x6E,0x22,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x23, -+ 0x69,0x6E,0x63,0x6C,0x75,0x64,0x65,0x20,0x3C,0x73,0x74,0x64,0x69,0x6F,0x2E, -+ 0x68,0x3E,0x0D,0x0A,0x0D,0x0A,0x76,0x6F,0x69,0x64,0x20,0x6D,0x61,0x69,0x6E, -+ 0x28,0x76,0x6F,0x69,0x64,0x29,0x0D,0x0A,0x7B,0x0D,0x0A,0x20,0x20,0x20,0x20, -+ 0x70,0x72,0x69,0x6E,0x74,0x66,0x28,0x22,0x57,0x65,0x6C,0x63,0x6F,0x6D,0x65, -+ 0x21,0x5C,0x6E,0x22,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A -+}; -+ -+int main() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ struct mscabd_file *file; -+ struct mem_buf source = { &embedded_cab[0], sizeof(embedded_cab) }; -+ struct mem_buf output; -+ int err; -+ -+ /* if self-test reveals an error */ -+ MSPACK_SYS_SELFTEST(err); -+ if (err) return 1; -+ -+ /* create a cab decompressor using our custom mspack_system interface */ -+ if ((cabd = mspack_create_cab_decompressor(&mem_system))) { -+ -+ /* open a cab file direct from memory */ -+ if ((cab = cabd->open(cabd, (char *) &source))) { -+ -+ /* for all files */ -+ for (file = cab->files; file; file = file->next) { -+ /* fill out our "filename" (memory pointer and length) */ -+ output.data = (char *) malloc(file->length); -+ output.length = file->length; -+ -+ /* let cabd extract this file to our memory buffer */ -+ if (output.data && cabd->extract(cabd, file, (char *) &output)) { -+ exit(1); -+ } -+ -+ /* dump the memory buffer to stdout (for display purposes) */ -+ printf("Filename: %s\nContents:\n", file->filename); -+ fwrite(output.data, 1, output.length, stdout); -+ -+ /* free our buffer */ -+ free(output.data); -+ } -+ cabd->close(cabd, cab); -+ } -+ else { -+ fprintf(stderr, "can't open cabinet (%d)\n", cabd->last_error(cabd)); -+ } -+ mspack_destroy_cab_decompressor(cabd); -+ } -+ else { -+ fprintf(stderr, "can't make decompressor\n"); -+ } -+ return 0; -+ -+} -diff --git a/libclamav/libmspack-0.4alpha/test/cabd_test.c b/libclamav/libmspack-0.4alpha/test/cabd_test.c -new file mode 100644 -index 000000000000..5e8851ce9f0e ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/cabd_test.c -@@ -0,0 +1,386 @@ -+/* cabinet decompression regression test suite */ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+ -+unsigned int test_count = 0; -+ -+#define TEST(x) do {\ -+ test_count++; \ -+ if (!(x)) {printf("%s:%d FAILED %s\n",__FUNCTION__,__LINE__,#x);exit(1);} \ -+} while (0) -+ -+/* open where cab file doesn't exist */ -+void cabd_open_test_01() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ cab = cabd->open(cabd, "!!!FILE_WHICH_DOES_NOT_EXIST"); -+ TEST(cab == NULL); -+ TEST(cabd->last_error(cabd) == MSPACK_ERR_OPEN); -+ -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+/* normal cab file with 2 files and one folder. -+ * check ALL headers are read correctly */ -+void cabd_open_test_02() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ struct mscabd_folder *folder; -+ struct mscabd_file *file; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ cab = cabd->open(cabd, "test_files/cabd/normal_2files_1folder.cab"); -+ TEST(cab != NULL); -+ -+ TEST(cab->next == NULL); -+ TEST(cab->base_offset == 0); -+ TEST(cab->length == 253); -+ TEST(cab->prevcab == NULL); TEST(cab->nextcab == NULL); -+ TEST(cab->prevname == NULL); TEST(cab->nextname == NULL); -+ TEST(cab->previnfo == NULL); TEST(cab->nextinfo == NULL); -+ TEST(cab->set_id = 1570); TEST(cab->set_index == 0); -+ TEST(cab->header_resv == 0); -+ TEST(cab->flags == 0); -+ -+ folder = cab->folders; -+ TEST(folder != NULL); -+ TEST(folder->next == NULL); -+ TEST(folder->comp_type == 0); -+ TEST(folder->num_blocks == 1); -+ -+ file = cab->files; -+ TEST(file != NULL); -+ TEST(strcmp(file->filename, "hello.c") == 0); -+ TEST(file->length == 77); -+ TEST(file->attribs == 0x20); -+ TEST(file->time_h == 11);TEST(file->time_m == 13);TEST(file->time_s == 52); -+ TEST(file->date_d == 12);TEST(file->date_m == 3);TEST(file->date_y == 1997); -+ TEST(file->folder == folder); TEST(file->offset == 0); -+ -+ file = file->next; -+ TEST(file != NULL); -+ TEST(strcmp(file->filename, "welcome.c") == 0); -+ TEST(file->length == 74); -+ TEST(file->attribs == 0x20); -+ TEST(file->time_h == 11);TEST(file->time_m == 15);TEST(file->time_s == 14); -+ TEST(file->date_d == 12);TEST(file->date_m == 3);TEST(file->date_y == 1997); -+ TEST(file->folder == folder); TEST(file->offset == 77); -+ -+ cabd->close(cabd, cab); -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+/* cabs with reserve headers set, ensure they all load correctly */ -+void cabd_open_test_03() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ unsigned int i; -+ const char *files[] = { -+ "test_files/cabd/reserve_---.cab", -+ "test_files/cabd/reserve_--D.cab", -+ "test_files/cabd/reserve_-F-.cab", -+ "test_files/cabd/reserve_-FD.cab", -+ "test_files/cabd/reserve_H--.cab", -+ "test_files/cabd/reserve_H-D.cab", -+ "test_files/cabd/reserve_HF-.cab", -+ "test_files/cabd/reserve_HFD.cab" -+ }; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ for (i = 0; i < (sizeof(files)/sizeof(char *)); i++) { -+ cab = cabd->open(cabd, files[i]); -+ TEST(cab != NULL); -+ TEST(cab->files != NULL); -+ TEST(cab->files->next != NULL); -+ TEST(strcmp(cab->files->filename, "test1.txt") == 0); -+ TEST(strcmp(cab->files->next->filename, "test2.txt") == 0); -+ cabd->close(cabd, cab); -+ } -+ -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+/* some bad cabs, should not load */ -+void cabd_open_test_04() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ /* cab has enough data for a header, but does not contain real cab data -+ * result should be MSPACK_ERR_SIGNATURE */ -+ cab = cabd->open(cabd, "test_files/cabd/bad_signature.cab"); -+ TEST(cab == NULL); -+ -+ /* cab has 0 folders */ -+ cab = cabd->open(cabd, "test_files/cabd/bad_nofolders.cab"); -+ TEST(cab == NULL); -+ -+ /* cab has 0 files */ -+ cab = cabd->open(cabd, "test_files/cabd/bad_nofiles.cab"); -+ TEST(cab == NULL); -+ -+ /* second file in the cab has a folder index for a non-existant folder */ -+ cab = cabd->open(cabd, "test_files/cabd/bad_folderindex.cab"); -+ TEST(cab == NULL); -+ -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+/* cabs which have been cut short -+ * result should be MSPACK_ERR_READ for missing headers or -+ * MSPACK_ERR_DATAFORMAT for missing/partial strings. -+ * If only data blocks are missing, the cab should open() -+ */ -+void cabd_open_test_05() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ unsigned int i; -+ const char *files[] = { -+ "test_files/cabd/partial_shortheader.cab", -+ "test_files/cabd/partial_shortextheader.cab", -+ "test_files/cabd/partial_nofolder.cab", -+ "test_files/cabd/partial_shortfolder.cab", -+ "test_files/cabd/partial_nofiles.cab", -+ "test_files/cabd/partial_shortfile1.cab", -+ "test_files/cabd/partial_shortfile2.cab" -+ }; -+ const char *str_files[] = { -+ "test_files/cabd/partial_str_nopname.cab", -+ "test_files/cabd/partial_str_shortpname.cab", -+ "test_files/cabd/partial_str_nopinfo.cab", -+ "test_files/cabd/partial_str_shortpinfo.cab", -+ "test_files/cabd/partial_str_nonname.cab", -+ "test_files/cabd/partial_str_shortnname.cab", -+ "test_files/cabd/partial_str_noninfo.cab", -+ "test_files/cabd/partial_str_shortninfo.cab", -+ "test_files/cabd/partial_str_nofname.cab", -+ "test_files/cabd/partial_str_shortfname.cab", -+ }; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ for (i = 0; i < (sizeof(files)/sizeof(char *)); i++) { -+ cab = cabd->open(cabd, files[i]); -+ TEST(cab == NULL); -+ TEST(cabd->last_error(cabd) == MSPACK_ERR_READ); -+ } -+ -+ for (i = 0; i < (sizeof(str_files)/sizeof(char *)); i++) { -+ cab = cabd->open(cabd, str_files[i]); -+ TEST(cab == NULL); -+ TEST(cabd->last_error(cabd) == MSPACK_ERR_DATAFORMAT); -+ } -+ -+ /* lack of data blocks should NOT be a problem for merely reading */ -+ cab = cabd->open(cabd, "test_files/cabd/partial_nodata.cab"); -+ TEST(cab != NULL); -+ -+ cabd->close(cabd, cab); -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+/* open cab with 255 character filename (maximum allowed) */ -+void cabd_open_test_06() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ cab = cabd->open(cabd, "test_files/cabd/normal_255c_filename.cab"); -+ TEST(cab != NULL); -+ -+ cabd->close(cabd, cab); -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+ -+/* open where search file doesn't exist */ -+void cabd_search_test_01() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ cab = cabd->search(cabd, "!!!FILE_WHICH_DOES_NOT_EXIST"); -+ TEST(cab == NULL); -+ TEST(cabd->last_error(cabd) == MSPACK_ERR_OPEN); -+ -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+/* search file using 1-byte buffer */ -+void cabd_search_test_02() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ cabd->set_param(cabd, MSCABD_PARAM_SEARCHBUF, 1); -+ cab = cabd->search(cabd, "test_files/cabd/search_basic.cab"); -+ cabd->set_param(cabd, MSCABD_PARAM_SEARCHBUF, 32768); -+ -+ TEST(cab != NULL); -+ TEST(cab->files != NULL); -+ TEST(cab->base_offset == 6); -+ TEST(cab->files->next != NULL); -+ TEST(strcmp(cab->files->filename, "hello.c") == 0); -+ TEST(strcmp(cab->files->next->filename, "welcome.c") == 0); -+ -+ TEST(cab->next != NULL); -+ TEST(cab->next->base_offset == 265); -+ TEST(cab->next->files != NULL); -+ TEST(cab->next->files->next != NULL); -+ TEST(strcmp(cab->next->files->filename, "hello.c") == 0); -+ TEST(strcmp(cab->next->files->next->filename, "welcome.c") == 0); -+ -+ TEST(cab->next->next == NULL); -+ -+ cabd->close(cabd, cab); -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+/* tricky searches */ -+void cabd_search_test_03() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ /* there is only ONE cab in this file. it is prepended by 4 bytes, "MSCF" -+ * (heh) and reserved fields in the real cab are filled in so the fake one -+ * looks real to the scanner but not the real reader -+ */ -+ cab = cabd->search(cabd, "test_files/cabd/search_tricky1.cab"); -+ TEST(cab != NULL); -+ TEST(cab->next == NULL); -+ TEST(cab->files != NULL); -+ TEST(cab->base_offset == 4); -+ TEST(cab->files->next != NULL); -+ TEST(strcmp(cab->files->filename, "hello.c") == 0); -+ TEST(strcmp(cab->files->next->filename, "welcome.c") == 0); -+ -+ cabd->close(cabd, cab); -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+/* basic parameter failures */ -+void cabd_merge_test_01() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab1, *cab2; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ cab1 = cabd->open(cabd, "test_files/cabd/multi_basic_pt1.cab"); -+ cab2 = cabd->open(cabd, "test_files/cabd/multi_basic_pt2.cab"); -+ TEST(cab1 != NULL); -+ TEST(cab2 != NULL); -+ TEST(cabd->append(cabd, cab1, NULL) != MSPACK_ERR_OK); -+ TEST(cabd->append(cabd, NULL, cab1) != MSPACK_ERR_OK); -+ TEST(cabd->append(cabd, cab1, cab1) != MSPACK_ERR_OK); -+ TEST(cabd->prepend(cabd, cab1, NULL) != MSPACK_ERR_OK); -+ TEST(cabd->prepend(cabd, NULL, cab1) != MSPACK_ERR_OK); -+ TEST(cabd->prepend(cabd, cab1, cab1) != MSPACK_ERR_OK); -+ -+ /* merge cabs, then try merging again every other way */ -+ TEST(cabd->append(cabd, cab1, cab2) == MSPACK_ERR_OK); -+ TEST(cabd->append(cabd, cab2, cab1) != MSPACK_ERR_OK); -+ TEST(cabd->prepend(cabd, cab1, cab2) != MSPACK_ERR_OK); -+ TEST(cabd->prepend(cabd, cab2, cab1) != MSPACK_ERR_OK); -+ TEST(cabd->append(cabd, cab1, cab2) != MSPACK_ERR_OK); -+ -+ cabd->close(cabd, cab1); -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+/* test merging a normal 5 part single folder cabinet set with slightly -+ * haphazard ordering. should still merge fine */ -+void cabd_merge_test_02() { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab[5]; -+ -+ cabd = mspack_create_cab_decompressor(NULL); -+ TEST(cabd != NULL); -+ -+ cab[0] = cabd->open(cabd, "test_files/cabd/multi_basic_pt1.cab"); -+ cab[1] = cabd->open(cabd, "test_files/cabd/multi_basic_pt2.cab"); -+ cab[2] = cabd->open(cabd, "test_files/cabd/multi_basic_pt3.cab"); -+ cab[3] = cabd->open(cabd, "test_files/cabd/multi_basic_pt4.cab"); -+ cab[4] = cabd->open(cabd, "test_files/cabd/multi_basic_pt5.cab"); -+ TEST(cab[0] != NULL); -+ TEST(cab[1] != NULL); -+ TEST(cab[2] != NULL); -+ TEST(cab[3] != NULL); -+ TEST(cab[4] != NULL); -+ TEST(cabd->append(cabd, cab[0], cab[1]) == MSPACK_ERR_OK); -+ TEST(cabd->prepend(cabd, cab[2], cab[1]) == MSPACK_ERR_OK); -+ TEST(cabd->append(cabd, cab[3], cab[4]) == MSPACK_ERR_OK); -+ TEST(cabd->prepend(cabd, cab[3], cab[2]) == MSPACK_ERR_OK); -+ -+ TEST(cab[0]->files != NULL); -+ TEST(cab[0]->files->next != NULL); -+ TEST(cab[0]->files->next->next != NULL); -+ TEST(cab[0]->files->next->next->next == NULL); -+ TEST(cab[0]->files == cab[1]->files); -+ TEST(cab[1]->files == cab[2]->files); -+ TEST(cab[2]->files == cab[3]->files); -+ TEST(cab[3]->files == cab[4]->files); -+ -+ TEST(cab[0]->folders != NULL); -+ TEST(cab[0]->folders->next == NULL); -+ TEST(cab[0]->folders == cab[1]->folders); -+ TEST(cab[1]->folders == cab[2]->folders); -+ TEST(cab[2]->folders == cab[3]->folders); -+ TEST(cab[3]->folders == cab[4]->folders); -+ -+ cabd->close(cabd, cab[0]); -+ mspack_destroy_cab_decompressor(cabd); -+} -+ -+int main() { -+ int selftest; -+ -+ MSPACK_SYS_SELFTEST(selftest); -+ TEST(selftest == MSPACK_ERR_OK); -+ -+ cabd_open_test_01(); -+ cabd_open_test_02(); -+ cabd_open_test_03(); -+ cabd_open_test_04(); -+ cabd_open_test_05(); -+ cabd_open_test_06(); -+ -+ cabd_search_test_01(); -+ cabd_search_test_02(); -+ cabd_search_test_03(); -+ -+ cabd_merge_test_01(); -+ cabd_merge_test_02(); -+ -+ /* extract() tests */ -+ -+ printf("ALL %d TESTS PASSED.\n", test_count); -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/cabrip.c b/libclamav/libmspack-0.4alpha/test/cabrip.c -new file mode 100644 -index 000000000000..5df9a44b3920 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/cabrip.c -@@ -0,0 +1,81 @@ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+ -+#define BUF_SIZE (1024*4096) -+char buf[BUF_SIZE]; -+ -+void rip(char *fname, off_t offset, unsigned int length) { -+ static unsigned int counter = 1; -+ struct stat st_buf; -+ char outname[13]; -+ FILE *in, *out; -+ -+ do { -+ snprintf(outname, 13, "%08u.cab", counter++); -+ } while (stat(outname, &st_buf) == 0); -+ -+ printf("ripping %s offset %" LD " length %u to %s\n", -+ fname, offset, length, outname); -+ -+ if ((in = fopen(fname, "rb"))) { -+#ifdef HAVE_FSEEKO -+ if (!fseeko(in, offset, SEEK_SET)) { -+#else -+ if (!fseek(in, offset, SEEK_SET)) { -+#endif -+ if ((out = fopen(outname, "wb"))) { -+ while (length > 0) { -+ unsigned int run = BUF_SIZE; -+ if (run > length) run = length; -+ if (fread(&buf[0], 1, run, in) != run) { -+ perror(fname); -+ break; -+ } -+ if (fwrite(&buf[0], 1, run, out) != run) { -+ perror(outname); -+ break; -+ } -+ length -= run; -+ } -+ fclose(out); -+ } -+ else { -+ perror(outname); -+ } -+ } -+ else { -+ perror(fname); -+ } -+ fclose(in); -+ } -+ else { -+ perror(fname); -+ } -+} -+ -+int main(int argc, char *argv[]) { -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab, *c; -+ int err; -+ -+ MSPACK_SYS_SELFTEST(err); -+ if (err) return 0; -+ -+ if ((cabd = mspack_create_cab_decompressor(NULL))) { -+ for (argv++; *argv; argv++) { -+ if ((cab = cabd->search(cabd, *argv))) { -+ for (c = cab; c; c = c->next) rip(*argv, c->base_offset, c->length); -+ cabd->close(cabd, cab); -+ } -+ } -+ mspack_destroy_cab_decompressor(cabd); -+ } -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/chmd_find.c b/libclamav/libmspack-0.4alpha/test/chmd_find.c -new file mode 100644 -index 000000000000..c30a972c57d8 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/chmd_find.c -@@ -0,0 +1,95 @@ -+/* chmd_find: tests fast-find functionality -+ */ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+void find(struct mschm_decompressor *chmd, struct mschmd_header *chm, -+ char *archive, char *filename, struct mschmd_file *compare) -+{ -+ struct mschmd_file result; -+ if (chmd->fast_find(chmd, chm, filename, &result, sizeof(result))) { -+ fprintf(stderr, "%s: find error on \"%s\": %s\n", -+ archive, filename, ERROR(chmd)); -+ } -+ else if (!result.section) { -+ if (compare) { -+ fprintf(stderr, "%s: file \"%s\" not found\n", archive, filename); -+ } -+ else { -+ printf("%s: file \"%s\" not found\n", archive, filename); -+ } -+ } -+ else { -+ printf("%s\n", filename); -+ printf(" section: %d\n", result.section->id); -+ printf(" offset: %" LD "\n", result.offset); -+ printf(" length: %" LD "\n", result.length); -+ if (compare) { -+ if (result.section->id != compare->section->id) { -+ fprintf(stderr, "%s: found file \"%s\" section is wrong " -+ "(%d vs %d)\n", archive, filename, -+ result.section->id, compare->section->id); -+ } -+ -+ if (result.offset != compare->offset) { -+ fprintf(stderr, "%s: found file \"%s\" offset is wrong " -+ "(%" LD " vs %" LD ")\n", archive, filename, -+ result.offset, compare->offset); -+ } -+ -+ if (result.length != compare->length) { -+ fprintf(stderr, "%s: found file \"%s\" length is wrong " -+ "(%" LD " vs %" LD ")\n", archive, filename, -+ result.length, compare->length); -+ } -+ } -+ } -+} -+ -+int main(int argc, char *argv[]) { -+ struct mschm_decompressor *chmd; -+ struct mschmd_header *chm, *chm2; -+ unsigned int i; -+ -+ if (argc < 2 || argc > 3) { -+ printf("Usage: %s [filename to find]\n", argv[0]); -+ return 1; -+ } -+ -+ MSPACK_SYS_SELFTEST(i); -+ if (i) return 0; -+ -+ if ((chmd = mspack_create_chm_decompressor(NULL))) { -+ if ((chm = chmd->fast_open(chmd, argv[1]))) { -+ if (argv[2]) { -+ find(chmd, chm, argv[1], argv[2], NULL); -+ } -+ else { -+ if ((chm2 = chmd->open(chmd, argv[1]))) { -+ struct mschmd_file *file; -+ for (file = chm2->files; file; file = file->next) { -+ find(chmd, chm, argv[1], file->filename, file); -+ } -+ } -+ else { -+ printf("%s: can't open -- %s\n", argv[1], ERROR(chmd)); -+ } -+ } -+ chmd->close(chmd, chm); -+ } -+ else { -+ printf("%s: can't open -- %s\n", argv[1], ERROR(chmd)); -+ } -+ mspack_destroy_chm_decompressor(chmd); -+ } -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/chmd_md5.c b/libclamav/libmspack-0.4alpha/test/chmd_md5.c -new file mode 100644 -index 000000000000..6187fa460914 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/chmd_md5.c -@@ -0,0 +1,67 @@ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+static int sortfunc(const void *a, const void *b) { -+ off_t diff = -+ ((* ((struct mschmd_file **) a))->offset) - -+ ((* ((struct mschmd_file **) b))->offset); -+ return (diff < 0) ? -1 : ((diff > 0) ? 1 : 0); -+} -+ -+int main(int argc, char *argv[]) { -+ struct mschm_decompressor *chmd; -+ struct mschmd_header *chm; -+ struct mschmd_file *file, **f; -+ unsigned int numf, i; -+ int err; -+ -+ setbuf(stdout, NULL); -+ setbuf(stderr, NULL); -+ -+ MSPACK_SYS_SELFTEST(err); -+ if (err) return 0; -+ -+ if ((chmd = mspack_create_chm_decompressor(&read_files_write_md5))) { -+ for (argv++; *argv; argv++) { -+ printf("*** %s\n", *argv); -+ if ((chm = chmd->open(chmd, *argv))) { -+ -+ /* extract in order of the offset into content section - faster */ -+ for (numf=0, file=chm->files; file; file = file->next) numf++; -+ if ((f = (struct mschmd_file **) calloc(numf, sizeof(struct mschmd_file *)))) { -+ for (i=0, file=chm->files; file; file = file->next) f[i++] = file; -+ qsort(f, numf, sizeof(struct mschmd_file *), &sortfunc); -+ for (i = 0; i < numf; i++) { -+ if (chmd->extract(chmd, f[i], NULL)) { -+ fprintf(stderr, "%s: extract error on \"%s\": %s\n", -+ *argv, f[i]->filename, ERROR(chmd)); -+ } -+ else { -+ printf("%s %s\n", md5_string, f[i]->filename); -+ } -+ } -+ free(f); -+ } -+ -+ chmd->close(chmd, chm); -+ } -+ else { -+ fprintf(stderr, "%s: can't open -- %s\n", *argv, ERROR(chmd)); -+ } -+ } -+ mspack_destroy_chm_decompressor(chmd); -+ } -+ else { -+ fprintf(stderr, "%s: can't make CHM decompressor\n", *argv); -+ } -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/chmd_order.c b/libclamav/libmspack-0.4alpha/test/chmd_order.c -new file mode 100644 -index 000000000000..cb7f47d0e99f ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/chmd_order.c -@@ -0,0 +1,144 @@ -+/* chmd_order: test that extracting a CHM file in different ways works -+ * and all give the same results: -+ * - extracting files in the order they're listed (generally alphabetical) -+ * - extracting files ordered by their content section offset -+ * - extracting files using fast_find() to find them -+ * - extracting files from two chms at the same time with one decompressor -+ */ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+ -+#include -+#include -+ -+struct my_file { -+ struct mschmd_file *file; -+ struct mschmd_file result; -+ char ordered[32], sorted[32], fast_find[32], mixed[32]; -+}; -+ -+static int sortfunc(const void *a, const void *b) { -+ off_t diff = -+ ((struct my_file *) a)->file->offset - -+ ((struct my_file *) b)->file->offset; -+ return (diff < 0) ? -1 : ((diff > 0) ? 1 : 0); -+} -+ -+int main(int argc, char *argv[]) { -+ struct mschm_decompressor *chmd; -+ struct mschmd_header *chm, *chm2; -+ struct mschmd_file *file; -+ struct my_file *f; -+ unsigned int N, i; -+ -+ MSPACK_SYS_SELFTEST(i); -+ if (i) return 0; -+ -+ if ((chmd = mspack_create_chm_decompressor(&read_files_write_md5))) { -+ for (argv++; *argv; argv++) { -+ printf("%s\n", *argv); -+ -+ if ((chm = chmd->open(chmd, *argv))) { -+ if ((chm2 = chmd->fast_open(chmd, *argv))) { -+ -+ /* count the number of files, allocate a results structure */ -+ for (N=0, file = chm->files; file; file = file->next) N++; -+ if ((f = (struct my_file *) calloc(N, sizeof(struct my_file)))) { -+ -+ /* fill out results structure while doing ordered extraction */ -+ for (i = 0, file = chm->files; file; file = file->next, i++) { -+ printf("OX %s\n", file->filename); -+ f[i].file = file; -+ if (chmd->extract(chmd, file, NULL)) { -+ fprintf(stderr, "%s: O extract error on \"%s\": %s\n", -+ *argv, file->filename, ERROR(chmd)); -+ continue; -+ } -+ memcpy(&f[i].ordered[0], md5_string, 32); -+ } -+ -+ /* sort the list into offset order */ -+ qsort(f, N, sizeof(struct my_file), &sortfunc); -+ -+ /* extract in offset order */ -+ for (i = 0; i < N; i++) { -+ printf("SX %s\n", f[i].file->filename); -+ if (chmd->extract(chmd, f[i].file, NULL)) { -+ fprintf(stderr, "%s: S extract error on \"%s\": %s\n", -+ *argv, f[i].file->filename, ERROR(chmd)); -+ continue; -+ } -+ memcpy(&f[i].sorted[0], md5_string, 32); -+ } -+ -+ /* extract using fast_find */ -+ for (i = 0; i < N; i++) { -+ printf("FX %s\n", f[i].file->filename); -+ -+ if (chmd->fast_find(chmd, chm2, -+ f[i].file->filename, -+ &f[i].result, sizeof(struct mschmd_file))) -+ { -+ fprintf(stderr, "%s: find error on \"%s\": %s\n", -+ *argv, f[i].file->filename, ERROR(chmd)); -+ continue; -+ } -+ if (!f[i].result.section) { -+ fprintf(stderr, "%s: can't find file \"%s\"\n", -+ *argv, f[i].file->filename); -+ continue; -+ } -+ if (chmd->extract(chmd, &f[i].result, NULL)) { -+ fprintf(stderr, "%s: F extract error on \"%s\": %s\n", -+ *argv, f[i].file->filename, ERROR(chmd)); -+ continue; -+ } -+ memcpy(&f[i].fast_find[0], md5_string, 32); -+ } -+ -+ /* extract two chms at once */ -+ for (i = 0; i < N; i++) { -+ printf("MX %s\n", f[i].file->filename); -+ chmd->extract(chmd, f[i].file, NULL); -+ if (chmd->extract(chmd, &f[i].result, NULL)) { -+ fprintf(stderr, "%s: M extract error on \"%s\": %s\n", -+ *argv, f[i].file->filename, ERROR(chmd)); -+ continue; -+ } -+ memcpy(&f[i].mixed[0], md5_string, 32); -+ } -+ -+ /* check all the MD5 sums match */ -+ for (i = 0; i < N; i++) { -+ if (memcmp(&f[i].ordered, &f[i].sorted, 32) || -+ memcmp(&f[i].ordered, &f[i].fast_find, 32) || -+ memcmp(&f[i].ordered, &f[i].mixed, 32)) -+ { -+ fprintf(stderr, "%s: sums mismatch on %s " -+ "(O=%32.32s,S=%32.32s,F=%32.32s,M=%32.32s)\n", -+ *argv, f[i].file->filename, -+ &f[i].ordered[0], &f[i].sorted[0], -+ &f[i].fast_find[0], &f[i].mixed[0]); -+ } -+ } -+ -+ free(f); -+ } -+ chmd->close(chmd, chm2); -+ } -+ chmd->close(chmd, chm); -+ } -+ else { -+ printf("%s: can't open -- %s\n", *argv, ERROR(chmd)); -+ } -+ } -+ mspack_destroy_chm_decompressor(chmd); -+ } -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/chminfo.c b/libclamav/libmspack-0.4alpha/test/chminfo.c -new file mode 100644 -index 000000000000..b21ec6427b42 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/chminfo.c -@@ -0,0 +1,284 @@ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define FILENAME ".chminfo-temp" -+ -+unsigned char *load_sys_data(struct mschm_decompressor *chmd, -+ struct mschmd_header *chm, -+ const char *filename, -+ off_t *length_ptr) -+{ -+ struct mschmd_file *file; -+ unsigned char *data; -+ FILE *fh; -+ -+ for (file = chm->sysfiles; file; file = file->next) { -+ if (strcmp(file->filename, filename) == 0) break; -+ } -+ if (!file || file->section->id != 0) return NULL; -+ if (chmd->extract(chmd, file, FILENAME)) return NULL; -+ if (length_ptr) *length_ptr = file->length; -+ if (!(data = (unsigned char *) malloc((size_t) file->length))) return NULL; -+ if ((fh = fopen(FILENAME, "rb"))) { -+ fread(data, (size_t) file->length, 1, fh); -+ fclose(fh); -+ } -+ else { -+ free(data); -+ data = NULL; -+ } -+ unlink(FILENAME); -+ return data; -+} -+ -+char *guid(unsigned char *data) { -+ static char result[43]; -+ snprintf(result, sizeof(result), -+ "{%08X-%04X-%04X-%04X-%02X%02X%02X%02X%02X%02X%02X%02X}", -+ EndGetI32(&data[0]), -+ data[4] | (data[5] << 8), -+ data[6] | (data[7] << 8), -+ data[8] | (data[9] << 8), -+ data[10], data[11], data[12], data[13], -+ data[14], data[15], data[16], data[17]); -+ return result; -+} -+ -+#define READ_ENCINT(var, label) do { \ -+ (var) = 0; \ -+ do { \ -+ if (p > &chunk[chm->chunk_size-2]) goto label; \ -+ (var) = ((var) << 7) | (*p & 0x7F); \ -+ } while (*p++ & 0x80); \ -+} while (0) -+ -+void print_dir(struct mschmd_header *chm, char *filename) { -+ unsigned char dir[0x54], *chunk; -+ unsigned int i; -+ FILE *fh; -+ -+ if (!(chunk = (unsigned char *) malloc(chm->chunk_size))) return; -+ -+ if ((fh = fopen(filename, "rb"))) { -+#ifdef HAVE_FSEEKO -+ fseeko(fh, chm->dir_offset - 84, SEEK_SET); -+#else -+ fseek(fh, chm->dir_offset - 84, SEEK_SET); -+#endif -+ fread(&dir[0], 84, 1, fh); -+ printf(" chmhs1_Signature = %4.4s\n", &dir[0]); -+ printf(" chmhs1_Version = %d\n", EndGetI32(&dir[4])); -+ printf(" chmhs1_HeaderLen = %d\n", EndGetI32(&dir[8])); -+ printf(" chmhs1_Unknown1 = %d\n", EndGetI32(&dir[12])); -+ printf(" chmhs1_ChunkSize = %d\n", EndGetI32(&dir[16])); -+ printf(" chmhs1_Density = %d\n", EndGetI32(&dir[20])); -+ printf(" chmhs1_Depth = %d\n", EndGetI32(&dir[24])); -+ printf(" chmhs1_IndexRoot = %d\n", EndGetI32(&dir[28])); -+ printf(" chmhs1_FirstPMGL = %d\n", EndGetI32(&dir[32])); -+ printf(" chmhs1_LastPMGL = %d\n", EndGetI32(&dir[36])); -+ printf(" chmhs1_Unknown2 = %d\n", EndGetI32(&dir[40])); -+ printf(" chmhs1_NumChunks = %d\n", EndGetI32(&dir[44])); -+ printf(" chmhs1_LanguageID = %d\n", EndGetI32(&dir[48])); -+ printf(" chmhs1_GUID = %s\n", guid(&dir[52])); -+ printf(" chmhs1_Unknown3 = %d\n", EndGetI32(&dir[68])); -+ printf(" chmhs1_Unknown4 = %d\n", EndGetI32(&dir[72])); -+ printf(" chmhs1_Unknown5 = %d\n", EndGetI32(&dir[76])); -+ printf(" chmhs1_Unknown6 = %d\n", EndGetI32(&dir[80])); -+ -+ for (i = 0; i < chm->num_chunks; i++) { -+ unsigned int num_entries, quickref_size, j, k; -+ unsigned char *p, *name; -+ printf(" CHUNK %u:\n", i); -+ fread(chunk, chm->chunk_size, 1, fh); -+ -+ if ((chunk[0] == 'P') && (chunk[1] == 'M') && -+ (chunk[2] == 'G') && (chunk[3] == 'L')) -+ { -+ k = chm->chunk_size - 2; -+ num_entries = chunk[k] | (chunk[k+1] << 8); -+ quickref_size = EndGetI32(&chunk[4]); -+ if (quickref_size > (chm->chunk_size - 20)) { -+ printf(" QR size of %d too large (max is %d)\n", -+ quickref_size, chm->chunk_size - 20); -+ quickref_size = chm->chunk_size - 20; -+ } -+ printf(" PMGL entries=%u qrsize=%u zero=%u prev=%d next=%d\n", -+ num_entries, quickref_size, EndGetI32(&chunk[8]), -+ EndGetI32(&chunk[12]), EndGetI32(&chunk[16])); -+ -+ printf(" QR: entry %4u = offset %u\n", 0, 20); -+ j = (1 << chm->density) + 1; -+ while (j < num_entries) { -+ k -= 2; -+ if (k < (chm->chunk_size - quickref_size)) break; -+ printf(" QR: entry %4u = offset %u\n", -+ j, (chunk[k] | (chunk[k+1] << 8)) + 20); -+ j += (1 << chm->density) + 1; -+ } -+ -+ p = &chunk[20]; -+ for (j = 0; j < num_entries; j++) { -+ unsigned int name_len = 0, section = 0, offset = 0, length = 0; -+ printf(" %4d: ", (int) (p - &chunk[0])); -+ READ_ENCINT(name_len, PMGL_end); name = p; p += name_len; -+ READ_ENCINT(section, PMGL_end); -+ READ_ENCINT(offset, PMGL_end); -+ READ_ENCINT(length, PMGL_end); -+ printf("sec=%u off=%-10u len=%-10u name=\"",section,offset,length); -+ if (name_len) fwrite(name, 1, name_len, stdout); -+ printf("\"\n"); -+ } -+ PMGL_end: -+ if (j != num_entries) printf("premature end of chunk\n"); -+ -+ } -+ else if ((chunk[0] == 'P') && (chunk[1] == 'M') && -+ (chunk[2] == 'G') && (chunk[3] == 'I')) -+ { -+ k = chm->chunk_size - 2; -+ num_entries = chunk[k] | (chunk[k+1] << 8); -+ quickref_size = EndGetI32(&chunk[4]); -+ printf(" PMGI entries=%u free=%u\n", num_entries, quickref_size); -+ -+ printf(" QR: entry %4u = offset %u\n", 0, 8); -+ j = (1 << chm->density) + 1; -+ while (j < num_entries) { -+ k -= 2; -+ printf(" QR: entry %4u = offset %u\n", -+ j, (chunk[k] | (chunk[k+1] << 8)) + 8); -+ j += (1 << chm->density) + 1; -+ } -+ -+ p = &chunk[8]; -+ for (j = 0; j < num_entries; j++) { -+ unsigned int name_len, section; -+ printf(" %4d: ", (int) (p - &chunk[0])); -+ READ_ENCINT(name_len, PMGI_end); name = p; p += name_len; -+ READ_ENCINT(section, PMGI_end); -+ printf("chunk=%-4u name=\"",section); -+ if (name_len) fwrite(name, 1, name_len, stdout); -+ printf("\"\n"); -+ } -+ PMGI_end: -+ if (j != num_entries) printf("premature end of chunk\n"); -+ } -+ else { -+ printf(" unknown format\n"); -+ } -+ } -+ -+ fclose(fh); -+ } -+} -+ -+ -+int main(int argc, char *argv[]) { -+ struct mschm_decompressor *chmd; -+ struct mschmd_header *chm; -+ struct mschmd_file *file; -+ unsigned int numf, i; -+ unsigned char *data; -+ off_t pos, len; -+ -+ setbuf(stdout, NULL); -+ setbuf(stderr, NULL); -+ -+ MSPACK_SYS_SELFTEST(i); -+ if (i) return 0; -+ -+ if ((chmd = mspack_create_chm_decompressor(NULL))) { -+ for (argv++; *argv; argv++) { -+ printf("%s\n", *argv); -+ if ((chm = chmd->open(chmd, *argv))) { -+ printf(" chmhead_Version %u\n", chm->version); -+ printf(" chmhead_Timestamp %u\n", chm->timestamp); -+ printf(" chmhead_LanguageID %u\n", chm->language); -+ printf(" chmhs0_FileLen %" LD "\n", chm->length); -+ printf(" chmhst_OffsetHS1 %" LD "\n", chm->dir_offset); -+ printf(" chmhst3_OffsetCS0 %" LD "\n", chm->sec0.offset); -+ -+ print_dir(chm, *argv); -+ -+ if ((data = load_sys_data(chmd, chm, -+ "::DataSpace/Storage/MSCompressed/ControlData", &len))) -+ { -+ printf(" lzxcd_Length %u\n", EndGetI32(&data[0])); -+ printf(" lzxcd_Signature %4.4s\n", &data[4]); -+ printf(" lzxcd_Version %u\n", EndGetI32(&data[8])); -+ printf(" lzxcd_ResetInterval %u\n", EndGetI32(&data[12])); -+ printf(" lzxcd_WindowSize %u\n", EndGetI32(&data[16])); -+ printf(" lzxcd_CacheSize %u\n", EndGetI32(&data[20])); -+ printf(" lzxcd_Unknown1 %u\n", EndGetI32(&data[24])); -+ free(data); -+ } -+ -+ if ((data = load_sys_data(chmd, chm, -+ "::DataSpace/Storage/MSCompressed/Transform/{7FC28940-" -+ "9D31-11D0-9B27-00A0C91E9C7C}/InstanceData/ResetTable", &len))) -+ { -+ off_t contents = chm->sec0.offset; -+ printf(" lzxrt_Unknown1 %u\n", EndGetI32(&data[0])); -+ printf(" lzxrt_NumEntries %u\n", EndGetI32(&data[4])); -+ printf(" lzxrt_EntrySize %u\n", EndGetI32(&data[8])); -+ printf(" lzxrt_TableOffset %u\n", EndGetI32(&data[12])); -+ printf(" lzxrt_UncompLen %" LU "\n", EndGetI64(&data[16])); -+ printf(" lzxrt_CompLen %" LU "\n", EndGetI64(&data[24])); -+ printf(" lzxrt_FrameLen %u\n", EndGetI32(&data[32])); -+ -+ for (file = chm->sysfiles; file; file = file->next) { -+ if (strcmp(file->filename, -+ "::DataSpace/Storage/MSCompressed/Content") == 0) -+ { -+ contents += file->offset; -+ break; -+ } -+ } -+ -+ printf(" - reset table (uncomp offset -> stream offset " -+ "[real offset, length in file]\n"); -+ -+ numf = EndGetI32(&data[4]); -+ pos = ((unsigned int) EndGetI32(&data[12])); -+ switch (EndGetI32(&data[8])) { -+ case 4: -+ for (i = 0; i < numf && pos < len; i++, pos += 4) { -+ unsigned int rtdata = EndGetI32(&data[pos]); -+ printf(" %-10u -> %-10u [ %" LU " %u ]\n", -+ i * EndGetI32(&data[32]), -+ rtdata, -+ contents + rtdata, -+ (i == (numf-1)) -+ ? (EndGetI32(&data[24]) - rtdata) -+ : (EndGetI32(&data[pos + 4]) - rtdata) -+ ); -+ } -+ break; -+ case 8: -+ for (i = 0; i < numf && pos < len; i++, pos += 8) { -+ unsigned long long int rtdata = EndGetI64(&data[pos]); -+ printf(" %-10" LU " -> %-10" LU " [ %" LU " %" LU " ]\n", -+ i * EndGetI64(&data[32]), rtdata, contents + rtdata, -+ (i == (numf-1)) -+ ? (EndGetI64(&data[24]) - rtdata) -+ : (EndGetI64(&data[pos + 8]) - rtdata) -+ ); -+ } -+ break; -+ } -+ free(data); -+ } -+ chmd->close(chmd, chm); -+ } -+ } -+ mspack_destroy_chm_decompressor(chmd); -+ } -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/chmx.c b/libclamav/libmspack-0.4alpha/test/chmx.c -new file mode 100644 -index 000000000000..0d0b3c2221ef ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/chmx.c -@@ -0,0 +1,216 @@ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include -+ -+mode_t user_umask; -+ -+#define FILENAME ".test.chmx" -+ -+/** -+ * Ensures that all directory components in a filepath exist. New directory -+ * components are created, if necessary. -+ * -+ * @param path the filepath to check -+ * @return non-zero if all directory components in a filepath exist, zero -+ * if components do not exist and cannot be created -+ */ -+static int ensure_filepath(char *path) { -+ struct stat st_buf; -+ char *p; -+ int ok; -+ -+ for (p = &path[1]; *p; p++) { -+ if (*p != '/') continue; -+ *p = '\0'; -+ ok = (stat(path, &st_buf) == 0) && S_ISDIR(st_buf.st_mode); -+ if (!ok) ok = (mkdir(path, 0777 & ~user_umask) == 0); -+ *p = '/'; -+ if (!ok) return 0; -+ } -+ return 1; -+} -+ -+/** -+ * Creates a UNIX filename from the internal CAB filename and the given -+ * parameters. -+ * -+ * @param fname the internal CAB filename. -+ * @param dir a directory path to prepend to the output filename. -+ * @param lower if non-zero, filename should be made lower-case. -+ * @param isunix if zero, MS-DOS path seperators are used in the internal -+ * CAB filename. If non-zero, UNIX path seperators are used. -+ * @param utf8 if non-zero, the internal CAB filename is encoded in UTF8. -+ * @return a freshly allocated and created filename, or NULL if there was -+ * not enough memory. -+ * @see unix_path_seperators() -+ */ -+static char *create_output_name(unsigned char *fname, unsigned char *dir, -+ int lower, int isunix, int utf8) -+{ -+ unsigned char *p, *name, c, *fe, sep, slash; -+ unsigned int x; -+ -+ sep = (isunix) ? '/' : '\\'; /* the path-seperator */ -+ slash = (isunix) ? '\\' : '/'; /* the other slash */ -+ -+ /* length of filename */ -+ x = strlen((char *) fname); -+ /* UTF8 worst case scenario: tolower() expands all chars from 1 to 3 bytes */ -+ if (utf8) x *= 3; -+ /* length of output directory */ -+ if (dir) x += strlen((char *) dir); -+ -+ if (!(name = (unsigned char *) malloc(x + 2))) { -+ fprintf(stderr, "out of memory!\n"); -+ return NULL; -+ } -+ -+ /* start with blank name */ -+ *name = '\0'; -+ -+ /* add output directory if needed */ -+ if (dir) { -+ strcpy((char *) name, (char *) dir); -+ strcat((char *) name, "/"); -+ } -+ -+ /* remove leading slashes */ -+ while (*fname == sep) fname++; -+ -+ /* copy from fi->filename to new name, converting MS-DOS slashes to UNIX -+ * slashes as we go. Also lowercases characters if needed. -+ */ -+ p = &name[strlen((char *)name)]; -+ fe = &fname[strlen((char *)fname)]; -+ -+ if (utf8) { -+ /* UTF8 translates two-byte unicode characters into 1, 2 or 3 bytes. -+ * %000000000xxxxxxx -> %0xxxxxxx -+ * %00000xxxxxyyyyyy -> %110xxxxx %10yyyyyy -+ * %xxxxyyyyyyzzzzzz -> %1110xxxx %10yyyyyy %10zzzzzz -+ * -+ * Therefore, the inverse is as follows: -+ * First char: -+ * 0x00 - 0x7F = one byte char -+ * 0x80 - 0xBF = invalid -+ * 0xC0 - 0xDF = 2 byte char (next char only 0x80-0xBF is valid) -+ * 0xE0 - 0xEF = 3 byte char (next 2 chars only 0x80-0xBF is valid) -+ * 0xF0 - 0xFF = invalid -+ */ -+ do { -+ if (fname >= fe) { -+ free(name); -+ return NULL; -+ } -+ -+ /* get next UTF8 char */ -+ if ((c = *fname++) < 0x80) x = c; -+ else { -+ if ((c >= 0xC0) && (c < 0xE0)) { -+ x = (c & 0x1F) << 6; -+ x |= *fname++ & 0x3F; -+ } -+ else if ((c >= 0xE0) && (c < 0xF0)) { -+ x = (c & 0xF) << 12; -+ x |= (*fname++ & 0x3F) << 6; -+ x |= *fname++ & 0x3F; -+ } -+ else x = '?'; -+ } -+ -+ /* whatever is the path seperator -> '/' -+ * whatever is the other slash -> '\\' -+ * otherwise, if lower is set, the lowercase version */ -+ if (x == sep) x = '/'; -+ else if (x == slash) x = '\\'; -+ else if (lower) x = (unsigned int) tolower((int) x); -+ -+ /* integer back to UTF8 */ -+ if (x < 0x80) { -+ *p++ = (unsigned char) x; -+ } -+ else if (x < 0x800) { -+ *p++ = 0xC0 | (x >> 6); -+ *p++ = 0x80 | (x & 0x3F); -+ } -+ else { -+ *p++ = 0xE0 | (x >> 12); -+ *p++ = 0x80 | ((x >> 6) & 0x3F); -+ *p++ = 0x80 | (x & 0x3F); -+ } -+ } while (x); -+ } -+ else { -+ /* regular non-utf8 version */ -+ do { -+ c = *fname++; -+ if (c == sep) c = '/'; -+ else if (c == slash) c = '\\'; -+ else if (lower) c = (unsigned char) tolower((int) c); -+ } while ((*p++ = c)); -+ } -+ return (char *) name; -+} -+ -+static int sortfunc(const void *a, const void *b) { -+ off_t diff = -+ ((* ((struct mschmd_file **) a))->offset) - -+ ((* ((struct mschmd_file **) b))->offset); -+ return (diff < 0) ? -1 : ((diff > 0) ? 1 : 0); -+} -+ -+int main(int argc, char *argv[]) { -+ struct mschm_decompressor *chmd; -+ struct mschmd_header *chm; -+ struct mschmd_file *file, **f; -+ unsigned int numf, i; -+ -+ setbuf(stdout, NULL); -+ setbuf(stderr, NULL); -+ user_umask = umask(0); umask(user_umask); -+ -+ MSPACK_SYS_SELFTEST(i); -+ if (i) return 0; -+ -+ if ((chmd = mspack_create_chm_decompressor(NULL))) { -+ for (argv++; *argv; argv++) { -+ printf("%s\n", *argv); -+ if ((chm = chmd->open(chmd, *argv))) { -+ -+ /* build an ordered list of files for maximum extraction speed */ -+ for (numf=0, file=chm->files; file; file = file->next) numf++; -+ if ((f = (struct mschmd_file **) calloc(numf, sizeof(struct mschmd_file *)))) { -+ for (i=0, file=chm->files; file; file = file->next) f[i++] = file; -+ qsort(f, numf, sizeof(struct mschmd_file *), &sortfunc); -+ -+ for (i = 0; i < numf; i++) { -+ char *outname = create_output_name((unsigned char *)f[i]->filename,NULL,0,1,0); -+ printf("Extracting %s\n", outname); -+ ensure_filepath(outname); -+ if (chmd->extract(chmd, f[i], outname)) { -+ printf("%s: extract error on \"%s\": %s\n", -+ *argv, f[i]->filename, ERROR(chmd)); -+ } -+ free(outname); -+ } -+ free(f); -+ } -+ chmd->close(chmd, chm); -+ } -+ else { -+ printf("%s: can't open -- %s\n", *argv, ERROR(chmd)); -+ } -+ } -+ mspack_destroy_chm_decompressor(chmd); -+ } -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/error.h b/libclamav/libmspack-0.4alpha/test/error.h -new file mode 100644 -index 000000000000..b1d627b27c09 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/error.h -@@ -0,0 +1,22 @@ -+#define ERROR(base) error_msg(base->last_error(base)) -+ -+const char *error_msg(int error) { -+ static char buf[32]; -+ switch (error) { -+ case MSPACK_ERR_OK: return "no error"; -+ case MSPACK_ERR_ARGS: return "bad arguments to library function"; -+ case MSPACK_ERR_OPEN: return "error opening file"; -+ case MSPACK_ERR_READ: return "read error"; -+ case MSPACK_ERR_WRITE: return "write error"; -+ case MSPACK_ERR_SEEK: return "seek error"; -+ case MSPACK_ERR_NOMEMORY: return "out of memory"; -+ case MSPACK_ERR_SIGNATURE: return "bad signature"; -+ case MSPACK_ERR_DATAFORMAT: return "error in data format"; -+ case MSPACK_ERR_CHECKSUM: return "checksum error"; -+ case MSPACK_ERR_CRUNCH: return "compression error"; -+ case MSPACK_ERR_DECRUNCH: return "decompression error"; -+ } -+ -+ snprintf(buf, sizeof(buf), "unknown error %d", error); -+ return buf; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/expand.c b/libclamav/libmspack-0.4alpha/test/expand.c -new file mode 100644 -index 000000000000..215ef7ba17d5 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/expand.c -@@ -0,0 +1,79 @@ -+/* acts like Microsoft's EXPAND.EXE */ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+ -+#include -+#include -+ -+int main(int argc, char *argv[]) { -+ struct msszdd_decompressor *szddd; -+ struct mskwaj_decompressor *kwajd; -+ struct msszddd_header *szdd; -+ struct mskwajd_header *kwaj; -+ int err; -+ -+ if (argc != 3) { -+ fprintf(stderr, "Usage: %s \n", argv[0]); -+ return 1; -+ } -+ -+ /* if self-test reveals an error */ -+ MSPACK_SYS_SELFTEST(err); -+ if (err) return 1; -+ -+ szddd = mspack_create_szdd_decompressor(NULL); -+ kwajd = mspack_create_kwaj_decompressor(NULL); -+ -+ if (!szddd || !kwajd) { -+ fprintf(stderr, "can't make either SZDD or KWAJ decompressor\n"); -+ mspack_destroy_szdd_decompressor(szddd); -+ mspack_destroy_kwaj_decompressor(kwajd); -+ return 1; -+ } -+ -+ /* open then extract; try SZDD */ -+ if ((szdd = szddd->open(szddd, argv[1]))) { -+ if (szddd->extract(szddd, szdd, argv[2]) != MSPACK_ERR_OK) { -+ fprintf(stderr, "%s: SZDD extract error: %s\n", argv[2], ERROR(szddd)); -+ } -+ szddd->close(szddd, szdd); -+ } -+ else { -+ if (szddd->last_error(szddd) == MSPACK_ERR_SIGNATURE) { -+ /* try KWAJ */ -+ if ((kwaj = kwajd->open(kwajd, argv[1]))) { -+ if (kwajd->extract(kwajd, kwaj, argv[2]) != MSPACK_ERR_OK) { -+ fprintf(stderr, "%s: KWAJ extract error: %s\n", argv[2], ERROR(kwajd)); -+ } -+ kwajd->close(kwajd, kwaj); -+ } -+ else { -+ fprintf(stderr, "%s: KWAJ open error: %s\n", argv[1], ERROR(kwajd)); -+ } -+ } -+ else { -+ fprintf(stderr, "%s: SZDD open error: %s\n", argv[1], ERROR(szddd)); -+ } -+ } -+ -+ /* decompress in a single step; try KWAJ */ -+ if (kwajd->decompress(kwajd, argv[1], argv[2]) != MSPACK_ERR_OK) { -+ if (kwajd->last_error(kwajd) == MSPACK_ERR_SIGNATURE) { -+ if (szddd->decompress(szddd, argv[1], argv[2]) != MSPACK_ERR_OK) { -+ fprintf(stderr, "%s -> %s: SZDD decompress error: %s\n", argv[1], argv[2], ERROR(szddd)); -+ } -+ } -+ else { -+ fprintf(stderr, "%s -> %s: KWAJ decompress error: %s\n", argv[1], argv[2], ERROR(kwajd)); -+ } -+ } -+ -+ mspack_destroy_szdd_decompressor(szddd); -+ mspack_destroy_kwaj_decompressor(kwajd); -+ return 0; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/md5.c b/libclamav/libmspack-0.4alpha/test/md5.c -new file mode 100644 -index 000000000000..208740689392 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/md5.c -@@ -0,0 +1,457 @@ -+/* md5.c - Functions to compute MD5 message digest of files or memory blocks -+ according to the definition of MD5 in RFC 1321 from April 1992. -+ Copyright (C) 1995, 1996, 2001, 2003 Free Software Foundation, Inc. -+ NOTE: The canonical source of this file is maintained with the GNU C -+ Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU General Public License as published by the -+ Free Software Foundation; either version 2, or (at your option) any -+ later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software Foundation, -+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+/* Written by Ulrich Drepper , 1995. */ -+ -+#ifdef HAVE_CONFIG_H -+# include -+#endif -+ -+#include -+ -+#if STDC_HEADERS || defined _LIBC -+# include -+# include -+#else -+# ifndef HAVE_MEMCPY -+# define memcpy(d, s, n) bcopy ((s), (d), (n)) -+# endif -+#endif -+ -+#include -+ -+#ifdef _LIBC -+# include -+# if __BYTE_ORDER == __BIG_ENDIAN -+# define WORDS_BIGENDIAN 1 -+# endif -+/* We need to keep the namespace clean so define the MD5 function -+ protected using leading __ . */ -+# define md5_init_ctx __md5_init_ctx -+# define md5_process_block __md5_process_block -+# define md5_process_bytes __md5_process_bytes -+# define md5_finish_ctx __md5_finish_ctx -+# define md5_read_ctx __md5_read_ctx -+# define md5_stream __md5_stream -+# define md5_buffer __md5_buffer -+#endif -+ -+#ifdef WORDS_BIGENDIAN -+# define SWAP(n) \ -+ (((n) << 24) | (((n) & 0xff00) << 8) | (((n) >> 8) & 0xff00) | ((n) >> 24)) -+#else -+# define SWAP(n) (n) -+#endif -+ -+#define BLOCKSIZE 4096 -+/* Ensure that BLOCKSIZE is a multiple of 64. */ -+#if BLOCKSIZE % 64 != 0 -+/* FIXME-someday (soon?): use #error instead of this kludge. */ -+"invalid BLOCKSIZE" -+#endif -+ -+/* This array contains the bytes used to pad the buffer to the next -+ 64-byte boundary. (RFC 1321, 3.1: Step 1) */ -+static const unsigned char fillbuf[64] = { 0x80, 0 /* , 0, 0, ... */ }; -+ -+ -+/* Initialize structure containing state of computation. -+ (RFC 1321, 3.3: Step 3) */ -+void -+md5_init_ctx (struct md5_ctx *ctx) -+{ -+ ctx->A = 0x67452301; -+ ctx->B = 0xefcdab89; -+ ctx->C = 0x98badcfe; -+ ctx->D = 0x10325476; -+ -+ ctx->total[0] = ctx->total[1] = 0; -+ ctx->buflen = 0; -+} -+ -+/* Put result from CTX in first 16 bytes following RESBUF. The result -+ must be in little endian byte order. -+ -+ IMPORTANT: On some systems it is required that RESBUF is correctly -+ aligned for a 32 bits value. */ -+void * -+md5_read_ctx (const struct md5_ctx *ctx, void *resbuf) -+{ -+ ((md5_uint32 *) resbuf)[0] = SWAP (ctx->A); -+ ((md5_uint32 *) resbuf)[1] = SWAP (ctx->B); -+ ((md5_uint32 *) resbuf)[2] = SWAP (ctx->C); -+ ((md5_uint32 *) resbuf)[3] = SWAP (ctx->D); -+ -+ return resbuf; -+} -+ -+/* Process the remaining bytes in the internal buffer and the usual -+ prolog according to the standard and write the result to RESBUF. -+ -+ IMPORTANT: On some systems it is required that RESBUF is correctly -+ aligned for a 32 bits value. */ -+void * -+md5_finish_ctx (struct md5_ctx *ctx, void *resbuf) -+{ -+ /* Take yet unprocessed bytes into account. */ -+ md5_uint32 bytes = ctx->buflen; -+ size_t pad; -+ -+ /* Now count remaining bytes. */ -+ ctx->total[0] += bytes; -+ if (ctx->total[0] < bytes) -+ ++ctx->total[1]; -+ -+ pad = bytes >= 56 ? 64 + 56 - bytes : 56 - bytes; -+ memcpy (&ctx->buffer[bytes], fillbuf, pad); -+ -+ /* Put the 64-bit file length in *bits* at the end of the buffer. */ -+ *(md5_uint32 *) &ctx->buffer[bytes + pad] = SWAP (ctx->total[0] << 3); -+ *(md5_uint32 *) &ctx->buffer[bytes + pad + 4] = SWAP ((ctx->total[1] << 3) | -+ (ctx->total[0] >> 29)); -+ -+ /* Process last bytes. */ -+ md5_process_block (ctx->buffer, bytes + pad + 8, ctx); -+ -+ return md5_read_ctx (ctx, resbuf); -+} -+ -+/* Compute MD5 message digest for bytes read from STREAM. The -+ resulting message digest number will be written into the 16 bytes -+ beginning at RESBLOCK. */ -+int -+md5_stream (FILE *stream, void *resblock) -+{ -+ struct md5_ctx ctx; -+ char buffer[BLOCKSIZE + 72]; -+ size_t sum; -+ -+ /* Initialize the computation context. */ -+ md5_init_ctx (&ctx); -+ -+ /* Iterate over full file contents. */ -+ while (1) -+ { -+ /* We read the file in blocks of BLOCKSIZE bytes. One call of the -+ computation function processes the whole buffer so that with the -+ next round of the loop another block can be read. */ -+ size_t n; -+ sum = 0; -+ -+ /* Read block. Take care for partial reads. */ -+ while (1) -+ { -+ n = fread (buffer + sum, 1, BLOCKSIZE - sum, stream); -+ -+ sum += n; -+ -+ if (sum == BLOCKSIZE) -+ break; -+ -+ if (n == 0) -+ { -+ /* Check for the error flag IFF N == 0, so that we don't -+ exit the loop after a partial read due to e.g., EAGAIN -+ or EWOULDBLOCK. */ -+ if (ferror (stream)) -+ return 1; -+ goto process_partial_block; -+ } -+ -+ /* We've read at least one byte, so ignore errors. But always -+ check for EOF, since feof may be true even though N > 0. -+ Otherwise, we could end up calling fread after EOF. */ -+ if (feof (stream)) -+ goto process_partial_block; -+ } -+ -+ /* Process buffer with BLOCKSIZE bytes. Note that -+ BLOCKSIZE % 64 == 0 -+ */ -+ md5_process_block (buffer, BLOCKSIZE, &ctx); -+ } -+ -+ process_partial_block:; -+ -+ /* Process any remaining bytes. */ -+ if (sum > 0) -+ md5_process_bytes (buffer, sum, &ctx); -+ -+ /* Construct result in desired memory. */ -+ md5_finish_ctx (&ctx, resblock); -+ return 0; -+} -+ -+/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The -+ result is always in little endian byte order, so that a byte-wise -+ output yields to the wanted ASCII representation of the message -+ digest. */ -+void * -+md5_buffer (const char *buffer, size_t len, void *resblock) -+{ -+ struct md5_ctx ctx; -+ -+ /* Initialize the computation context. */ -+ md5_init_ctx (&ctx); -+ -+ /* Process whole buffer but last len % 64 bytes. */ -+ md5_process_bytes (buffer, len, &ctx); -+ -+ /* Put result in desired memory area. */ -+ return md5_finish_ctx (&ctx, resblock); -+} -+ -+ -+void -+md5_process_bytes ( const void *buffer, size_t len, struct md5_ctx *ctx) -+{ -+ /* When we already have some bits in our internal buffer concatenate -+ both inputs first. */ -+ if (ctx->buflen != 0) -+ { -+ size_t left_over = ctx->buflen; -+ size_t add = 128 - left_over > len ? len : 128 - left_over; -+ -+ memcpy (&ctx->buffer[left_over], buffer, add); -+ ctx->buflen += add; -+ -+ if (ctx->buflen > 64) -+ { -+ md5_process_block (ctx->buffer, ctx->buflen & ~63, ctx); -+ -+ ctx->buflen &= 63; -+ /* The regions in the following copy operation cannot overlap. */ -+ memcpy (ctx->buffer, &ctx->buffer[(left_over + add) & ~63], -+ ctx->buflen); -+ } -+ -+ buffer = (const char *) buffer + add; -+ len -= add; -+ } -+ -+ /* Process available complete blocks. */ -+ if (len >= 64) -+ { -+#if !_STRING_ARCH_unaligned -+/* To check alignment gcc has an appropriate operator. Other -+ compilers don't. */ -+# if __GNUC__ >= 2 -+# define UNALIGNED_P(p) (((md5_uintptr) p) % __alignof__ (md5_uint32) != 0) -+# else -+# define UNALIGNED_P(p) (((md5_uintptr) p) % sizeof (md5_uint32) != 0) -+# endif -+ if (UNALIGNED_P (buffer)) -+ while (len > 64) -+ { -+ memcpy (ctx->buffer, buffer, 64); -+ md5_process_block (ctx->buffer, 64, ctx); -+ buffer = (const char *) buffer + 64; -+ len -= 64; -+ } -+ else -+#endif -+ { -+ md5_process_block (buffer, len & ~63, ctx); -+ buffer = (const char *) buffer + (len & ~63); -+ len &= 63; -+ } -+ } -+ -+ /* Move remaining bytes in internal buffer. */ -+ if (len > 0) -+ { -+ size_t left_over = ctx->buflen; -+ -+ memcpy (&ctx->buffer[left_over], buffer, len); -+ left_over += len; -+ if (left_over >= 64) -+ { -+ md5_process_block (ctx->buffer, 64, ctx); -+ left_over -= 64; -+ memcpy (ctx->buffer, &ctx->buffer[64], left_over); -+ } -+ ctx->buflen = left_over; -+ } -+} -+ -+ -+/* These are the four functions used in the four steps of the MD5 algorithm -+ and defined in the RFC 1321. The first function is a little bit optimized -+ (as found in Colin Plumbs public domain implementation). */ -+/* #define FF(b, c, d) ((b & c) | (~b & d)) */ -+#define FF(b, c, d) (d ^ (b & (c ^ d))) -+#define FG(b, c, d) FF (d, b, c) -+#define FH(b, c, d) (b ^ c ^ d) -+#define FI(b, c, d) (c ^ (b | ~d)) -+ -+/* Process LEN bytes of BUFFER, accumulating context into CTX. -+ It is assumed that LEN % 64 == 0. */ -+ -+void -+md5_process_block (const void *buffer, size_t len, struct md5_ctx *ctx) -+{ -+ md5_uint32 correct_words[16]; -+ const md5_uint32 *words = (const md5_uint32 *) buffer; -+ size_t nwords = len / sizeof (md5_uint32); -+ const md5_uint32 *endp = words + nwords; -+ md5_uint32 A = ctx->A; -+ md5_uint32 B = ctx->B; -+ md5_uint32 C = ctx->C; -+ md5_uint32 D = ctx->D; -+ -+ /* First increment the byte count. RFC 1321 specifies the possible -+ length of the file up to 2^64 bits. Here we only compute the -+ number of bytes. Do a double word increment. */ -+ ctx->total[0] += len; -+ if (ctx->total[0] < len) -+ ++ctx->total[1]; -+ -+ /* Process all bytes in the buffer with 64 bytes in each round of -+ the loop. */ -+ while (words < endp) -+ { -+ md5_uint32 *cwp = correct_words; -+ md5_uint32 A_save = A; -+ md5_uint32 B_save = B; -+ md5_uint32 C_save = C; -+ md5_uint32 D_save = D; -+ -+ /* First round: using the given function, the context and a constant -+ the next context is computed. Because the algorithms processing -+ unit is a 32-bit word and it is determined to work on words in -+ little endian byte order we perhaps have to change the byte order -+ before the computation. To reduce the work for the next steps -+ we store the swapped words in the array CORRECT_WORDS. */ -+ -+#define OP(a, b, c, d, s, T) \ -+ do \ -+ { \ -+ a += FF (b, c, d) + (*cwp++ = SWAP (*words)) + T; \ -+ ++words; \ -+ a = rol (a, s); \ -+ a += b; \ -+ } \ -+ while (0) -+ -+ /* Before we start, one word to the strange constants. -+ They are defined in RFC 1321 as -+ -+ T[i] = (int) (4294967296.0 * fabs (sin (i))), i=1..64, or -+ perl -e 'foreach(1..64){printf "0x%08x\n", int (4294967296 * abs (sin $_))}' -+ */ -+ -+ /* Round 1. */ -+ OP (A, B, C, D, 7, 0xd76aa478); -+ OP (D, A, B, C, 12, 0xe8c7b756); -+ OP (C, D, A, B, 17, 0x242070db); -+ OP (B, C, D, A, 22, 0xc1bdceee); -+ OP (A, B, C, D, 7, 0xf57c0faf); -+ OP (D, A, B, C, 12, 0x4787c62a); -+ OP (C, D, A, B, 17, 0xa8304613); -+ OP (B, C, D, A, 22, 0xfd469501); -+ OP (A, B, C, D, 7, 0x698098d8); -+ OP (D, A, B, C, 12, 0x8b44f7af); -+ OP (C, D, A, B, 17, 0xffff5bb1); -+ OP (B, C, D, A, 22, 0x895cd7be); -+ OP (A, B, C, D, 7, 0x6b901122); -+ OP (D, A, B, C, 12, 0xfd987193); -+ OP (C, D, A, B, 17, 0xa679438e); -+ OP (B, C, D, A, 22, 0x49b40821); -+ -+ /* For the second to fourth round we have the possibly swapped words -+ in CORRECT_WORDS. Redefine the macro to take an additional first -+ argument specifying the function to use. */ -+#undef OP -+#define OP(f, a, b, c, d, k, s, T) \ -+ do \ -+ { \ -+ a += f (b, c, d) + correct_words[k] + T; \ -+ a = rol (a, s); \ -+ a += b; \ -+ } \ -+ while (0) -+ -+ /* Round 2. */ -+ OP (FG, A, B, C, D, 1, 5, 0xf61e2562); -+ OP (FG, D, A, B, C, 6, 9, 0xc040b340); -+ OP (FG, C, D, A, B, 11, 14, 0x265e5a51); -+ OP (FG, B, C, D, A, 0, 20, 0xe9b6c7aa); -+ OP (FG, A, B, C, D, 5, 5, 0xd62f105d); -+ OP (FG, D, A, B, C, 10, 9, 0x02441453); -+ OP (FG, C, D, A, B, 15, 14, 0xd8a1e681); -+ OP (FG, B, C, D, A, 4, 20, 0xe7d3fbc8); -+ OP (FG, A, B, C, D, 9, 5, 0x21e1cde6); -+ OP (FG, D, A, B, C, 14, 9, 0xc33707d6); -+ OP (FG, C, D, A, B, 3, 14, 0xf4d50d87); -+ OP (FG, B, C, D, A, 8, 20, 0x455a14ed); -+ OP (FG, A, B, C, D, 13, 5, 0xa9e3e905); -+ OP (FG, D, A, B, C, 2, 9, 0xfcefa3f8); -+ OP (FG, C, D, A, B, 7, 14, 0x676f02d9); -+ OP (FG, B, C, D, A, 12, 20, 0x8d2a4c8a); -+ -+ /* Round 3. */ -+ OP (FH, A, B, C, D, 5, 4, 0xfffa3942); -+ OP (FH, D, A, B, C, 8, 11, 0x8771f681); -+ OP (FH, C, D, A, B, 11, 16, 0x6d9d6122); -+ OP (FH, B, C, D, A, 14, 23, 0xfde5380c); -+ OP (FH, A, B, C, D, 1, 4, 0xa4beea44); -+ OP (FH, D, A, B, C, 4, 11, 0x4bdecfa9); -+ OP (FH, C, D, A, B, 7, 16, 0xf6bb4b60); -+ OP (FH, B, C, D, A, 10, 23, 0xbebfbc70); -+ OP (FH, A, B, C, D, 13, 4, 0x289b7ec6); -+ OP (FH, D, A, B, C, 0, 11, 0xeaa127fa); -+ OP (FH, C, D, A, B, 3, 16, 0xd4ef3085); -+ OP (FH, B, C, D, A, 6, 23, 0x04881d05); -+ OP (FH, A, B, C, D, 9, 4, 0xd9d4d039); -+ OP (FH, D, A, B, C, 12, 11, 0xe6db99e5); -+ OP (FH, C, D, A, B, 15, 16, 0x1fa27cf8); -+ OP (FH, B, C, D, A, 2, 23, 0xc4ac5665); -+ -+ /* Round 4. */ -+ OP (FI, A, B, C, D, 0, 6, 0xf4292244); -+ OP (FI, D, A, B, C, 7, 10, 0x432aff97); -+ OP (FI, C, D, A, B, 14, 15, 0xab9423a7); -+ OP (FI, B, C, D, A, 5, 21, 0xfc93a039); -+ OP (FI, A, B, C, D, 12, 6, 0x655b59c3); -+ OP (FI, D, A, B, C, 3, 10, 0x8f0ccc92); -+ OP (FI, C, D, A, B, 10, 15, 0xffeff47d); -+ OP (FI, B, C, D, A, 1, 21, 0x85845dd1); -+ OP (FI, A, B, C, D, 8, 6, 0x6fa87e4f); -+ OP (FI, D, A, B, C, 15, 10, 0xfe2ce6e0); -+ OP (FI, C, D, A, B, 6, 15, 0xa3014314); -+ OP (FI, B, C, D, A, 13, 21, 0x4e0811a1); -+ OP (FI, A, B, C, D, 4, 6, 0xf7537e82); -+ OP (FI, D, A, B, C, 11, 10, 0xbd3af235); -+ OP (FI, C, D, A, B, 2, 15, 0x2ad7d2bb); -+ OP (FI, B, C, D, A, 9, 21, 0xeb86d391); -+ -+ /* Add the starting values of the context. */ -+ A += A_save; -+ B += B_save; -+ C += C_save; -+ D += D_save; -+ } -+ -+ /* Put checksum in context given as argument. */ -+ ctx->A = A; -+ ctx->B = B; -+ ctx->C = C; -+ ctx->D = D; -+} -diff --git a/libclamav/libmspack-0.4alpha/test/md5.h b/libclamav/libmspack-0.4alpha/test/md5.h -new file mode 100644 -index 000000000000..0d22a70a2ccd ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/md5.h -@@ -0,0 +1,165 @@ -+/* md5.h - Declaration of functions and data types used for MD5 sum -+ computing library functions. -+ Copyright (C) 1995, 1996, 1999 Free Software Foundation, Inc. -+ NOTE: The canonical source of this file is maintained with the GNU C -+ Library. Bugs can be reported to bug-glibc@prep.ai.mit.edu. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU General Public License as published by the -+ Free Software Foundation; either version 2, or (at your option) any -+ later version. -+ -+ This program is distributed in the hope that it will be useful, -+ but WITHOUT ANY WARRANTY; without even the implied warranty of -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -+ GNU General Public License for more details. -+ -+ You should have received a copy of the GNU General Public License -+ along with this program; if not, write to the Free Software Foundation, -+ Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ -+ -+#ifndef _MD5_H -+#define _MD5_H 1 -+ -+#include -+ -+#if defined HAVE_LIMITS_H || _LIBC -+# include -+#endif -+ -+/* The following contortions are an attempt to use the C preprocessor -+ to determine an unsigned integral type that is 32 bits wide. An -+ alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but -+ doing that would require that the configure script compile and *run* -+ the resulting executable. Locally running cross-compiled executables -+ is usually not possible. */ -+ -+#ifdef _LIBC -+# include -+typedef uint32_t md5_uint32; -+typedef uintptr_t md5_uintptr; -+#else -+# if defined __STDC__ && __STDC__ -+# define UINT_MAX_32_BITS 4294967295U -+# else -+# define UINT_MAX_32_BITS 0xFFFFFFFF -+# endif -+ -+/* If UINT_MAX isn't defined, assume it's a 32-bit type. -+ This should be valid for all systems GNU cares about because -+ that doesn't include 16-bit systems, and only modern systems -+ (that certainly have ) have 64+-bit integral types. */ -+ -+# ifndef UINT_MAX -+# define UINT_MAX UINT_MAX_32_BITS -+# endif -+ -+# if UINT_MAX == UINT_MAX_32_BITS -+ typedef unsigned int md5_uint32; -+# else -+# if USHRT_MAX == UINT_MAX_32_BITS -+ typedef unsigned short md5_uint32; -+# else -+# if ULONG_MAX == UINT_MAX_32_BITS -+ typedef unsigned long md5_uint32; -+# else -+ /* The following line is intended to evoke an error. -+ Using #error is not portable enough. */ -+ "Cannot determine unsigned 32-bit data type." -+# endif -+# endif -+# endif -+/* We have to make a guess about the integer type equivalent in size -+ to pointers which should always be correct. */ -+typedef unsigned long int md5_uintptr; -+#endif -+ -+#undef __P -+#if defined (__STDC__) && __STDC__ -+#define __P(x) x -+#else -+#define __P(x) () -+#endif -+ -+/* Structure to save state of computation between the single steps. */ -+struct md5_ctx -+{ -+ md5_uint32 A; -+ md5_uint32 B; -+ md5_uint32 C; -+ md5_uint32 D; -+ -+ md5_uint32 total[2]; -+ md5_uint32 buflen; -+ char buffer[128]; -+}; -+ -+/* -+ * The following three functions are build up the low level used in -+ * the functions `md5_stream' and `md5_buffer'. -+ */ -+ -+/* Initialize structure containing state of computation. -+ (RFC 1321, 3.3: Step 3) */ -+extern void md5_init_ctx __P ((struct md5_ctx *ctx)); -+ -+/* Starting with the result of former calls of this function (or the -+ initialization function update the context for the next LEN bytes -+ starting at BUFFER. -+ It is necessary that LEN is a multiple of 64!!! */ -+extern void md5_process_block __P ((const void *buffer, size_t len, -+ struct md5_ctx *ctx)); -+ -+/* Starting with the result of former calls of this function (or the -+ initialization function update the context for the next LEN bytes -+ starting at BUFFER. -+ It is NOT required that LEN is a multiple of 64. */ -+extern void md5_process_bytes __P ((const void *buffer, size_t len, -+ struct md5_ctx *ctx)); -+ -+/* Process the remaining bytes in the buffer and put result from CTX -+ in first 16 bytes following RESBUF. The result is always in little -+ endian byte order, so that a byte-wise output yields to the wanted -+ ASCII representation of the message digest. -+ -+ IMPORTANT: On some systems it is required that RESBUF be correctly -+ aligned for a 32 bits value. */ -+extern void *md5_finish_ctx __P ((struct md5_ctx *ctx, void *resbuf)); -+ -+ -+/* Put result from CTX in first 16 bytes following RESBUF. The result is -+ always in little endian byte order, so that a byte-wise output yields -+ to the wanted ASCII representation of the message digest. -+ -+ IMPORTANT: On some systems it is required that RESBUF is correctly -+ aligned for a 32 bits value. */ -+extern void *md5_read_ctx __P ((const struct md5_ctx *ctx, void *resbuf)); -+ -+ -+/* Compute MD5 message digest for bytes read from STREAM. The -+ resulting message digest number will be written into the 16 bytes -+ beginning at RESBLOCK. */ -+extern int md5_stream __P ((FILE *stream, void *resblock)); -+ -+/* Compute MD5 message digest for LEN bytes beginning at BUFFER. The -+ result is always in little endian byte order, so that a byte-wise -+ output yields to the wanted ASCII representation of the message -+ digest. */ -+extern void *md5_buffer __P ((const char *buffer, size_t len, void *resblock)); -+ -+/* The following is from gnupg-1.0.2's cipher/bithelp.h. */ -+/* Rotate a 32 bit integer by n bytes */ -+#if defined __GNUC__ && defined __i386__ -+static inline md5_uint32 -+rol(md5_uint32 x, int n) -+{ -+ __asm__("roll %%cl,%0" -+ :"=r" (x) -+ :"0" (x),"c" (n)); -+ return x; -+} -+#else -+# define rol(x,n) ( ((x) << (n)) | ((x) >> (32-(n))) ) -+#endif -+ -+#endif -diff --git a/libclamav/libmspack-0.4alpha/test/md5_fh.h b/libclamav/libmspack-0.4alpha/test/md5_fh.h -new file mode 100644 -index 000000000000..385426e2e81f ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/md5_fh.h -@@ -0,0 +1,123 @@ -+/* an mspack_system implementation which reads one or more files, and -+ * only writes to one file; the file is not actually written to, but -+ * an MD5 sum is computed and is available once the written-to file is -+ * closed. You can use anything for the written-to filename, NULL is -+ * probably the most obvious. The code is not multithreadable. -+ */ -+ -+#include -+#include -+#include -+ -+struct md5_ctx md5_context; -+char md5_string[33]; -+ -+struct mspack_file_p { -+ FILE *fh; -+}; -+ -+static struct mspack_file *m_open(struct mspack_system *self, const char *filename, int mode) { -+ struct mspack_file_p *fh; -+ if (mode != MSPACK_SYS_OPEN_WRITE && -+ mode != MSPACK_SYS_OPEN_READ) return NULL; -+ -+ if ((fh = (struct mspack_file_p *) malloc(sizeof(struct mspack_file_p)))) { -+ if (mode == MSPACK_SYS_OPEN_WRITE) { -+ fh->fh = NULL; -+ md5_init_ctx(&md5_context); -+ return (struct mspack_file *) fh; -+ } -+ else { -+ if ((fh->fh = fopen(filename, "rb"))) -+ return (struct mspack_file *) fh; -+ } -+ /* error - free file handle and return NULL */ -+ free(fh); -+ } -+ return NULL; -+} -+ -+static void m_close(struct mspack_file *file) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+ if (self) { -+ if (self->fh) fclose(self->fh); -+ else { -+ unsigned char md5[16]; -+ md5_finish_ctx(&md5_context, (void *) &md5); -+ snprintf(md5_string, sizeof(md5_string), -+ "%02x%02x%02x%02x%02x%02x%02x%02x" -+ "%02x%02x%02x%02x%02x%02x%02x%02x", -+ md5[0], md5[1], md5[2], md5[3], -+ md5[4], md5[5], md5[6], md5[7], -+ md5[8], md5[9], md5[10], md5[11], -+ md5[12], md5[13], md5[14], md5[15]); -+ } -+ free(self); -+ } -+} -+ -+static int m_read(struct mspack_file *file, void *buffer, int bytes) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+ if (self && self->fh && buffer && bytes >= 0) { -+ size_t count = fread(buffer, 1, bytes, self->fh); -+ if (!ferror(self->fh)) return (int) count; -+ } -+ return -1; -+} -+ -+static int m_write(struct mspack_file *file, void *buffer, int bytes) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+ if (!self || self->fh || !buffer || bytes < 0) return -1; -+ md5_process_bytes(buffer, bytes, &md5_context); -+ return bytes; -+} -+ -+static int m_seek(struct mspack_file *file, off_t offset, int mode) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+ if (self && self->fh) { -+ switch (mode) { -+ case MSPACK_SYS_SEEK_START: mode = SEEK_SET; break; -+ case MSPACK_SYS_SEEK_CUR: mode = SEEK_CUR; break; -+ case MSPACK_SYS_SEEK_END: mode = SEEK_END; break; -+ default: return -1; -+ } -+#if HAVE_FSEEKO -+ return fseeko(self->fh, offset, mode); -+#else -+ return fseek(self->fh, offset, mode); -+#endif -+ } -+ return -1; -+} -+ -+static off_t m_tell(struct mspack_file *file) { -+ struct mspack_file_p *self = (struct mspack_file_p *) file; -+#if HAVE_FSEEKO -+ return (self && self->fh) ? (off_t) ftello(self->fh) : 0; -+#else -+ return (self && self->fh) ? (off_t) ftell(self->fh) : 0; -+#endif -+} -+ -+static void m_msg(struct mspack_file *file, const char *format, ...) { -+ va_list ap; -+ va_start(ap, format); -+ vfprintf(stderr, format, ap); -+ va_end(ap); -+ fputc((int) '\n', stderr); -+ fflush(stderr); -+} -+static void *m_alloc(struct mspack_system *self, size_t bytes) { -+ return malloc(bytes); -+} -+static void m_free(void *buffer) { -+ free(buffer); -+} -+static void m_copy(void *src, void *dest, size_t bytes) { -+ memcpy(dest, src, bytes); -+} -+ -+static struct mspack_system read_files_write_md5 = { -+ &m_open, &m_close, &m_read, &m_write, &m_seek, -+ &m_tell, &m_msg, &m_alloc, &m_free, &m_copy, NULL -+}; -diff --git a/libclamav/libmspack-0.4alpha/test/multifh.c b/libclamav/libmspack-0.4alpha/test/multifh.c -new file mode 100644 -index 000000000000..f7ed758c4da1 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/multifh.c -@@ -0,0 +1,435 @@ -+/* An implementation of the mspack_system interface which can access many -+ * things: -+ * - regular disk files -+ * - already opened stdio FILE* file pointers -+ * - open file descriptors -+ * - blocks of memory -+ */ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+ -+/* definitions */ -+ -+#define MTYPE_DISKFILE (0x01) -+#define MTYPE_STDIOFH (0x02) -+#define MTYPE_FILEDESC (0x03) -+#define MTYPE_MEMORY (0x04) -+ -+struct m_filename { -+ unsigned char type; /* one of MTYPE_DISKFILE, STDIOFH, FILEDESC or MEMORY */ -+ const char *filename; /* the user-friendly printable filename (may be NULL) */ -+ union { -+ const char *diskfile; /* char *filename for MTYPE_DISKFILE */ -+ FILE *stdiofh; /* FILE *existing_fh for MTYPE_STDIOFH */ -+ int filedesc; /* int file_descriptor for MTYPE_FILEDESC */ -+ struct { -+ unsigned char *data; -+ size_t length; -+ } memory; -+ } x; -+}; -+ -+struct m_file { -+ struct m_filename *file; /* pointer back to the m_filename data */ -+ union { -+ FILE *fh; /* only used in DISKFILE, STDIOFH and FILEDESC types */ -+ size_t position; /* only used in MEMORY types */ -+ } x; -+}; -+ -+/* ------------------------------------------------------------------------ */ -+/* mspack_system implementation */ -+ -+static void *m_alloc(struct mspack_system *self, size_t bytes) { -+ return malloc(bytes); -+} -+ -+static void m_free(void *buffer) { -+ free(buffer); -+} -+ -+static void m_copy(void *src, void *dest, size_t bytes) { -+ memcpy(dest, src, bytes); -+} -+ -+/* A message printer that prints to stderr */ -+static void m_msg(struct m_file *file, const char *format, ...) { -+ va_list ap; -+ if (file && file->file && file->file->filename) { -+ fprintf(stderr, "%s: ", file->file->filename); -+ } -+ va_start(ap, format); -+ vfprintf(stderr, format, ap); -+ va_end(ap); -+ fputc((int) '\n', stderr); -+ fflush(stderr); -+} -+ -+ -+static struct m_file *m_open_mem(struct mspack_system *self, -+ struct m_filename *fn, int mode) -+{ -+ struct m_file *fh; -+ -+ /* validate arguments of the filename */ -+ if (!fn->x.memory.data) return NULL; -+ if (!fn->x.memory.length) return NULL; -+ -+ if ((fh = (struct m_file *) m_alloc(self, sizeof(struct m_file)))) { -+ fh->x.position = (mode == MSPACK_SYS_OPEN_APPEND) ? -+ fn->x.memory.length : 0; -+ fh->file = fn; -+ } -+ return fh; -+} -+ -+static struct m_file *m_open_file(struct mspack_system *self, -+ struct m_filename *fn, int mode) -+{ -+ struct m_file *fh; -+ const char *fmode; -+ int fd; -+ -+ switch (mode) { -+ case MSPACK_SYS_OPEN_READ: fmode = "rb"; break; -+ case MSPACK_SYS_OPEN_WRITE: fmode = "wb"; break; -+ case MSPACK_SYS_OPEN_UPDATE: fmode = "r+b"; break; -+ case MSPACK_SYS_OPEN_APPEND: fmode = "ab"; break; -+ default: return NULL; -+ } -+ -+ /* validate the arguments in the provided filename */ -+ switch (fn->type) { -+ case MTYPE_DISKFILE: if (!fn->x.diskfile) return NULL; break; -+ case MTYPE_STDIOFH: if (!fn->x.stdiofh) return NULL; break; -+ case MTYPE_FILEDESC: if (fn->x.filedesc < 0) return NULL; break; -+ } -+ -+ /* allocate memory for the file handle */ -+ if (!(fh = (struct m_file *) m_alloc(self, sizeof(struct m_file)))) return NULL; -+ -+ /* open or duplicate the filehandle */ -+ switch (fn->type) { -+ case MTYPE_DISKFILE: -+ fh->x.fh = fopen(fn->x.diskfile, fmode); -+ break; -+ -+ case MTYPE_STDIOFH: -+ fd = fileno(fn->x.stdiofh); -+ fh->x.fh = (fd >= 0) ? fdopen(fd, fmode) : NULL; -+ break; -+ -+ case MTYPE_FILEDESC: -+ fh->x.fh = fdopen(fn->x.filedesc, fmode); -+ break; -+ } -+ -+ /* validate the new stdio filehandle */ -+ if (fh->x.fh) { -+ fh->file = fn; -+ } -+ else { -+ free(fh); -+ fh = NULL; -+ } -+ -+ return fh; -+} -+ -+static struct m_file *m_open(struct mspack_system *self, -+ struct m_filename *fn, int mode) -+{ -+ if (!self || !fn) return NULL; -+ -+ switch (fn->type) { -+ case MTYPE_DISKFILE: -+ case MTYPE_STDIOFH: -+ case MTYPE_FILEDESC: -+ return m_open_file(self, fn, mode); -+ -+ case MTYPE_MEMORY: -+ return m_open_mem(self, fn, mode); -+ } -+ return NULL; -+} -+ -+static void m_close(struct m_file *fh) { -+ if (!fh || !fh->file) return; -+ if (fh->file->type != MTYPE_MEMORY) fclose(fh->x.fh); -+ m_free(fh); -+} -+ -+ -+static int m_read(struct m_file *fh, void *buffer, int bytes) { -+ if (!fh || !fh->file || !buffer || bytes < 0) return -1; -+ -+ if (fh->file->type == MTYPE_MEMORY) { -+ int count = fh->file->x.memory.length - fh->x.position; -+ if (count > bytes) count = bytes; -+ if (count > 0) { -+ m_copy(&fh->file->x.memory.data[fh->x.position], buffer, (size_t) count); -+ } -+ fh->x.position += count; -+ return count; -+ } -+ else { -+ size_t count = fread(buffer, 1, (size_t) bytes, fh->x.fh); -+ if (!ferror(fh->x.fh)) return (int) count; -+ } -+ return -1; -+} -+ -+ -+static int m_write(struct m_file *fh, void *buffer, int bytes) { -+ if (!fh || !fh->file || !buffer || bytes < 0) return -1; -+ -+ if (fh->file->type == MTYPE_MEMORY) { -+ int count = fh->file->x.memory.length - fh->x.position; -+ if (count > bytes) count = bytes; -+ if (count > 0) { -+ m_copy(buffer, &fh->file->x.memory.data[fh->x.position], (size_t) count); -+ } -+ fh->x.position += count; -+ return count; -+ } -+ else { -+ size_t count = fwrite(buffer, 1, (size_t) bytes, fh->x.fh); -+ if (!ferror(fh->x.fh)) return (int) count; -+ } -+ return -1; -+} -+ -+ -+static int m_seek(struct m_file *fh, off_t offset, int mode) { -+ if (!fh || !fh->file) return 1; -+ -+ if (fh->file->type == MTYPE_MEMORY) { -+ switch (mode) { -+ case MSPACK_SYS_SEEK_START: -+ break; -+ case MSPACK_SYS_SEEK_CUR: -+ offset += (off_t) fh->x.position; -+ break; -+ case MSPACK_SYS_SEEK_END: -+ offset += (off_t) fh->file->x.memory.length; -+ break; -+ default: -+ return 1; -+ } -+ -+ if (offset < 0) return 1; -+ if (offset > (off_t) fh->file->x.memory.length) return 1; -+ fh->x.position = (size_t) offset; -+ return 0; -+ } -+ -+ /* file IO based method */ -+ switch (mode) { -+ case MSPACK_SYS_SEEK_START: mode = SEEK_SET; break; -+ case MSPACK_SYS_SEEK_CUR: mode = SEEK_CUR; break; -+ case MSPACK_SYS_SEEK_END: mode = SEEK_END; break; -+ default: return 1; -+ } -+#if HAVE_FSEEKO -+ return fseeko(fh->x.fh, offset, mode); -+#else -+ return fseek(fh->x.fh, offset, mode); -+#endif -+} -+ -+ -+static off_t m_tell(struct m_file *fh) { -+ if (!fh || !fh->file) return -1; -+ if (fh->file->type == MTYPE_MEMORY) { -+ return (off_t) fh->x.position; -+ } -+#if HAVE_FSEEKO -+ return (off_t) ftello(fh->x.fh); -+#else -+ return (off_t) ftell(fh->x.fh); -+#endif -+} -+ -+ -+static struct mspack_system multi_system = { -+ (struct mspack_file * (*)(struct mspack_system *, const char *, int)) &m_open, -+ (void (*)(struct mspack_file *)) &m_close, -+ (int (*)(struct mspack_file *, void *, int)) &m_read, -+ (int (*)(struct mspack_file *, void *, int)) &m_write, -+ (int (*)(struct mspack_file *, off_t, int)) &m_seek, -+ (off_t (*)(struct mspack_file *)) &m_tell, -+ (void (*)(struct mspack_file *, const char *, ...)) &m_msg, -+ &m_alloc, -+ &m_free, -+ &m_copy, -+ NULL -+}; -+ -+/* ------------------------------------------------------------------------ */ -+/* constructors and destructor */ -+ -+const char *create_filename(const char *filename) { -+ struct m_filename *fn; -+ -+ if (!filename) return NULL; /* filename must not be null */ -+ -+ if ((fn = (struct m_filename *) malloc(sizeof(struct m_filename)))) { -+ fn->type = MTYPE_DISKFILE; -+ fn->filename = filename; /* pretty-printable filename */ -+ fn->x.diskfile = filename; -+ } -+ return (const char *) fn; -+} -+ -+const char *create_filename_from_handle(FILE *fh) { -+ struct m_filename *fn; -+ -+ if (!fh) return NULL; /* file handle must not be null */ -+ -+ if ((fn = (struct m_filename *) malloc(sizeof(struct m_filename)))) { -+ fn->type = MTYPE_STDIOFH; -+ fn->filename = NULL; /* pretty-printable filename */ -+ fn->x.stdiofh = fh; -+ } -+ return (const char *) fn; -+} -+ -+const char *create_filename_from_descriptor(int fd) { -+ struct m_filename *fn; -+ -+ if (fd < 0) return NULL; /* file descriptor must be valid */ -+ -+ if ((fn = (struct m_filename *) malloc(sizeof(struct m_filename)))) { -+ fn->type = MTYPE_FILEDESC; -+ fn->filename = NULL; /* pretty-printable filename */ -+ fn->x.filedesc = fd; -+ } -+ return (const char *) fn; -+} -+ -+const char *create_filename_from_memory(void *data, size_t length) { -+ struct m_filename *fn; -+ -+ if (!data) return NULL; /* data pointer must not be NULL */ -+ if (length == 0) return NULL; /* length must not be zero */ -+ -+ if ((fn = (struct m_filename *) malloc(sizeof(struct m_filename)))) { -+ fn->type = MTYPE_MEMORY; -+ fn->filename = NULL; /* pretty-printable filename */ -+ fn->x.memory.data = (unsigned char *) data; -+ fn->x.memory.length = length; -+ } -+ return (const char *) fn; -+} -+ -+void set_filename_printable_name(const char *filename, const char *name) { -+ struct m_filename *fn = (struct m_filename *) filename; -+ if (!fn) return; -+ /* very basic validation of structure */ -+ if ((fn->type < MTYPE_DISKFILE) || (fn->type > MTYPE_MEMORY)) return; -+ fn->filename = name; -+} -+ -+void free_filename(const char *filename) { -+ free((void *) filename); -+} -+ -+/* ------------------------------------------------------------------------ */ -+/* example of usage with mscab_decompressor */ -+ -+/* a simple cabinet */ -+static unsigned char memory_cab[] = { -+ 0x4D,0x53,0x43,0x46,0x00,0x00,0x00,0x00,0xFD,0x00,0x00,0x00,0x00,0x00,0x00, -+ 0x00,0x2C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x01,0x01,0x00,0x02,0x00, -+ 0x00,0x00,0x22,0x06,0x00,0x00,0x5E,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x4D, -+ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x6C,0x22,0xBA,0x59,0x20,0x00, -+ 0x68,0x65,0x6C,0x6C,0x6F,0x2E,0x63,0x00,0x4A,0x00,0x00,0x00,0x4D,0x00,0x00, -+ 0x00,0x00,0x00,0x6C,0x22,0xE7,0x59,0x20,0x00,0x77,0x65,0x6C,0x63,0x6F,0x6D, -+ 0x65,0x2E,0x63,0x00,0xBD,0x5A,0xA6,0x30,0x97,0x00,0x97,0x00,0x23,0x69,0x6E, -+ 0x63,0x6C,0x75,0x64,0x65,0x20,0x3C,0x73,0x74,0x64,0x69,0x6F,0x2E,0x68,0x3E, -+ 0x0D,0x0A,0x0D,0x0A,0x76,0x6F,0x69,0x64,0x20,0x6D,0x61,0x69,0x6E,0x28,0x76, -+ 0x6F,0x69,0x64,0x29,0x0D,0x0A,0x7B,0x0D,0x0A,0x20,0x20,0x20,0x20,0x70,0x72, -+ 0x69,0x6E,0x74,0x66,0x28,0x22,0x48,0x65,0x6C,0x6C,0x6F,0x2C,0x20,0x77,0x6F, -+ 0x72,0x6C,0x64,0x21,0x5C,0x6E,0x22,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x23, -+ 0x69,0x6E,0x63,0x6C,0x75,0x64,0x65,0x20,0x3C,0x73,0x74,0x64,0x69,0x6F,0x2E, -+ 0x68,0x3E,0x0D,0x0A,0x0D,0x0A,0x76,0x6F,0x69,0x64,0x20,0x6D,0x61,0x69,0x6E, -+ 0x28,0x76,0x6F,0x69,0x64,0x29,0x0D,0x0A,0x7B,0x0D,0x0A,0x20,0x20,0x20,0x20, -+ 0x70,0x72,0x69,0x6E,0x74,0x66,0x28,0x22,0x57,0x65,0x6C,0x63,0x6F,0x6D,0x65, -+ 0x21,0x5C,0x6E,0x22,0x29,0x3B,0x0D,0x0A,0x7D,0x0D,0x0A,0x0D,0x0A -+}; -+ -+int main() { -+ const char *mem_cab, *std_out, *std_err, *example; -+ struct mscab_decompressor *cabd; -+ struct mscabd_cabinet *cab; -+ struct mscabd_file *file; -+ int err; -+ -+ mem_cab = create_filename_from_memory(&memory_cab[0], sizeof(memory_cab)); -+ if (!mem_cab) exit(1); -+ -+ std_out = create_filename_from_descriptor(1); -+ if (!std_out) exit(1); -+ -+ std_err = create_filename_from_handle(stderr); -+ if (!std_err) exit(1); -+ -+ example = create_filename("example.txt"); -+ if (!example) exit(1); -+ -+ set_filename_printable_name(mem_cab, "internal"); -+ set_filename_printable_name(std_out, "stdout"); -+ set_filename_printable_name(std_err, "stderr"); -+ -+ /* if self-test reveals an error */ -+ MSPACK_SYS_SELFTEST(err); -+ if (err) exit(1); -+ -+ /* create a cab decompressor using our custom mspack_system interface */ -+ if ((cabd = mspack_create_cab_decompressor(&multi_system))) { -+ -+ /* open a cab file direct from memory */ -+ if ((cab = cabd->open(cabd, mem_cab))) { -+ -+ /* first file in the cabinet: print it to stdout */ -+ file = cab->files; -+ if (cabd->extract(cabd, file, std_out)) { -+ exit(1); -+ } -+ -+ /* second file in the cabinet: print it to stderr */ -+ file = file->next; -+ if (cabd->extract(cabd, file, std_err)) { -+ exit(1); -+ } -+ /* also write it to "example.txt" */ -+ if (cabd->extract(cabd, file, example)) { -+ exit(1); -+ } -+ cabd->close(cabd, cab); -+ } -+ else { -+ fprintf(stderr, "can't open cabinet (%d)\n", cabd->last_error(cabd)); -+ } -+ mspack_destroy_cab_decompressor(cabd); -+ } -+ else { -+ fprintf(stderr, "can't make decompressor\n"); -+ } -+ -+ free_filename(example); -+ free_filename(std_err); -+ free_filename(std_out); -+ free_filename(mem_cab); -+ -+ return 0; -+ -+} -diff --git a/libclamav/libmspack-0.4alpha/test/oabx.c b/libclamav/libmspack-0.4alpha/test/oabx.c -new file mode 100644 -index 000000000000..53f675c68219 ---- /dev/null -+++ b/libclamav/libmspack-0.4alpha/test/oabx.c -@@ -0,0 +1,41 @@ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+ -+#include -+ -+int main(int argc, char *argv[]) { -+ struct msoab_decompressor *oabd; -+ int err; -+ -+ setbuf(stdout, NULL); -+ setbuf(stderr, NULL); -+ -+ MSPACK_SYS_SELFTEST(err); -+ if (err) return 0; -+ -+ if ((oabd = mspack_create_oab_decompressor(NULL))) { -+ if (argc == 3) { -+ err = oabd->decompress(oabd, argv[1], argv[2]); -+ if (err) fprintf(stderr, "%s -> %s: %s\n", argv[1], argv[2], error_msg(err)); -+ } -+ else if (argc == 4) { -+ err = oabd->decompress_incremental(oabd, argv[2], argv[1], argv[3]); -+ if (err) fprintf(stderr, "%s + %s -> %s: %s\n", argv[1], argv[2], argv[3], error_msg(err)); -+ } -+ else { -+ fprintf(stderr, "Usage: %s \n", *argv); -+ fprintf(stderr, " or %s \n", *argv); -+ } -+ mspack_destroy_oab_decompressor(oabd); -+ } -+ else { -+ fprintf(stderr, "%s: can't make OAB decompressor\n", *argv); -+ } -+ return 0; -+} diff --git a/recipes-security/clamav/clamav-0.98.5/0012-allow-to-use-internal-libmspack-if-the-external-is-n.patch b/recipes-security/clamav/clamav-0.98.5/0012-allow-to-use-internal-libmspack-if-the-external-is-n.patch deleted file mode 100644 index 798aeba..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0012-allow-to-use-internal-libmspack-if-the-external-is-n.patch +++ /dev/null @@ -1,106 +0,0 @@ -From 2bb998ed68841356499fe5c5cde875e87563572c Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior -Date: Wed, 30 Jul 2014 21:59:17 +0200 -Subject: allow to use internal libmspack if the external is not available - -Signed-off-by: Sebastian Andrzej Siewior ---- - configure.ac | 16 ++++++++++++++-- - libclamav/Makefile.am | 30 +++++++++++++++++++++++++++++- - 2 files changed, 43 insertions(+), 3 deletions(-) - -diff --git a/configure.ac b/configure.ac -index 02caad29410a..5abe018a00b0 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -131,6 +131,18 @@ m4_include([m4/reorganization/libs/curl.m4]) - - m4_include([m4/reorganization/substitutions.m4]) - -+PKG_CHECK_MODULES([LIBMSPACK], [libmspack], -+ use_internal_mspack=no, use_internal_mspack=yes) -+ -+AM_CONDITIONAL([USE_INTERNAL_MSPACK], test "x$use_internal_mspack" = "xyes") -+ -+if test "x$use_internal_mspack" = "xyes"; then -+ mspack_msg="Internal" -+ AC_CONFIG_SUBDIRS([libclamav/libmspack-0.4alpha]) -+else -+ mspack_msg="External, $LIBMSPACK_CFLAGS $LIBMSPACK_LIBS" -+fi -+ - AM_CONDITIONAL([ENABLE_CLAMSUBMIT], [test "$have_curl" = "yes"]) - - AC_CONFIG_FILES([ -@@ -178,8 +190,6 @@ fi - AM_CONDITIONAL([ENABLE_LLVM], - [test "$subdirfailed" != "yes" && test "$enable_llvm" != "no"]) - --PKG_CHECK_MODULES([LIBMSPACK], [libmspack]) -- - no_recursion="yes"; - AC_OUTPUT([libclamav/Makefile]) - -@@ -236,6 +246,8 @@ if test "x$PCRE_HOME" = "x"; then - else - CL_MSG_STATUS([pcre ],[$PCRE_HOME],[$have_pcre]) - fi -+CL_MSG_STATUS([preclass ],[$LIBJSON_HOME],[$have_json]) -+CL_MSG_STATUS([libmspack ],[yes],[$mspack_msg]) - if test "x$XML_LIBS" = "x"; then - CL_MSG_STATUS([dmg and xar ],[no],[]) - else -diff --git a/libclamav/Makefile.am b/libclamav/Makefile.am -index 538e83dcdd03..6d2cf920d6e2 100644 ---- a/libclamav/Makefile.am -+++ b/libclamav/Makefile.am -@@ -122,11 +122,12 @@ libclamav_internal_utils_nothreads_la_SOURCES=str.c\ - libclamav_internal_utils_nothreads_la_LDFLAGS=-static @SSL_LDFLAGS@ @JSON_LDFLAGS@ - libclamav_internal_utils_nothreads_la_CFLAGS=$(AM_CFLAGS) -DCL_NOTHREADS @SSL_CPPFLAGS@ @JSON_CPPFLAGS@ - libclamav_internal_utils_nothreads_la_LIBADD=@SSL_LIBS@ @JSON_LIBS@ -+SUBDIRS= - - if ENABLE_LLVM - LLVMLIBADD=c++/libclamavcxx.la -lstdc++ -lm - LLVMDEP=c++/libclamavcxx.la --SUBDIRS=c++ -+SUBDIRS+=c++ - else - LLVMLIBADD=libclamav_nocxx.la - LLVMDEP=libclamav_nocxx.la -@@ -147,8 +148,35 @@ if VERSIONSCRIPT - libclamav_la_LDFLAGS += -Wl,@VERSIONSCRIPTFLAG@,@top_srcdir@/libclamav/libclamav.map - endif - -+if USE_INTERNAL_MSPACK -+SUBDIRS += libmspack-0.4alpha -+libclamav_la_CFLAGS += -I@top_srcdir@/libclamav/libmspack-0.4alpha/mspack -+libclamav_la_LIBADD += @top_builddir@/libclamav/libmspack-0.4alpha/.libs/cabc.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/system.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/kwajd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/hlpc.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/chmd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/qtmd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/litc.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/oabc.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/lzxd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/litd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/crc32.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/lzssd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/kwajc.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/cabd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/szddd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/lzxc.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/mszipd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/szddc.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/oabd.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/chmc.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/mszipc.o \ -+ @top_builddir@/libclamav/libmspack-0.4alpha/.libs/hlpd.o -+else - libclamav_la_CFLAGS += $(LIBMSPACK_CFLAGS) - libclamav_la_LDFLAGS += $(LIBMSPACK_LIBS) -+endif - - include_HEADERS = clamav.h - diff --git a/recipes-security/clamav/clamav-0.98.5/0013-fix-autoreconf-with-embedded-libmspack.patch b/recipes-security/clamav/clamav-0.98.5/0013-fix-autoreconf-with-embedded-libmspack.patch deleted file mode 100644 index f7175d3..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0013-fix-autoreconf-with-embedded-libmspack.patch +++ /dev/null @@ -1,27 +0,0 @@ -From b1ab1a88f38c9d9cea2433dac33b8ecb31b3c799 Mon Sep 17 00:00:00 2001 -From: Andreas Cadhalpun -Date: Mon, 22 Sep 2014 21:50:05 +0200 -Subject: fix autoreconf with embedded libmspack - ---- - libclamav/libmspack-0.4alpha/NEWS | 1 + - libclamav/libmspack-0.4alpha/configure.ac | 2 +- - 2 files changed, 2 insertions(+), 1 deletion(-) - -diff --git a/libclamav/libmspack-0.4alpha/NEWS b/libclamav/libmspack-0.4alpha/NEWS -index e69de29bb2d1..8d1c8b69c3fc 100644 ---- a/libclamav/libmspack-0.4alpha/NEWS -+++ b/libclamav/libmspack-0.4alpha/NEWS -@@ -0,0 +1 @@ -+ -diff --git a/libclamav/libmspack-0.4alpha/configure.ac b/libclamav/libmspack-0.4alpha/configure.ac -index 55fb6ce5ee9d..1fc98577f152 100644 ---- a/libclamav/libmspack-0.4alpha/configure.ac -+++ b/libclamav/libmspack-0.4alpha/configure.ac -@@ -46,5 +46,5 @@ AC_SYS_LARGEFILE - AC_FUNC_FSEEKO - - # Checks for library functions. --AC_CONFIG_FILES([Makefile doc/Makefile doc/Doxyfile libmspack.pc]) -+AC_CONFIG_FILES([Makefile libmspack.pc]) - AC_OUTPUT diff --git a/recipes-security/clamav/clamav-0.98.5/0014-remove-AC_CONFIG_SRCDIR-llvm-configure-from-libclama.patch b/recipes-security/clamav/clamav-0.98.5/0014-remove-AC_CONFIG_SRCDIR-llvm-configure-from-libclama.patch deleted file mode 100644 index 8bd2491..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0014-remove-AC_CONFIG_SRCDIR-llvm-configure-from-libclama.patch +++ /dev/null @@ -1,23 +0,0 @@ -From 573da4644d9dbcff3107c4bc3a8a346a5ba0b84d Mon Sep 17 00:00:00 2001 -From: Andreas Cadhalpun -Date: Tue, 14 Oct 2014 20:16:04 +0200 -Subject: remove AC_CONFIG_SRCDIR([llvm/configure]) from - libclamav/c++/configure.ac to allow compilation without the - libclamav/c++/llvm directory - ---- - libclamav/c++/configure.ac | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/libclamav/c++/configure.ac b/libclamav/c++/configure.ac -index 3c7c7e26fbf8..43e187ff1f56 100644 ---- a/libclamav/c++/configure.ac -+++ b/libclamav/c++/configure.ac -@@ -16,7 +16,6 @@ dnl MA 02110-1301, USA. - AC_PREREQ([2.59]) - AC_INIT([libclamavc++],[devel],[http://bugs.clamav.net]) - AC_CONFIG_AUX_DIR([config]) --AC_CONFIG_SRCDIR([llvm/configure]) - AC_CONFIG_MACRO_DIR([m4]) - AC_CONFIG_HEADER([clamavcxx-config.h]) - AC_CANONICAL_TARGET diff --git a/recipes-security/clamav/clamav-0.98.5/0015-bb-10731-Allow-to-specificy-a-group-for-the-socket-o.patch b/recipes-security/clamav/clamav-0.98.5/0015-bb-10731-Allow-to-specificy-a-group-for-the-socket-o.patch deleted file mode 100644 index 8619a51..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0015-bb-10731-Allow-to-specificy-a-group-for-the-socket-o.patch +++ /dev/null @@ -1,229 +0,0 @@ -From 9ba0bd8840f8be4cccaf8134b65a012dffdd8ae0 Mon Sep 17 00:00:00 2001 -From: Shawn Webb -Date: Thu, 31 Jul 2014 11:50:23 -0400 -Subject: bb#10731 - Allow to specificy a group for the socket of which the - user is not a member - -Signed-off-by: Sebastian Andrzej Siewior ---- - clamav-milter/clamav-milter.c | 193 +++++++++++++++++++++--------------------- - 1 file changed, 98 insertions(+), 95 deletions(-) - -diff --git a/clamav-milter/clamav-milter.c b/clamav-milter/clamav-milter.c -index 2c7a4d7d3414..99e7fe7fac04 100644 ---- a/clamav-milter/clamav-milter.c -+++ b/clamav-milter/clamav-milter.c -@@ -116,6 +116,104 @@ int main(int argc, char **argv) { - } - } - -+ if(!(my_socket = optget(opts, "MilterSocket")->strarg)) { -+ logg("!Please configure the MilterSocket directive\n"); -+ logg_close(); -+ optfree(opts); -+ return 1; -+ } -+ -+ if(smfi_setconn(my_socket) == MI_FAILURE) { -+ logg("!smfi_setconn failed\n"); -+ logg_close(); -+ optfree(opts); -+ return 1; -+ } -+ if(smfi_register(descr) == MI_FAILURE) { -+ logg("!smfi_register failed\n"); -+ logg_close(); -+ optfree(opts); -+ return 1; -+ } -+ opt = optget(opts, "FixStaleSocket"); -+ umsk = umask(0777); /* socket is created with 000 to avoid races */ -+ if(smfi_opensocket(opt->enabled) == MI_FAILURE) { -+ logg("!Failed to create socket %s\n", my_socket); -+ logg_close(); -+ optfree(opts); -+ return 1; -+ } -+ umask(umsk); /* restore umask */ -+ if(strncmp(my_socket, "inet:", 5) && strncmp(my_socket, "inet6:", 6)) { -+ /* set group ownership and perms on the local socket */ -+ char *sock_name = my_socket; -+ mode_t sock_mode; -+ if(!strncmp(my_socket, "unix:", 5)) -+ sock_name += 5; -+ if(!strncmp(my_socket, "local:", 6)) -+ sock_name += 6; -+ if(*my_socket == ':') -+ sock_name ++; -+ -+ if(optget(opts, "MilterSocketGroup")->enabled) { -+ char *gname = optget(opts, "MilterSocketGroup")->strarg, *end; -+ gid_t sock_gid = strtol(gname, &end, 10); -+ if(*end) { -+ struct group *pgrp = getgrnam(gname); -+ if(!pgrp) { -+ logg("!Unknown group %s\n", gname); -+ logg_close(); -+ optfree(opts); -+ return 1; -+ } -+ sock_gid = pgrp->gr_gid; -+ } -+ if(chown(sock_name, -1, sock_gid)) { -+ logg("!Failed to change socket ownership to group %s\n", gname); -+ logg_close(); -+ optfree(opts); -+ return 1; -+ } -+ } -+ -+ if ((opt = optget(opts, "User"))->enabled) { -+ struct passwd *user; -+ if ((user = getpwnam(opt->strarg)) == NULL) { -+ logg("ERROR: Can't get information about user %s.\n", -+ opt->strarg); -+ logg_close(); -+ optfree(opts); -+ return 1; -+ } -+ -+ if(chown(sock_name, user->pw_uid, -1)) { -+ logg("!Failed to change socket ownership to user %s\n", user->pw_name); -+ optfree(opts); -+ logg_close(); -+ return 1; -+ } -+ } -+ -+ if(optget(opts, "MilterSocketMode")->enabled) { -+ char *end; -+ sock_mode = strtol(optget(opts, "MilterSocketMode")->strarg, &end, 8); -+ if(*end) { -+ logg("!Invalid MilterSocketMode %s\n", optget(opts, "MilterSocketMode")->strarg); -+ logg_close(); -+ optfree(opts); -+ return 1; -+ } -+ } else -+ sock_mode = 0777 & ~umsk; -+ -+ if(chmod(sock_name, sock_mode & 0666)) { -+ logg("!Cannot set milter socket permission to %s\n", optget(opts, "MilterSocketMode")->strarg); -+ logg_close(); -+ optfree(opts); -+ return 1; -+ } -+ } -+ - if(geteuid() == 0 && (opt = optget(opts, "User"))->enabled) { - struct passwd *user = NULL; - if((user = getpwnam(opt->strarg)) == NULL) { -@@ -248,15 +346,6 @@ int main(int argc, char **argv) { - - multircpt = optget(opts, "SupportMultipleRecipients")->enabled; - -- if(!(my_socket = optget(opts, "MilterSocket")->strarg)) { -- logg("!Please configure the MilterSocket directive\n"); -- localnets_free(); -- whitelist_free(); -- logg_close(); -- optfree(opts); -- return 1; -- } -- - if(!optget(opts, "Foreground")->enabled) { - if(daemonize() == -1) { - logg("!daemonize() failed\n"); -@@ -271,92 +360,6 @@ int main(int argc, char **argv) { - logg("^Can't change current working directory to root\n"); - } - -- if(smfi_setconn(my_socket) == MI_FAILURE) { -- logg("!smfi_setconn failed\n"); -- localnets_free(); -- whitelist_free(); -- logg_close(); -- optfree(opts); -- return 1; -- } -- if(smfi_register(descr) == MI_FAILURE) { -- logg("!smfi_register failed\n"); -- localnets_free(); -- whitelist_free(); -- logg_close(); -- optfree(opts); -- return 1; -- } -- opt = optget(opts, "FixStaleSocket"); -- umsk = umask(0777); /* socket is created with 000 to avoid races */ -- if(smfi_opensocket(opt->enabled) == MI_FAILURE) { -- logg("!Failed to create socket %s\n", my_socket); -- localnets_free(); -- whitelist_free(); -- logg_close(); -- optfree(opts); -- return 1; -- } -- umask(umsk); /* restore umask */ -- if(strncmp(my_socket, "inet:", 5) && strncmp(my_socket, "inet6:", 6)) { -- /* set group ownership and perms on the local socket */ -- char *sock_name = my_socket; -- mode_t sock_mode; -- if(!strncmp(my_socket, "unix:", 5)) -- sock_name += 5; -- if(!strncmp(my_socket, "local:", 6)) -- sock_name += 6; -- if(*my_socket == ':') -- sock_name ++; -- -- if(optget(opts, "MilterSocketGroup")->enabled) { -- char *gname = optget(opts, "MilterSocketGroup")->strarg, *end; -- gid_t sock_gid = strtol(gname, &end, 10); -- if(*end) { -- struct group *pgrp = getgrnam(gname); -- if(!pgrp) { -- logg("!Unknown group %s\n", gname); -- localnets_free(); -- whitelist_free(); -- logg_close(); -- optfree(opts); -- return 1; -- } -- sock_gid = pgrp->gr_gid; -- } -- if(chown(sock_name, -1, sock_gid)) { -- logg("!Failed to change socket ownership to group %s\n", gname); -- localnets_free(); -- whitelist_free(); -- logg_close(); -- optfree(opts); -- return 1; -- } -- } -- if(optget(opts, "MilterSocketMode")->enabled) { -- char *end; -- sock_mode = strtol(optget(opts, "MilterSocketMode")->strarg, &end, 8); -- if(*end) { -- logg("!Invalid MilterSocketMode %s\n", optget(opts, "MilterSocketMode")->strarg); -- localnets_free(); -- whitelist_free(); -- logg_close(); -- optfree(opts); -- return 1; -- } -- } else -- sock_mode = 0777 & ~umsk; -- -- if(chmod(sock_name, sock_mode & 0666)) { -- logg("!Cannot set milter socket permission to %s\n", optget(opts, "MilterSocketMode")->strarg); -- localnets_free(); -- whitelist_free(); -- logg_close(); -- optfree(opts); -- return 1; -- } -- } -- - maxfilesize = optget(opts, "MaxFileSize")->numarg; - if(!maxfilesize) { - logg("^Invalid MaxFileSize, using default (%d)\n", CLI_DEFAULT_MAXFILESIZE); diff --git a/recipes-security/clamav/clamav-0.98.5/0016-clamav-milter-add-additinal-SMFIF_-flags-before-invo.patch b/recipes-security/clamav/clamav-0.98.5/0016-clamav-milter-add-additinal-SMFIF_-flags-before-invo.patch deleted file mode 100644 index 621c6dc..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0016-clamav-milter-add-additinal-SMFIF_-flags-before-invo.patch +++ /dev/null @@ -1,86 +0,0 @@ -From dbc72db36eced2d3ca7c5b7f14970528c435429e Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior -Date: Sun, 26 Oct 2014 12:11:09 +0100 -Subject: clamav-milter: add additinal SMFIF_* flags before invoking - smfi_register() - -unfortunately after the shifting of the code (so that the socket could -be part of a group which is not part of the clamav user) I forgot (or -did not see it) to have the header flags added before the -smfi_register() was invoked. As a result the socket was working but it -was unable to add the X-Virus-Scanned & X-Virus-Status flags. This -patch fixes the issue. - -https://bugzilla.clamav.net/show_bug.cgi?id=10731 - -Signed-off-by: Sebastian Andrzej Siewior ---- - clamav-milter/clamav-milter.c | 48 ++++++++++++++++++++++++------------------- - 1 file changed, 27 insertions(+), 21 deletions(-) - -diff --git a/clamav-milter/clamav-milter.c b/clamav-milter/clamav-milter.c -index 99e7fe7fac04..22db98ab7c5e 100644 ---- a/clamav-milter/clamav-milter.c -+++ b/clamav-milter/clamav-milter.c -@@ -116,6 +116,33 @@ int main(int argc, char **argv) { - } - } - -+ pt = optget(opts, "AddHeader")->strarg; -+ if (strcasecmp(pt, "No")) { -+ char myname[255]; -+ -+ if (((opt = optget(opts, "ReportHostname"))->enabled && -+ strncpy(myname, opt->strarg, sizeof(myname))) || -+ !gethostname(myname, sizeof(myname))) { -+ -+ myname[sizeof(myname)-1] = '\0'; -+ snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s at %s", -+ get_version(), myname); -+ } else { -+ snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s", -+ get_version()); -+ } -+ xvirushdr[sizeof(xvirushdr)-1] = '\0'; -+ -+ descr.xxfi_flags |= SMFIF_ADDHDRS; -+ -+ if (strcasecmp(pt, "Add")) { /* Replace or Yes */ -+ descr.xxfi_flags |= SMFIF_CHGHDRS; -+ addxvirus = 1; -+ } else { /* Add */ -+ addxvirus = 2; -+ } -+ } -+ - if(!(my_socket = optget(opts, "MilterSocket")->strarg)) { - logg("!Please configure the MilterSocket directive\n"); - logg_close(); -@@ -323,27 +350,6 @@ int main(int argc, char **argv) { - return 1; - } - -- pt = optget(opts, "AddHeader")->strarg; -- if(strcasecmp(pt, "No")) { -- char myname[255]; -- -- if(((opt = optget(opts, "ReportHostname"))->enabled && strncpy(myname, opt->strarg, sizeof(myname))) || !gethostname(myname, sizeof(myname))) { -- myname[sizeof(myname)-1] = '\0'; -- snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s at %s", get_version(), myname); -- } else -- snprintf(xvirushdr, sizeof(xvirushdr), "clamav-milter %s", get_version()); -- xvirushdr[sizeof(xvirushdr)-1] = '\0'; -- -- descr.xxfi_flags |= SMFIF_ADDHDRS; -- -- if(strcasecmp(pt, "Add")) { /* Replace or Yes */ -- descr.xxfi_flags |= SMFIF_CHGHDRS; -- addxvirus = 1; -- } else { /* Add */ -- addxvirus = 2; -- } -- } -- - multircpt = optget(opts, "SupportMultipleRecipients")->enabled; - - if(!optget(opts, "Foreground")->enabled) { diff --git a/recipes-security/clamav/clamav-0.98.5/0017-Bump-.so-version-number.patch b/recipes-security/clamav/clamav-0.98.5/0017-Bump-.so-version-number.patch deleted file mode 100644 index 2af0d0e..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0017-Bump-.so-version-number.patch +++ /dev/null @@ -1,22 +0,0 @@ -From 6569ca8a084191f9fedde16abf8fa15b6ebef4fe Mon Sep 17 00:00:00 2001 -From: Shawn Webb -Date: Wed, 19 Nov 2014 11:51:22 -0500 -Subject: Bump .so version number - ---- - m4/reorganization/version.m4 | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/m4/reorganization/version.m4 b/m4/reorganization/version.m4 -index ea263b28e647..f4fe8b1e150e 100644 ---- a/m4/reorganization/version.m4 -+++ b/m4/reorganization/version.m4 -@@ -3,7 +3,7 @@ dnl VERSION="devel-`date +%Y%m%d`" - VERSION="0.98.5" - - LC_CURRENT=7 --LC_REVISION=22 -+LC_REVISION=24 - LC_AGE=1 - LIBCLAMAV_VERSION="$LC_CURRENT":"$LC_REVISION":"$LC_AGE" - AC_SUBST([LIBCLAMAV_VERSION]) diff --git a/recipes-security/clamav/clamav-0.98.5/0018-llvm-don-t-use-system-libs.patch b/recipes-security/clamav/clamav-0.98.5/0018-llvm-don-t-use-system-libs.patch deleted file mode 100644 index 5b1a606..0000000 --- a/recipes-security/clamav/clamav-0.98.5/0018-llvm-don-t-use-system-libs.patch +++ /dev/null @@ -1,26 +0,0 @@ -From 169677f7699f78d483c84b4ab54943ea622535c8 Mon Sep 17 00:00:00 2001 -From: Sebastian Andrzej Siewior -Date: Wed, 19 Nov 2014 23:04:32 +0100 -Subject: llvm: don't use --system-libs - -this continues the saga of not linking the .a files so we don't care -about the libs llvm links against (like -ledit) - -Signed-off-by: Sebastian Andrzej Siewior ---- - libclamav/c++/configure.ac | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/libclamav/c++/configure.ac b/libclamav/c++/configure.ac -index 43e187ff1f56..2d2d47b9d24c 100644 ---- a/libclamav/c++/configure.ac -+++ b/libclamav/c++/configure.ac -@@ -115,7 +115,7 @@ if test "x$llvmconfig" != "x"; then - if test $llvmver_test -ge 350; then - dnl LLVM 3.5.0 and after splits linker flags into two sets - ldflags=`$llvmconfig --ldflags` -- syslibs=`$llvmconfig --system-libs` -+ syslibs= - AC_SUBST(LLVMCONFIG_LDFLAGS, ["$ldflags $syslibs"]) - else - AC_SUBST(LLVMCONFIG_LDFLAGS, [`$llvmconfig --ldflags`]) diff --git a/recipes-security/clamav/clamav-0.98.5/clamav-0001-clamdscan.patch b/recipes-security/clamav/clamav-0.98.5/clamav-0001-clamdscan.patch deleted file mode 100644 index 2effdeb..0000000 --- a/recipes-security/clamav/clamav-0.98.5/clamav-0001-clamdscan.patch +++ /dev/null @@ -1,21 +0,0 @@ -Fixes build error - -proto.c: In function 'dconnect': -proto.c:86:67: error: invalid application of 'sizeof' to incomplete type 'struct sockaddr_un' -if (connect(sockd, (struct sockaddr *)&nixsock, sizeof(nixsock)) == 0) - -Patch sent upstream: http://lurker.clamav.net/message/20140928.130829.5494fd68.en.html - -Signed-off-by: Bernd Kuhls - -diff -uNr a/clamdscan/proto.c b/clamdscan/proto.c ---- a/clamdscan/proto.c 2014-05-06 20:39:56.000000000 +0200 -+++ b/clamdscan/proto.c 2014-05-10 10:41:44.000000000 +0200 -@@ -35,6 +35,7 @@ - #include - #include - #include -+#include - #ifdef HAVE_SYS_SELECT_H - #include - #endif diff --git a/recipes-security/clamav/clamav-0.98.5/clamav-freshclam.service b/recipes-security/clamav/clamav-0.98.5/clamav-freshclam.service deleted file mode 100644 index 0c909fb..0000000 --- a/recipes-security/clamav/clamav-0.98.5/clamav-freshclam.service +++ /dev/null @@ -1,12 +0,0 @@ -[Unit] -Description=ClamAV virus database updater -Documentation=man:freshclam(1) man:freshclam.conf(5) http://www.clamav.net/lang/en/doc/ -# If user wants it run from cron, don't start the daemon. -ConditionPathExists=!/etc/cron.d/clamav-freshclam - -[Service] -ExecStart=/usr/bin/freshclam -d --foreground=true -StandardOutput=syslog - -[Install] -WantedBy=multi-user.target diff --git a/recipes-security/clamav/clamav-0.98.5/clamav-milter.conf.sample b/recipes-security/clamav/clamav-0.98.5/clamav-milter.conf.sample deleted file mode 100644 index ed0d519..0000000 --- a/recipes-security/clamav/clamav-0.98.5/clamav-milter.conf.sample +++ /dev/null @@ -1,293 +0,0 @@ -## -## Example config file for clamav-milter -## - -# Comment or remove the line below. -Example - - -## -## Main options -## - -# Define the interface through which we communicate with sendmail -# This option is mandatory! Possible formats are: -# [[unix|local]:]/path/to/file - to specify a unix domain socket -# inet:port@[hostname|ip-address] - to specify an ipv4 socket -# inet6:port@[hostname|ip-address] - to specify an ipv6 socket -# -# Default: no default -#MilterSocket /tmp/clamav-milter.socket -#MilterSocket inet:7357 - -# Define the group ownership for the (unix) milter socket. -# Default: disabled (the primary group of the user running clamd) -#MilterSocketGroup virusgroup - -# Sets the permissions on the (unix) milter socket to the specified mode. -# Default: disabled (obey umask) -#MilterSocketMode 660 - -# Remove stale socket after unclean shutdown. -# -# Default: yes -#FixStaleSocket yes - -# Run as another user (clamav-milter must be started by root for this option to work) -# -# Default: unset (don't drop privileges) -#User clamav - -# Initialize supplementary group access (clamav-milter must be started by root). -# -# Default: no -#AllowSupplementaryGroups no - -# Waiting for data from clamd will timeout after this time (seconds). -# Value of 0 disables the timeout. -# -# Default: 120 -#ReadTimeout 300 - -# Don't fork into background. -# -# Default: no -#Foreground yes - -# Chroot to the specified directory. -# Chrooting is performed just after reading the config file and before dropping privileges. -# -# Default: unset (don't chroot) -#Chroot /newroot - -# This option allows you to save a process identifier of the listening -# daemon (main thread). -# -# Default: disabled -#PidFile /var/run/clamav/clamav-milter.pid - -# Optional path to the global temporary directory. -# Default: system specific (usually /tmp or /var/tmp). -# -#TemporaryDirectory /var/tmp - -## -## Clamd options -## - -# Define the clamd socket to connect to for scanning. -# This option is mandatory! Syntax: -# ClamdSocket unix:path -# ClamdSocket tcp:host:port -# The first syntax specifies a local unix socket (needs an absolute path) e.g.: -# ClamdSocket unix:/var/run/clamd/clamd.socket -# The second syntax specifies a tcp local or remote tcp socket: the -# host can be a hostname or an ip address; the ":port" field is only required -# for IPv6 addresses, otherwise it defaults to 3310, e.g.: -# ClamdSocket tcp:192.168.0.1 -# -# This option can be repeated several times with different sockets or even -# with the same socket: clamd servers will be selected in a round-robin fashion. -# -# Default: no default -ClamdSocket /var/run/clamav/clamd - - -## -## Exclusions -## - -# Messages originating from these hosts/networks will not be scanned -# This option takes a host(name)/mask pair in CIRD notation and can be -# repeated several times. If "/mask" is omitted, a host is assumed. -# To specify a locally orignated, non-smtp, email use the keyword "local" -# -# Default: unset (scan everything regardless of the origin) -#LocalNet local -#LocalNet 192.168.0.0/24 -#LocalNet 1111:2222:3333::/48 - -# This option specifies a file which contains a list of basic POSIX regular -# expressions. Addresses (sent to or from - see below) matching these regexes -# will not be scanned. Optionally each line can start with the string "From:" -# or "To:" (note: no whitespace after the colon) indicating if it is, -# respectively, the sender or recipient that is to be whitelisted. -# If the field is missing, "To:" is assumed. -# Lines starting with #, : or ! are ignored. -# -# Default unset (no exclusion applied) -#Whitelist /etc/whitelisted_addresses - -# Messages from authenticated SMTP users matching this extended POSIX -# regular expression (egrep-like) will not be scanned. -# As an alternative, a file containing a plain (not regex) list of names (one -# per line) can be specified using the prefix "file:". -# e.g. SkipAuthenticated file:/etc/good_guys -# -# Note: this is the AUTH login name! -# -# Default: unset (no whitelisting based on SMTP auth) -#SkipAuthenticated ^(tom|dick|henry)$ - -# Messages larger than this value won't be scanned. -# Make sure this value is lower or equal than StreamMaxLength in clamd.conf -# -# Default: 25M -#MaxFileSize 10M - - -## -## Actions -## - -# The following group of options controls the delievery process under -# different circumstances. -# The following actions are available: -# - Accept -# The message is accepted for delievery -# - Reject -# Immediately refuse delievery (a 5xx error is returned to the peer) -# - Defer -# Return a temporary failure message (4xx) to the peer -# - Blackhole (not available for OnFail) -# Like Accept but the message is sent to oblivion -# - Quarantine (not available for OnFail) -# Like Accept but message is quarantined instead of being delivered -# -# NOTE: In Sendmail the quarantine queue can be examined via mailq -qQ -# For Postfix this causes the message to be placed on hold -# -# Action to be performed on clean messages (mostly useful for testing) -# Default: Accept -#OnClean Accept - -# Action to be performed on infected messages -# Default: Quarantine -#OnInfected Quarantine - -# Action to be performed on error conditions (this includes failure to -# allocate data structures, no scanners available, network timeouts, -# unknown scanner replies and the like) -# Default: Defer -#OnFail Defer - -# This option allows to set a specific rejection reason for infected messages -# and it's therefore only useful together with "OnInfected Reject" -# The string "%v", if present, will be replaced with the virus name. -# Default: MTA specific -#RejectMsg - -# If this option is set to "Replace" (or "Yes"), an "X-Virus-Scanned" and an -# "X-Virus-Status" headers will be attached to each processed message, possibly -# replacing existing headers. -# If it is set to Add, the X-Virus headers are added possibly on top of the -# existing ones. -# Note that while "Replace" can potentially break DKIM signatures, "Add" may -# confuse procmail and similar filters. -# Default: no -#AddHeader Replace - -# When AddHeader is in use, this option allows to arbitrary set the reported -# hostname. This may be desirable in order to avoid leaking internal names. -# If unset the real machine name is used. -# Default: disabled -#ReportHostname my.mail.server.name - -# Execute a command (possibly searching PATH) when an infected message is found. -# The following parameters are passed to the invoked program in this order: -# virus name, queue id, sender, destination, subject, message id, message date. -# Note #1: this requires MTA macroes to be available (see LogInfected below) -# Note #2: the process is invoked in the context of clamav-milter -# Note #3: clamav-milter will wait for the process to exit. Be quick or fork to -# avoid unnecessary delays in email delievery -# Default: disabled -#VirusAction /usr/local/bin/my_infected_message_handler - -## -## Logging options -## - -# Uncomment this option to enable logging. -# LogFile must be writable for the user running daemon. -# A full path is required. -# -# Default: disabled -#LogFile /var/log/clamav/clamav-milter.log - -# By default the log file is locked for writing - the lock protects against -# running clamav-milter multiple times. -# This option disables log file locking. -# -# Default: no -#LogFileUnlock yes - -# Maximum size of the log file. -# Value of 0 disables the limit. -# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes) -# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size -# in bytes just don't use modifiers. If LogFileMaxSize is enabled, log -# rotation (the LogRotate option) will always be enabled. -# -# Default: 1M -#LogFileMaxSize 2M - -# Log time with each message. -# -# Default: no -#LogTime yes - -# Use system logger (can work together with LogFile). -# -# Default: no -#LogSyslog yes - -# Specify the type of syslog messages - please refer to 'man syslog' -# for facility names. -# -# Default: LOG_LOCAL6 -#LogFacility LOG_MAIL - -# Enable verbose logging. -# -# Default: no -#LogVerbose yes - -# Enable log rotation. Always enabled when LogFileMaxSize is enabled. -# Default: no -#LogRotate yes - -# This option allows to tune what is logged when a message is infected. -# Possible values are Off (the default - nothing is logged), -# Basic (minimal info logged), Full (verbose info logged) -# Note: -# For this to work properly in sendmail, make sure the msg_id, mail_addr, -# rcpt_addr and i macroes are available in eom. In other words add a line like: -# Milter.macros.eom={msg_id}, {mail_addr}, {rcpt_addr}, i -# to your .cf file. Alternatively use the macro: -# define(`confMILTER_MACROS_EOM', `{msg_id}, {mail_addr}, {rcpt_addr}, i') -# Postfix should be working fine with the default settings. -# -# Default: disabled -#LogInfected Basic - -# This option allows to tune what is logged when no threat is found in a scanned message. -# See LogInfected for possible values and caveats. -# Useful in debugging but drastically increases the log size. -# Default: disabled -#LogClean Basic - -# This option affects the behaviour of LogInfected, LogClean and VirusAction -# when a message with multiple recipients is scanned: -# If SupportMultipleRecipients is off (the default) -# then one single log entry is generated for the message and, in case the -# message is determined to be malicious, the command indicated by VirusAction -# is executed just once. In both cases only the last recipient is reported. -# If SupportMultipleRecipients is on: -# then one line is logged for each recipient and the command indicated -# by VirusAction is also executed once for each recipient. -# -# Note: although it's probably a good idea to enable this option, the default value -# is currently set to off for legacy reasons. -# Default: no -#SupportMultipleRecipients yes - diff --git a/recipes-security/clamav/clamav-0.98.5/clamav.service b/recipes-security/clamav/clamav-0.98.5/clamav.service deleted file mode 100644 index f13191f..0000000 --- a/recipes-security/clamav/clamav-0.98.5/clamav.service +++ /dev/null @@ -1,17 +0,0 @@ -[Unit] -Description=Clam AntiVirus userspace daemon -Documentation=man:clamd(8) man:clamd.conf(5) http://www.clamav.net/lang/en/doc/ -Requires=clamav-daemon.socket -# Check for database existence -ConditionPathExistsGlob=/usr/share/clamav/main.{c[vl]d,inc} -ConditionPathExistsGlob=/usr/share/clamav/daily.{c[vl]d,inc} - -[Service] -ExecStart=/usr/sbin/clamd --foreground=true -# Reload the database -ExecReload=/bin/kill -USR2 $MAINPID -StandardOutput=syslog - -[Install] -WantedBy=multi-user.target -Also=clamav-daemon.socket diff --git a/recipes-security/clamav/clamav-0.98.5/clamd.conf b/recipes-security/clamav/clamav-0.98.5/clamd.conf deleted file mode 100644 index 0457785..0000000 --- a/recipes-security/clamav/clamav-0.98.5/clamd.conf +++ /dev/null @@ -1,595 +0,0 @@ -# Uncomment this option to enable logging. -# LogFile must be writable for the user running daemon. -# A full path is required. -# Default: disabled -LogFile /tmp/clamd.log - -# By default the log file is locked for writing - the lock protects against -# running clamd multiple times (if want to run another clamd, please -# copy the configuration file, change the LogFile variable, and run -# the daemon with --config-file option). -# This option disables log file locking. -# Default: no -LogFileUnlock yes - -# Maximum size of the log file. -# Value of 0 disables the limit. -# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes) -# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size -# in bytes just don't use modifiers. If LogFileMaxSize is enabled, log -# rotation (the LogRotate option) will always be enabled. -# Default: 1M -LogFileMaxSize 2M - -# Log time with each message. -# Default: no -LogTime yes - -# Also log clean files. Useful in debugging but drastically increases the -# log size. -# Default: no -#LogClean yes - -# Use system logger (can work together with LogFile). -# Default: no -#LogSyslog yes - -# Specify the type of syslog messages - please refer to 'man syslog' -# for facility names. -# Default: LOG_LOCAL6 -#LogFacility LOG_MAIL - -# Enable verbose logging. -# Default: no -#LogVerbose yes - -# Enable log rotation. Always enabled when LogFileMaxSize is enabled. -# Default: no -#LogRotate yes - -# Log additional information about the infected file, such as its -# size and hash, together with the virus name. -ExtendedDetectionInfo yes - -# This option allows you to save a process identifier of the listening -# daemon (main thread). -# Default: disabled -PidFile /var/run/clamd.pid - -# Optional path to the global temporary directory. -# Default: system specific (usually /tmp or /var/tmp). -TemporaryDirectory /var/tmp - -# Path to the database directory. -# Default: hardcoded (depends on installation options) -DatabaseDirectory /var/lib/clamav - -# Only load the official signatures published by the ClamAV project. -# Default: no -#OfficialDatabaseOnly no - -# The daemon can work in local mode, network mode or both. -# Due to security reasons we recommend the local mode. - -# Path to a local socket file the daemon will listen on. -# Default: disabled (must be specified by a user) -LocalSocket /tmp/clamd.socket - -# Sets the group ownership on the unix socket. -# Default: disabled (the primary group of the user running clamd) -#LocalSocketGroup virusgroup - -# Sets the permissions on the unix socket to the specified mode. -# Default: disabled (socket is world accessible) -#LocalSocketMode 660 - -# Remove stale socket after unclean shutdown. -# Default: yes -#FixStaleSocket yes - -# TCP port address. -# Default: no -#TCPSocket 3310 - -# TCP address. -# By default we bind to INADDR_ANY, probably not wise. -# Enable the following to provide some degree of protection -# from the outside world. This option can be specified multiple -# times if you want to listen on multiple IPs. IPv6 is now supported. -# Default: no -#TCPAddr 127.0.0.1 - -# Maximum length the queue of pending connections may grow to. -# Default: 200 -#MaxConnectionQueueLength 30 - -# Clamd uses FTP-like protocol to receive data from remote clients. -# If you are using clamav-milter to balance load between remote clamd daemons -# on firewall servers you may need to tune the options below. - -# Close the connection when the data size limit is exceeded. -# The value should match your MTA's limit for a maximum attachment size. -# Default: 25M -#StreamMaxLength 10M - -# Limit port range. -# Default: 1024 -#StreamMinPort 30000 -# Default: 2048 -#StreamMaxPort 32000 - -# Maximum number of threads running at the same time. -# Default: 10 -#MaxThreads 20 - -# Waiting for data from a client socket will timeout after this time (seconds). -# Default: 120 -#ReadTimeout 300 - -# This option specifies the time (in seconds) after which clamd should -# timeout if a client doesn't provide any initial command after connecting. -# Default: 5 -#CommandReadTimeout 5 - -# This option specifies how long to wait (in miliseconds) if the send buffer is full. -# Keep this value low to prevent clamd hanging -# -# Default: 500 -#SendBufTimeout 200 - -# Maximum number of queued items (including those being processed by MaxThreads threads) -# It is recommended to have this value at least twice MaxThreads if possible. -# WARNING: you shouldn't increase this too much to avoid running out of file descriptors, -# the following condition should hold: -# MaxThreads*MaxRecursion + (MaxQueue - MaxThreads) + 6< RLIMIT_NOFILE (usual max is 1024) -# -# Default: 100 -#MaxQueue 200 - -# Waiting for a new job will timeout after this time (seconds). -# Default: 30 -#IdleTimeout 60 - -# Don't scan files and directories matching regex -# This directive can be used multiple times -# Default: scan all -#ExcludePath ^/proc/ -#ExcludePath ^/sys/ - -# Maximum depth directories are scanned at. -# Default: 15 -#MaxDirectoryRecursion 20 - -# Follow directory symlinks. -# Default: no -#FollowDirectorySymlinks yes - -# Follow regular file symlinks. -# Default: no -#FollowFileSymlinks yes - -# Scan files and directories on other filesystems. -# Default: yes -#CrossFilesystems yes - -# Perform a database check. -# Default: 600 (10 min) -#SelfCheck 600 - -# Execute a command when virus is found. In the command string %v will -# be replaced with the virus name. -# Default: no -#VirusEvent /usr/local/bin/send_sms 123456789 "VIRUS ALERT: %v" - -# Run as another user (clamd must be started by root for this option to work) -# Default: don't drop privileges -User clamav - -# Initialize supplementary group access (clamd must be started by root). -# Default: no -#AllowSupplementaryGroups no - -# Stop daemon when libclamav reports out of memory condition. -#ExitOnOOM yes - -# Don't fork into background. -# Default: no -#Foreground yes - -# Enable debug messages in libclamav. -# Default: no -#Debug yes - -# Do not remove temporary files (for debug purposes). -# Default: no -#LeaveTemporaryFiles yes - -# Permit use of the ALLMATCHSCAN command. If set to no, clamd will reject -# any ALLMATCHSCAN command as invalid. -# Default: yes -#AllowAllMatchScan no - -# Detect Possibly Unwanted Applications. -# Default: no -#DetectPUA yes - -# Exclude a specific PUA category. This directive can be used multiple times. -# See https://github.com/vrtadmin/clamav-faq/blob/master/faq/faq-pua.md for -# the complete list of PUA categories. -# Default: Load all categories (if DetectPUA is activated) -#ExcludePUA NetTool -#ExcludePUA PWTool - -# Only include a specific PUA category. This directive can be used multiple -# times. -# Default: Load all categories (if DetectPUA is activated) -#IncludePUA Spy -#IncludePUA Scanner -#IncludePUA RAT - -# In some cases (eg. complex malware, exploits in graphic files, and others), -# ClamAV uses special algorithms to provide accurate detection. This option -# controls the algorithmic detection. -# Default: yes -#AlgorithmicDetection yes - -# This option causes memory or nested map scans to dump the content to disk. -# If you turn on this option, more data is written to disk and is available -# when the LeaveTemporaryFiles option is enabled. -#ForceToDisk yes - -# This option allows you to disable the caching feature of the engine. By -# default, the engine will store an MD5 in a cache of any files that are -# not flagged as virus or that hit limits checks. Disabling the cache will -# have a negative performance impact on large scans. -# Default: no -#DisableCache yes - -## -## Executable files -## - -# PE stands for Portable Executable - it's an executable file format used -# in all 32 and 64-bit versions of Windows operating systems. This option allows -# ClamAV to perform a deeper analysis of executable files and it's also -# required for decompression of popular executable packers such as UPX, FSG, -# and Petite. If you turn off this option, the original files will still be -# scanned, but without additional processing. -# Default: yes -#ScanPE yes - -# Certain PE files contain an authenticode signature. By default, we check -# the signature chain in the PE file against a database of trusted and -# revoked certificates if the file being scanned is marked as a virus. -# If any certificate in the chain validates against any trusted root, but -# does not match any revoked certificate, the file is marked as whitelisted. -# If the file does match a revoked certificate, the file is marked as virus. -# The following setting completely turns off authenticode verification. -# Default: no -#DisableCertCheck yes - -# Executable and Linking Format is a standard format for UN*X executables. -# This option allows you to control the scanning of ELF files. -# If you turn off this option, the original files will still be scanned, but -# without additional processing. -# Default: yes -#ScanELF yes - -# With this option clamav will try to detect broken executables (both PE and -# ELF) and mark them as Broken.Executable. -# Default: no -#DetectBrokenExecutables yes - - -## -## Documents -## - -# This option enables scanning of OLE2 files, such as Microsoft Office -# documents and .msi files. -# If you turn off this option, the original files will still be scanned, but -# without additional processing. -# Default: yes -#ScanOLE2 yes - -# With this option enabled OLE2 files with VBA macros, which were not -# detected by signatures will be marked as "Heuristics.OLE2.ContainsMacros". -# Default: no -#OLE2BlockMacros no - -# This option enables scanning within PDF files. -# If you turn off this option, the original files will still be scanned, but -# without decoding and additional processing. -# Default: yes -#ScanPDF yes - -# This option enables scanning within SWF files. -# If you turn off this option, the original files will still be scanned, but -# without decoding and additional processing. -# Default: yes -#ScanSWF yes - - -## -## Mail files -## - -# Enable internal e-mail scanner. -# If you turn off this option, the original files will still be scanned, but -# without parsing individual messages/attachments. -# Default: yes -#ScanMail yes - -# Scan RFC1341 messages split over many emails. -# You will need to periodically clean up $TemporaryDirectory/clamav-partial directory. -# WARNING: This option may open your system to a DoS attack. -# Never use it on loaded servers. -# Default: no -#ScanPartialMessages yes - -# With this option enabled ClamAV will try to detect phishing attempts by using -# signatures. -# Default: yes -#PhishingSignatures yes - -# Scan URLs found in mails for phishing attempts using heuristics. -# Default: yes -#PhishingScanURLs yes - -# Always block SSL mismatches in URLs, even if the URL isn't in the database. -# This can lead to false positives. -# -# Default: no -#PhishingAlwaysBlockSSLMismatch no - -# Always block cloaked URLs, even if URL isn't in database. -# This can lead to false positives. -# -# Default: no -#PhishingAlwaysBlockCloak no - -# Detect partition intersections in raw disk images using heuristics. -# Default: no -#PartitionIntersection no - -# Allow heuristic match to take precedence. -# When enabled, if a heuristic scan (such as phishingScan) detects -# a possible virus/phish it will stop scan immediately. Recommended, saves CPU -# scan-time. -# When disabled, virus/phish detected by heuristic scans will be reported only at -# the end of a scan. If an archive contains both a heuristically detected -# virus/phish, and a real malware, the real malware will be reported -# -# Keep this disabled if you intend to handle "*.Heuristics.*" viruses -# differently from "real" malware. -# If a non-heuristically-detected virus (signature-based) is found first, -# the scan is interrupted immediately, regardless of this config option. -# -# Default: no -#HeuristicScanPrecedence yes - - -## -## Data Loss Prevention (DLP) -## - -# Enable the DLP module -# Default: No -#StructuredDataDetection yes - -# This option sets the lowest number of Credit Card numbers found in a file -# to generate a detect. -# Default: 3 -#StructuredMinCreditCardCount 5 - -# This option sets the lowest number of Social Security Numbers found -# in a file to generate a detect. -# Default: 3 -#StructuredMinSSNCount 5 - -# With this option enabled the DLP module will search for valid -# SSNs formatted as xxx-yy-zzzz -# Default: yes -#StructuredSSNFormatNormal yes - -# With this option enabled the DLP module will search for valid -# SSNs formatted as xxxyyzzzz -# Default: no -#StructuredSSNFormatStripped yes - - -## -## HTML -## - -# Perform HTML normalisation and decryption of MS Script Encoder code. -# Default: yes -# If you turn off this option, the original files will still be scanned, but -# without additional processing. -#ScanHTML yes - - -## -## Archives -## - -# ClamAV can scan within archives and compressed files. -# If you turn off this option, the original files will still be scanned, but -# without unpacking and additional processing. -# Default: yes -#ScanArchive yes - -# Mark encrypted archives as viruses (Encrypted.Zip, Encrypted.RAR). -# Default: no -#ArchiveBlockEncrypted no - - -## -## Limits -## - -# The options below protect your system against Denial of Service attacks -# using archive bombs. - -# This option sets the maximum amount of data to be scanned for each input file. -# Archives and other containers are recursively extracted and scanned up to this -# value. -# Value of 0 disables the limit -# Note: disabling this limit or setting it too high may result in severe damage -# to the system. -# Default: 100M -#MaxScanSize 150M - -# Files larger than this limit won't be scanned. Affects the input file itself -# as well as files contained inside it (when the input file is an archive, a -# document or some other kind of container). -# Value of 0 disables the limit. -# Note: disabling this limit or setting it too high may result in severe damage -# to the system. -# Default: 25M -#MaxFileSize 30M - -# Nested archives are scanned recursively, e.g. if a Zip archive contains a RAR -# file, all files within it will also be scanned. This options specifies how -# deeply the process should be continued. -# Note: setting this limit too high may result in severe damage to the system. -# Default: 16 -#MaxRecursion 10 - -# Number of files to be scanned within an archive, a document, or any other -# container file. -# Value of 0 disables the limit. -# Note: disabling this limit or setting it too high may result in severe damage -# to the system. -# Default: 10000 -#MaxFiles 15000 - -# Maximum size of a file to check for embedded PE. Files larger than this value -# will skip the additional analysis step. -# Note: disabling this limit or setting it too high may result in severe damage -# to the system. -# Default: 10M -#MaxEmbeddedPE 10M - -# Maximum size of a HTML file to normalize. HTML files larger than this value -# will not be normalized or scanned. -# Note: disabling this limit or setting it too high may result in severe damage -# to the system. -# Default: 10M -#MaxHTMLNormalize 10M - -# Maximum size of a normalized HTML file to scan. HTML files larger than this -# value after normalization will not be scanned. -# Note: disabling this limit or setting it too high may result in severe damage -# to the system. -# Default: 2M -#MaxHTMLNoTags 2M - -# Maximum size of a script file to normalize. Script content larger than this -# value will not be normalized or scanned. -# Note: disabling this limit or setting it too high may result in severe damage -# to the system. -# Default: 5M -#MaxScriptNormalize 5M - -# Maximum size of a ZIP file to reanalyze type recognition. ZIP files larger -# than this value will skip the step to potentially reanalyze as PE. -# Note: disabling this limit or setting it too high may result in severe damage -# to the system. -# Default: 1M -#MaxZipTypeRcg 1M - -# This option sets the maximum number of partitions of a raw disk image to be scanned. -# Raw disk images with more partitions than this value will have up to the value number -# partitions scanned. Negative values are not allowed. -# Note: setting this limit too high may result in severe damage or impact performance. -# Default: 50 -#MaxPartitions 128 - -# This option sets the maximum number of icons within a PE to be scanned. -# PE files with more icons than this value will have up to the value number icons scanned. -# Negative values are not allowed. -# WARNING: setting this limit too high may result in severe damage or impact performance. -# Default: 100 -#MaxIconsPE 200 - -## -## On-access Scan Settings -## - -# Enable on-access scanning. Currently, this is supported via fanotify. -# Clamuko/Dazuko support has been deprecated. -# Default: no -#ScanOnAccess yes - -# Don't scan files larger than OnAccessMaxFileSize -# Value of 0 disables the limit. -# Default: 5M -#OnAccessMaxFileSize 10M - -# Set the include paths (all files inside them will be scanned). You can have -# multiple OnAccessIncludePath directives but each directory must be added -# in a separate line. (On-access scan only) -# Default: disabled -#OnAccessIncludePath /home -#OnAccessIncludePath /students - -# Set the exclude paths. All subdirectories are also excluded. -# (On-access scan only) -# Default: disabled -#OnAccessExcludePath /home/bofh - -# With this option you can whitelist specific UIDs. Processes with these UIDs -# will be able to access all files. -# This option can be used multiple times (one per line). -# Default: disabled -#OnAccessExcludeUID 0 - - -## -## Bytecode -## - -# With this option enabled ClamAV will load bytecode from the database. -# It is highly recommended you keep this option on, otherwise you'll miss detections for many new viruses. -# Default: yes -#Bytecode yes - -# Set bytecode security level. -# Possible values: -# None - no security at all, meant for debugging. DO NOT USE THIS ON PRODUCTION SYSTEMS -# This value is only available if clamav was built with --enable-debug! -# TrustSigned - trust bytecode loaded from signed .c[lv]d files, -# insert runtime safety checks for bytecode loaded from other sources -# Paranoid - don't trust any bytecode, insert runtime checks for all -# Recommended: TrustSigned, because bytecode in .cvd files already has these checks -# Note that by default only signed bytecode is loaded, currently you can only -# load unsigned bytecode in --enable-debug mode. -# -# Default: TrustSigned -#BytecodeSecurity TrustSigned - -# Set bytecode timeout in miliseconds. -# -# Default: 5000 -# BytecodeTimeout 1000 - -## -## Statistics gathering and submitting -## - -# Enable statistical reporting. -# Default: no -#StatsEnabled yes - -# Disable submission of individual PE sections for files flagged as malware. -# Default: no -#StatsPEDisabled yes - -# HostID in the form of an UUID to use when submitting statistical information. -# Default: auto -#StatsHostID auto - -# Time in seconds to wait for the stats server to come back with a response -# Default: 10 -#StatsTimeout 10 diff --git a/recipes-security/clamav/clamav-0.98.5/freshclam.conf b/recipes-security/clamav/clamav-0.98.5/freshclam.conf deleted file mode 100644 index 100724f..0000000 --- a/recipes-security/clamav/clamav-0.98.5/freshclam.conf +++ /dev/null @@ -1,224 +0,0 @@ -# Path to the database directory. -# WARNING: It must match clamd.conf's directive! -# Default: hardcoded (depends on installation options) -DatabaseDirectory /var/lib/clamav - -# Path to the log file (make sure it has proper permissions) -# Default: disabled -UpdateLogFile /var/log/clamav/freshclam.log - -# Maximum size of the log file. -# Value of 0 disables the limit. -# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes) -# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). -# in bytes just don't use modifiers. If LogFileMaxSize is enabled, -# log rotation (the LogRotate option) will always be enabled. -# Default: 1M -LogFileMaxSize 2M - -# Log time with each message. -# Default: no -LogTime yes - -# Enable verbose logging. -# Default: no -#LogVerbose yes - -# Use system logger (can work together with UpdateLogFile). -# Default: no -#LogSyslog yes - -# Specify the type of syslog messages - please refer to 'man syslog' -# for facility names. -# Default: LOG_LOCAL6 -#LogFacility LOG_MAIL - -# Enable log rotation. Always enabled when LogFileMaxSize is enabled. -# Default: no -#LogRotate yes - -# This option allows you to save the process identifier of the daemon -# Default: disabled -PidFile /var/run/freshclam.pid - -# By default when started freshclam drops privileges and switches to the -# "clamav" user. This directive allows you to change the database owner. -# Default: clamav (may depend on installation options) -DatabaseOwner clamav - -# Initialize supplementary group access (freshclam must be started by root). -# Default: no -#AllowSupplementaryGroups yes - -# Use DNS to verify virus database version. Freshclam uses DNS TXT records -# to verify database and software versions. With this directive you can change -# the database verification domain. -# WARNING: Do not touch it unless you're configuring freshclam to use your -# own database verification domain. -# Default: current.cvd.clamav.net -#DNSDatabaseInfo current.cvd.clamav.net - -# Uncomment the following line and replace XY with your country -# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list. -# You can use db.XY.ipv6.clamav.net for IPv6 connections. -#DatabaseMirror db.XY.clamav.net - -# database.clamav.net is a round-robin record which points to our most -# reliable mirrors. It's used as a fall back in case db.XY.clamav.net is -# not working. DO NOT TOUCH the following line unless you know what you -# are doing. -DatabaseMirror database.clamav.net - -# How many attempts to make before giving up. -# Default: 3 (per mirror) -#MaxAttempts 5 - -# With this option you can control scripted updates. It's highly recommended -# to keep it enabled. -# Default: yes -#ScriptedUpdates yes - -# By default freshclam will keep the local databases (.cld) uncompressed to -# make their handling faster. With this option you can enable the compression; -# the change will take effect with the next database update. -# Default: no -#CompressLocalDatabase no - -# With this option you can provide custom sources (http:// or file://) for -# database files. This option can be used multiple times. -# Default: no custom URLs -#DatabaseCustomURL http://myserver.com/mysigs.ndb -#DatabaseCustomURL file:///mnt/nfs/local.hdb - -# This option allows you to easily point freshclam to private mirrors. -# If PrivateMirror is set, freshclam does not attempt to use DNS -# to determine whether its databases are out-of-date, instead it will -# use the If-Modified-Since request or directly check the headers of the -# remote database files. For each database, freshclam first attempts -# to download the CLD file. If that fails, it tries to download the -# CVD file. This option overrides DatabaseMirror, DNSDatabaseInfo -# and ScriptedUpdates. It can be used multiple times to provide -# fall-back mirrors. -# Default: disabled -#PrivateMirror mirror1.mynetwork.com -#PrivateMirror mirror2.mynetwork.com - -# Number of database checks per day. -# Default: 12 (every two hours) -#Checks 24 - -# Proxy settings -# Default: disabled -#HTTPProxyServer myproxy.com -#HTTPProxyPort 1234 -#HTTPProxyUsername myusername -#HTTPProxyPassword mypass - -# If your servers are behind a firewall/proxy which applies User-Agent -# filtering you can use this option to force the use of a different -# User-Agent header. -# Default: clamav/version_number -#HTTPUserAgent SomeUserAgentIdString - -# Use aaa.bbb.ccc.ddd as client address for downloading databases. Useful for -# multi-homed systems. -# Default: Use OS'es default outgoing IP address. -#LocalIPAddress aaa.bbb.ccc.ddd - -# Send the RELOAD command to clamd. -# Default: no -#NotifyClamd /path/to/clamd.conf - -# Run command after successful database update. -# Default: disabled -#OnUpdateExecute command - -# Run command when database update process fails. -# Default: disabled -#OnErrorExecute command - -# Run command when freshclam reports outdated version. -# In the command string %v will be replaced by the new version number. -# Default: disabled -#OnOutdatedExecute command - -# Don't fork into background. -# Default: no -#Foreground yes - -# Enable debug messages in libclamav. -# Default: no -#Debug yes - -# Timeout in seconds when connecting to database server. -# Default: 30 -#ConnectTimeout 60 - -# Timeout in seconds when reading from database server. -# Default: 30 -#ReceiveTimeout 60 - -# With this option enabled, freshclam will attempt to load new -# databases into memory to make sure they are properly handled -# by libclamav before replacing the old ones. -# Default: yes -#TestDatabases yes - -# When enabled freshclam will submit statistics to the ClamAV Project about -# the latest virus detections in your environment. The ClamAV maintainers -# will then use this data to determine what types of malware are the most -# detected in the field and in what geographic area they are. -# Freshclam will connect to clamd in order to get recent statistics. -# Default: no -#SubmitDetectionStats /path/to/clamd.conf - -# Country of origin of malware/detection statistics (for statistical -# purposes only). The statistics collector at ClamAV.net will look up -# your IP address to determine the geographical origin of the malware -# reported by your installation. If this installation is mainly used to -# scan data which comes from a different location, please enable this -# option and enter a two-letter code (see http://www.iana.org/domains/root/db/) -# of the country of origin. -# Default: disabled -#DetectionStatsCountry country-code - -# This option enables support for our "Personal Statistics" service. -# When this option is enabled, the information on malware detected by -# your clamd installation is made available to you through our website. -# To get your HostID, log on http://www.stats.clamav.net and add a new -# host to your host list. Once you have the HostID, uncomment this option -# and paste the HostID here. As soon as your freshclam starts submitting -# information to our stats collecting service, you will be able to view -# the statistics of this clamd installation by logging into -# http://www.stats.clamav.net with the same credentials you used to -# generate the HostID. For more information refer to: -# http://www.clamav.net/documentation.html#cctts -# This feature requires SubmitDetectionStats to be enabled. -# Default: disabled -#DetectionStatsHostID unique-id - -# This option enables support for Google Safe Browsing. When activated for -# the first time, freshclam will download a new database file (safebrowsing.cvd) -# which will be automatically loaded by clamd and clamscan during the next -# reload, provided that the heuristic phishing detection is turned on. This -# database includes information about websites that may be phishing sites or -# possible sources of malware. When using this option, it's mandatory to run -# freshclam at least every 30 minutes. -# Freshclam uses the ClamAV's mirror infrastructure to distribute the -# database and its updates but all the contents are provided under Google's -# terms of use. See http://www.google.com/transparencyreport/safebrowsing -# and http://www.clamav.net/documentation.html#safebrowsing -# for more information. -# Default: disabled -#SafeBrowsing yes - -# This option enables downloading of bytecode.cvd, which includes additional -# detection mechanisms and improvements to the ClamAV engine. -# Default: enabled -#Bytecode yes - -# Download an additional 3rd party signature database distributed through -# the ClamAV mirrors. -# This option can be used multiple times. -#ExtraDatabase dbname1 -#ExtraDatabase dbname2 diff --git a/recipes-security/clamav/clamav-0.98.5/series b/recipes-security/clamav/clamav-0.98.5/series deleted file mode 100644 index 3b09681..0000000 --- a/recipes-security/clamav/clamav-0.98.5/series +++ /dev/null @@ -1,18 +0,0 @@ -0001-Change-paths-in-sample-conf-file-to-match-Debian.patch -0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch -0003-unit_tests-increment-test-timeout-from-40secs-to-5mi.patch -0004-Fix-compiling-on-Hurd.patch -0005-Workaround-a-bug-in-libc-on-Hurd.patch -0006-remove-unnecessary-harmful-flags-from-libclamav.pc.patch -0007-libclamav-use-libmspack.patch -0008-Add-upstream-systemd-support-for-clamav-daemon-and-c.patch -0009-fix-ssize_t-size_t-off_t-printf-modifier.patch -0010-hardcode-LLVM-linker-flag-because-llvm-config-return.patch -0011-Add-libmspack-library-from-upstream-without-unnecess.patch -0012-allow-to-use-internal-libmspack-if-the-external-is-n.patch -0013-fix-autoreconf-with-embedded-libmspack.patch -0014-remove-AC_CONFIG_SRCDIR-llvm-configure-from-libclama.patch -0015-bb-10731-Allow-to-specificy-a-group-for-the-socket-o.patch -0016-clamav-milter-add-additinal-SMFIF_-flags-before-invo.patch -0017-Bump-.so-version-number.patch -0018-llvm-don-t-use-system-libs.patch diff --git a/recipes-security/clamav/clamav-0.98.5/volatiles.03_clamav b/recipes-security/clamav/clamav-0.98.5/volatiles.03_clamav deleted file mode 100644 index ee2153c..0000000 --- a/recipes-security/clamav/clamav-0.98.5/volatiles.03_clamav +++ /dev/null @@ -1,3 +0,0 @@ -# -d clamav clamav 0755 /var/log/clamav none -f clamav clamav 0655 /var/log/clamav/freshclam.log none diff --git a/recipes-security/clamav/clamav-0.99.1/clamav-freshclam.service b/recipes-security/clamav/clamav-0.99.1/clamav-freshclam.service new file mode 100644 index 0000000..0c909fb --- /dev/null +++ b/recipes-security/clamav/clamav-0.99.1/clamav-freshclam.service @@ -0,0 +1,12 @@ +[Unit] +Description=ClamAV virus database updater +Documentation=man:freshclam(1) man:freshclam.conf(5) http://www.clamav.net/lang/en/doc/ +# If user wants it run from cron, don't start the daemon. +ConditionPathExists=!/etc/cron.d/clamav-freshclam + +[Service] +ExecStart=/usr/bin/freshclam -d --foreground=true +StandardOutput=syslog + +[Install] +WantedBy=multi-user.target diff --git a/recipes-security/clamav/clamav-0.99.1/clamav-milter.conf.sample b/recipes-security/clamav/clamav-0.99.1/clamav-milter.conf.sample new file mode 100644 index 0000000..ed0d519 --- /dev/null +++ b/recipes-security/clamav/clamav-0.99.1/clamav-milter.conf.sample @@ -0,0 +1,293 @@ +## +## Example config file for clamav-milter +## + +# Comment or remove the line below. +Example + + +## +## Main options +## + +# Define the interface through which we communicate with sendmail +# This option is mandatory! Possible formats are: +# [[unix|local]:]/path/to/file - to specify a unix domain socket +# inet:port@[hostname|ip-address] - to specify an ipv4 socket +# inet6:port@[hostname|ip-address] - to specify an ipv6 socket +# +# Default: no default +#MilterSocket /tmp/clamav-milter.socket +#MilterSocket inet:7357 + +# Define the group ownership for the (unix) milter socket. +# Default: disabled (the primary group of the user running clamd) +#MilterSocketGroup virusgroup + +# Sets the permissions on the (unix) milter socket to the specified mode. +# Default: disabled (obey umask) +#MilterSocketMode 660 + +# Remove stale socket after unclean shutdown. +# +# Default: yes +#FixStaleSocket yes + +# Run as another user (clamav-milter must be started by root for this option to work) +# +# Default: unset (don't drop privileges) +#User clamav + +# Initialize supplementary group access (clamav-milter must be started by root). +# +# Default: no +#AllowSupplementaryGroups no + +# Waiting for data from clamd will timeout after this time (seconds). +# Value of 0 disables the timeout. +# +# Default: 120 +#ReadTimeout 300 + +# Don't fork into background. +# +# Default: no +#Foreground yes + +# Chroot to the specified directory. +# Chrooting is performed just after reading the config file and before dropping privileges. +# +# Default: unset (don't chroot) +#Chroot /newroot + +# This option allows you to save a process identifier of the listening +# daemon (main thread). +# +# Default: disabled +#PidFile /var/run/clamav/clamav-milter.pid + +# Optional path to the global temporary directory. +# Default: system specific (usually /tmp or /var/tmp). +# +#TemporaryDirectory /var/tmp + +## +## Clamd options +## + +# Define the clamd socket to connect to for scanning. +# This option is mandatory! Syntax: +# ClamdSocket unix:path +# ClamdSocket tcp:host:port +# The first syntax specifies a local unix socket (needs an absolute path) e.g.: +# ClamdSocket unix:/var/run/clamd/clamd.socket +# The second syntax specifies a tcp local or remote tcp socket: the +# host can be a hostname or an ip address; the ":port" field is only required +# for IPv6 addresses, otherwise it defaults to 3310, e.g.: +# ClamdSocket tcp:192.168.0.1 +# +# This option can be repeated several times with different sockets or even +# with the same socket: clamd servers will be selected in a round-robin fashion. +# +# Default: no default +ClamdSocket /var/run/clamav/clamd + + +## +## Exclusions +## + +# Messages originating from these hosts/networks will not be scanned +# This option takes a host(name)/mask pair in CIRD notation and can be +# repeated several times. If "/mask" is omitted, a host is assumed. +# To specify a locally orignated, non-smtp, email use the keyword "local" +# +# Default: unset (scan everything regardless of the origin) +#LocalNet local +#LocalNet 192.168.0.0/24 +#LocalNet 1111:2222:3333::/48 + +# This option specifies a file which contains a list of basic POSIX regular +# expressions. Addresses (sent to or from - see below) matching these regexes +# will not be scanned. Optionally each line can start with the string "From:" +# or "To:" (note: no whitespace after the colon) indicating if it is, +# respectively, the sender or recipient that is to be whitelisted. +# If the field is missing, "To:" is assumed. +# Lines starting with #, : or ! are ignored. +# +# Default unset (no exclusion applied) +#Whitelist /etc/whitelisted_addresses + +# Messages from authenticated SMTP users matching this extended POSIX +# regular expression (egrep-like) will not be scanned. +# As an alternative, a file containing a plain (not regex) list of names (one +# per line) can be specified using the prefix "file:". +# e.g. SkipAuthenticated file:/etc/good_guys +# +# Note: this is the AUTH login name! +# +# Default: unset (no whitelisting based on SMTP auth) +#SkipAuthenticated ^(tom|dick|henry)$ + +# Messages larger than this value won't be scanned. +# Make sure this value is lower or equal than StreamMaxLength in clamd.conf +# +# Default: 25M +#MaxFileSize 10M + + +## +## Actions +## + +# The following group of options controls the delievery process under +# different circumstances. +# The following actions are available: +# - Accept +# The message is accepted for delievery +# - Reject +# Immediately refuse delievery (a 5xx error is returned to the peer) +# - Defer +# Return a temporary failure message (4xx) to the peer +# - Blackhole (not available for OnFail) +# Like Accept but the message is sent to oblivion +# - Quarantine (not available for OnFail) +# Like Accept but message is quarantined instead of being delivered +# +# NOTE: In Sendmail the quarantine queue can be examined via mailq -qQ +# For Postfix this causes the message to be placed on hold +# +# Action to be performed on clean messages (mostly useful for testing) +# Default: Accept +#OnClean Accept + +# Action to be performed on infected messages +# Default: Quarantine +#OnInfected Quarantine + +# Action to be performed on error conditions (this includes failure to +# allocate data structures, no scanners available, network timeouts, +# unknown scanner replies and the like) +# Default: Defer +#OnFail Defer + +# This option allows to set a specific rejection reason for infected messages +# and it's therefore only useful together with "OnInfected Reject" +# The string "%v", if present, will be replaced with the virus name. +# Default: MTA specific +#RejectMsg + +# If this option is set to "Replace" (or "Yes"), an "X-Virus-Scanned" and an +# "X-Virus-Status" headers will be attached to each processed message, possibly +# replacing existing headers. +# If it is set to Add, the X-Virus headers are added possibly on top of the +# existing ones. +# Note that while "Replace" can potentially break DKIM signatures, "Add" may +# confuse procmail and similar filters. +# Default: no +#AddHeader Replace + +# When AddHeader is in use, this option allows to arbitrary set the reported +# hostname. This may be desirable in order to avoid leaking internal names. +# If unset the real machine name is used. +# Default: disabled +#ReportHostname my.mail.server.name + +# Execute a command (possibly searching PATH) when an infected message is found. +# The following parameters are passed to the invoked program in this order: +# virus name, queue id, sender, destination, subject, message id, message date. +# Note #1: this requires MTA macroes to be available (see LogInfected below) +# Note #2: the process is invoked in the context of clamav-milter +# Note #3: clamav-milter will wait for the process to exit. Be quick or fork to +# avoid unnecessary delays in email delievery +# Default: disabled +#VirusAction /usr/local/bin/my_infected_message_handler + +## +## Logging options +## + +# Uncomment this option to enable logging. +# LogFile must be writable for the user running daemon. +# A full path is required. +# +# Default: disabled +#LogFile /var/log/clamav/clamav-milter.log + +# By default the log file is locked for writing - the lock protects against +# running clamav-milter multiple times. +# This option disables log file locking. +# +# Default: no +#LogFileUnlock yes + +# Maximum size of the log file. +# Value of 0 disables the limit. +# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes) +# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size +# in bytes just don't use modifiers. If LogFileMaxSize is enabled, log +# rotation (the LogRotate option) will always be enabled. +# +# Default: 1M +#LogFileMaxSize 2M + +# Log time with each message. +# +# Default: no +#LogTime yes + +# Use system logger (can work together with LogFile). +# +# Default: no +#LogSyslog yes + +# Specify the type of syslog messages - please refer to 'man syslog' +# for facility names. +# +# Default: LOG_LOCAL6 +#LogFacility LOG_MAIL + +# Enable verbose logging. +# +# Default: no +#LogVerbose yes + +# Enable log rotation. Always enabled when LogFileMaxSize is enabled. +# Default: no +#LogRotate yes + +# This option allows to tune what is logged when a message is infected. +# Possible values are Off (the default - nothing is logged), +# Basic (minimal info logged), Full (verbose info logged) +# Note: +# For this to work properly in sendmail, make sure the msg_id, mail_addr, +# rcpt_addr and i macroes are available in eom. In other words add a line like: +# Milter.macros.eom={msg_id}, {mail_addr}, {rcpt_addr}, i +# to your .cf file. Alternatively use the macro: +# define(`confMILTER_MACROS_EOM', `{msg_id}, {mail_addr}, {rcpt_addr}, i') +# Postfix should be working fine with the default settings. +# +# Default: disabled +#LogInfected Basic + +# This option allows to tune what is logged when no threat is found in a scanned message. +# See LogInfected for possible values and caveats. +# Useful in debugging but drastically increases the log size. +# Default: disabled +#LogClean Basic + +# This option affects the behaviour of LogInfected, LogClean and VirusAction +# when a message with multiple recipients is scanned: +# If SupportMultipleRecipients is off (the default) +# then one single log entry is generated for the message and, in case the +# message is determined to be malicious, the command indicated by VirusAction +# is executed just once. In both cases only the last recipient is reported. +# If SupportMultipleRecipients is on: +# then one line is logged for each recipient and the command indicated +# by VirusAction is also executed once for each recipient. +# +# Note: although it's probably a good idea to enable this option, the default value +# is currently set to off for legacy reasons. +# Default: no +#SupportMultipleRecipients yes + diff --git a/recipes-security/clamav/clamav-0.99.1/clamav.service b/recipes-security/clamav/clamav-0.99.1/clamav.service new file mode 100644 index 0000000..f13191f --- /dev/null +++ b/recipes-security/clamav/clamav-0.99.1/clamav.service @@ -0,0 +1,17 @@ +[Unit] +Description=Clam AntiVirus userspace daemon +Documentation=man:clamd(8) man:clamd.conf(5) http://www.clamav.net/lang/en/doc/ +Requires=clamav-daemon.socket +# Check for database existence +ConditionPathExistsGlob=/usr/share/clamav/main.{c[vl]d,inc} +ConditionPathExistsGlob=/usr/share/clamav/daily.{c[vl]d,inc} + +[Service] +ExecStart=/usr/sbin/clamd --foreground=true +# Reload the database +ExecReload=/bin/kill -USR2 $MAINPID +StandardOutput=syslog + +[Install] +WantedBy=multi-user.target +Also=clamav-daemon.socket diff --git a/recipes-security/clamav/clamav-0.99.1/clamd.conf b/recipes-security/clamav/clamav-0.99.1/clamd.conf new file mode 100644 index 0000000..0457785 --- /dev/null +++ b/recipes-security/clamav/clamav-0.99.1/clamd.conf @@ -0,0 +1,595 @@ +# Uncomment this option to enable logging. +# LogFile must be writable for the user running daemon. +# A full path is required. +# Default: disabled +LogFile /tmp/clamd.log + +# By default the log file is locked for writing - the lock protects against +# running clamd multiple times (if want to run another clamd, please +# copy the configuration file, change the LogFile variable, and run +# the daemon with --config-file option). +# This option disables log file locking. +# Default: no +LogFileUnlock yes + +# Maximum size of the log file. +# Value of 0 disables the limit. +# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes) +# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). To specify the size +# in bytes just don't use modifiers. If LogFileMaxSize is enabled, log +# rotation (the LogRotate option) will always be enabled. +# Default: 1M +LogFileMaxSize 2M + +# Log time with each message. +# Default: no +LogTime yes + +# Also log clean files. Useful in debugging but drastically increases the +# log size. +# Default: no +#LogClean yes + +# Use system logger (can work together with LogFile). +# Default: no +#LogSyslog yes + +# Specify the type of syslog messages - please refer to 'man syslog' +# for facility names. +# Default: LOG_LOCAL6 +#LogFacility LOG_MAIL + +# Enable verbose logging. +# Default: no +#LogVerbose yes + +# Enable log rotation. Always enabled when LogFileMaxSize is enabled. +# Default: no +#LogRotate yes + +# Log additional information about the infected file, such as its +# size and hash, together with the virus name. +ExtendedDetectionInfo yes + +# This option allows you to save a process identifier of the listening +# daemon (main thread). +# Default: disabled +PidFile /var/run/clamd.pid + +# Optional path to the global temporary directory. +# Default: system specific (usually /tmp or /var/tmp). +TemporaryDirectory /var/tmp + +# Path to the database directory. +# Default: hardcoded (depends on installation options) +DatabaseDirectory /var/lib/clamav + +# Only load the official signatures published by the ClamAV project. +# Default: no +#OfficialDatabaseOnly no + +# The daemon can work in local mode, network mode or both. +# Due to security reasons we recommend the local mode. + +# Path to a local socket file the daemon will listen on. +# Default: disabled (must be specified by a user) +LocalSocket /tmp/clamd.socket + +# Sets the group ownership on the unix socket. +# Default: disabled (the primary group of the user running clamd) +#LocalSocketGroup virusgroup + +# Sets the permissions on the unix socket to the specified mode. +# Default: disabled (socket is world accessible) +#LocalSocketMode 660 + +# Remove stale socket after unclean shutdown. +# Default: yes +#FixStaleSocket yes + +# TCP port address. +# Default: no +#TCPSocket 3310 + +# TCP address. +# By default we bind to INADDR_ANY, probably not wise. +# Enable the following to provide some degree of protection +# from the outside world. This option can be specified multiple +# times if you want to listen on multiple IPs. IPv6 is now supported. +# Default: no +#TCPAddr 127.0.0.1 + +# Maximum length the queue of pending connections may grow to. +# Default: 200 +#MaxConnectionQueueLength 30 + +# Clamd uses FTP-like protocol to receive data from remote clients. +# If you are using clamav-milter to balance load between remote clamd daemons +# on firewall servers you may need to tune the options below. + +# Close the connection when the data size limit is exceeded. +# The value should match your MTA's limit for a maximum attachment size. +# Default: 25M +#StreamMaxLength 10M + +# Limit port range. +# Default: 1024 +#StreamMinPort 30000 +# Default: 2048 +#StreamMaxPort 32000 + +# Maximum number of threads running at the same time. +# Default: 10 +#MaxThreads 20 + +# Waiting for data from a client socket will timeout after this time (seconds). +# Default: 120 +#ReadTimeout 300 + +# This option specifies the time (in seconds) after which clamd should +# timeout if a client doesn't provide any initial command after connecting. +# Default: 5 +#CommandReadTimeout 5 + +# This option specifies how long to wait (in miliseconds) if the send buffer is full. +# Keep this value low to prevent clamd hanging +# +# Default: 500 +#SendBufTimeout 200 + +# Maximum number of queued items (including those being processed by MaxThreads threads) +# It is recommended to have this value at least twice MaxThreads if possible. +# WARNING: you shouldn't increase this too much to avoid running out of file descriptors, +# the following condition should hold: +# MaxThreads*MaxRecursion + (MaxQueue - MaxThreads) + 6< RLIMIT_NOFILE (usual max is 1024) +# +# Default: 100 +#MaxQueue 200 + +# Waiting for a new job will timeout after this time (seconds). +# Default: 30 +#IdleTimeout 60 + +# Don't scan files and directories matching regex +# This directive can be used multiple times +# Default: scan all +#ExcludePath ^/proc/ +#ExcludePath ^/sys/ + +# Maximum depth directories are scanned at. +# Default: 15 +#MaxDirectoryRecursion 20 + +# Follow directory symlinks. +# Default: no +#FollowDirectorySymlinks yes + +# Follow regular file symlinks. +# Default: no +#FollowFileSymlinks yes + +# Scan files and directories on other filesystems. +# Default: yes +#CrossFilesystems yes + +# Perform a database check. +# Default: 600 (10 min) +#SelfCheck 600 + +# Execute a command when virus is found. In the command string %v will +# be replaced with the virus name. +# Default: no +#VirusEvent /usr/local/bin/send_sms 123456789 "VIRUS ALERT: %v" + +# Run as another user (clamd must be started by root for this option to work) +# Default: don't drop privileges +User clamav + +# Initialize supplementary group access (clamd must be started by root). +# Default: no +#AllowSupplementaryGroups no + +# Stop daemon when libclamav reports out of memory condition. +#ExitOnOOM yes + +# Don't fork into background. +# Default: no +#Foreground yes + +# Enable debug messages in libclamav. +# Default: no +#Debug yes + +# Do not remove temporary files (for debug purposes). +# Default: no +#LeaveTemporaryFiles yes + +# Permit use of the ALLMATCHSCAN command. If set to no, clamd will reject +# any ALLMATCHSCAN command as invalid. +# Default: yes +#AllowAllMatchScan no + +# Detect Possibly Unwanted Applications. +# Default: no +#DetectPUA yes + +# Exclude a specific PUA category. This directive can be used multiple times. +# See https://github.com/vrtadmin/clamav-faq/blob/master/faq/faq-pua.md for +# the complete list of PUA categories. +# Default: Load all categories (if DetectPUA is activated) +#ExcludePUA NetTool +#ExcludePUA PWTool + +# Only include a specific PUA category. This directive can be used multiple +# times. +# Default: Load all categories (if DetectPUA is activated) +#IncludePUA Spy +#IncludePUA Scanner +#IncludePUA RAT + +# In some cases (eg. complex malware, exploits in graphic files, and others), +# ClamAV uses special algorithms to provide accurate detection. This option +# controls the algorithmic detection. +# Default: yes +#AlgorithmicDetection yes + +# This option causes memory or nested map scans to dump the content to disk. +# If you turn on this option, more data is written to disk and is available +# when the LeaveTemporaryFiles option is enabled. +#ForceToDisk yes + +# This option allows you to disable the caching feature of the engine. By +# default, the engine will store an MD5 in a cache of any files that are +# not flagged as virus or that hit limits checks. Disabling the cache will +# have a negative performance impact on large scans. +# Default: no +#DisableCache yes + +## +## Executable files +## + +# PE stands for Portable Executable - it's an executable file format used +# in all 32 and 64-bit versions of Windows operating systems. This option allows +# ClamAV to perform a deeper analysis of executable files and it's also +# required for decompression of popular executable packers such as UPX, FSG, +# and Petite. If you turn off this option, the original files will still be +# scanned, but without additional processing. +# Default: yes +#ScanPE yes + +# Certain PE files contain an authenticode signature. By default, we check +# the signature chain in the PE file against a database of trusted and +# revoked certificates if the file being scanned is marked as a virus. +# If any certificate in the chain validates against any trusted root, but +# does not match any revoked certificate, the file is marked as whitelisted. +# If the file does match a revoked certificate, the file is marked as virus. +# The following setting completely turns off authenticode verification. +# Default: no +#DisableCertCheck yes + +# Executable and Linking Format is a standard format for UN*X executables. +# This option allows you to control the scanning of ELF files. +# If you turn off this option, the original files will still be scanned, but +# without additional processing. +# Default: yes +#ScanELF yes + +# With this option clamav will try to detect broken executables (both PE and +# ELF) and mark them as Broken.Executable. +# Default: no +#DetectBrokenExecutables yes + + +## +## Documents +## + +# This option enables scanning of OLE2 files, such as Microsoft Office +# documents and .msi files. +# If you turn off this option, the original files will still be scanned, but +# without additional processing. +# Default: yes +#ScanOLE2 yes + +# With this option enabled OLE2 files with VBA macros, which were not +# detected by signatures will be marked as "Heuristics.OLE2.ContainsMacros". +# Default: no +#OLE2BlockMacros no + +# This option enables scanning within PDF files. +# If you turn off this option, the original files will still be scanned, but +# without decoding and additional processing. +# Default: yes +#ScanPDF yes + +# This option enables scanning within SWF files. +# If you turn off this option, the original files will still be scanned, but +# without decoding and additional processing. +# Default: yes +#ScanSWF yes + + +## +## Mail files +## + +# Enable internal e-mail scanner. +# If you turn off this option, the original files will still be scanned, but +# without parsing individual messages/attachments. +# Default: yes +#ScanMail yes + +# Scan RFC1341 messages split over many emails. +# You will need to periodically clean up $TemporaryDirectory/clamav-partial directory. +# WARNING: This option may open your system to a DoS attack. +# Never use it on loaded servers. +# Default: no +#ScanPartialMessages yes + +# With this option enabled ClamAV will try to detect phishing attempts by using +# signatures. +# Default: yes +#PhishingSignatures yes + +# Scan URLs found in mails for phishing attempts using heuristics. +# Default: yes +#PhishingScanURLs yes + +# Always block SSL mismatches in URLs, even if the URL isn't in the database. +# This can lead to false positives. +# +# Default: no +#PhishingAlwaysBlockSSLMismatch no + +# Always block cloaked URLs, even if URL isn't in database. +# This can lead to false positives. +# +# Default: no +#PhishingAlwaysBlockCloak no + +# Detect partition intersections in raw disk images using heuristics. +# Default: no +#PartitionIntersection no + +# Allow heuristic match to take precedence. +# When enabled, if a heuristic scan (such as phishingScan) detects +# a possible virus/phish it will stop scan immediately. Recommended, saves CPU +# scan-time. +# When disabled, virus/phish detected by heuristic scans will be reported only at +# the end of a scan. If an archive contains both a heuristically detected +# virus/phish, and a real malware, the real malware will be reported +# +# Keep this disabled if you intend to handle "*.Heuristics.*" viruses +# differently from "real" malware. +# If a non-heuristically-detected virus (signature-based) is found first, +# the scan is interrupted immediately, regardless of this config option. +# +# Default: no +#HeuristicScanPrecedence yes + + +## +## Data Loss Prevention (DLP) +## + +# Enable the DLP module +# Default: No +#StructuredDataDetection yes + +# This option sets the lowest number of Credit Card numbers found in a file +# to generate a detect. +# Default: 3 +#StructuredMinCreditCardCount 5 + +# This option sets the lowest number of Social Security Numbers found +# in a file to generate a detect. +# Default: 3 +#StructuredMinSSNCount 5 + +# With this option enabled the DLP module will search for valid +# SSNs formatted as xxx-yy-zzzz +# Default: yes +#StructuredSSNFormatNormal yes + +# With this option enabled the DLP module will search for valid +# SSNs formatted as xxxyyzzzz +# Default: no +#StructuredSSNFormatStripped yes + + +## +## HTML +## + +# Perform HTML normalisation and decryption of MS Script Encoder code. +# Default: yes +# If you turn off this option, the original files will still be scanned, but +# without additional processing. +#ScanHTML yes + + +## +## Archives +## + +# ClamAV can scan within archives and compressed files. +# If you turn off this option, the original files will still be scanned, but +# without unpacking and additional processing. +# Default: yes +#ScanArchive yes + +# Mark encrypted archives as viruses (Encrypted.Zip, Encrypted.RAR). +# Default: no +#ArchiveBlockEncrypted no + + +## +## Limits +## + +# The options below protect your system against Denial of Service attacks +# using archive bombs. + +# This option sets the maximum amount of data to be scanned for each input file. +# Archives and other containers are recursively extracted and scanned up to this +# value. +# Value of 0 disables the limit +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 100M +#MaxScanSize 150M + +# Files larger than this limit won't be scanned. Affects the input file itself +# as well as files contained inside it (when the input file is an archive, a +# document or some other kind of container). +# Value of 0 disables the limit. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 25M +#MaxFileSize 30M + +# Nested archives are scanned recursively, e.g. if a Zip archive contains a RAR +# file, all files within it will also be scanned. This options specifies how +# deeply the process should be continued. +# Note: setting this limit too high may result in severe damage to the system. +# Default: 16 +#MaxRecursion 10 + +# Number of files to be scanned within an archive, a document, or any other +# container file. +# Value of 0 disables the limit. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 10000 +#MaxFiles 15000 + +# Maximum size of a file to check for embedded PE. Files larger than this value +# will skip the additional analysis step. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 10M +#MaxEmbeddedPE 10M + +# Maximum size of a HTML file to normalize. HTML files larger than this value +# will not be normalized or scanned. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 10M +#MaxHTMLNormalize 10M + +# Maximum size of a normalized HTML file to scan. HTML files larger than this +# value after normalization will not be scanned. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 2M +#MaxHTMLNoTags 2M + +# Maximum size of a script file to normalize. Script content larger than this +# value will not be normalized or scanned. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 5M +#MaxScriptNormalize 5M + +# Maximum size of a ZIP file to reanalyze type recognition. ZIP files larger +# than this value will skip the step to potentially reanalyze as PE. +# Note: disabling this limit or setting it too high may result in severe damage +# to the system. +# Default: 1M +#MaxZipTypeRcg 1M + +# This option sets the maximum number of partitions of a raw disk image to be scanned. +# Raw disk images with more partitions than this value will have up to the value number +# partitions scanned. Negative values are not allowed. +# Note: setting this limit too high may result in severe damage or impact performance. +# Default: 50 +#MaxPartitions 128 + +# This option sets the maximum number of icons within a PE to be scanned. +# PE files with more icons than this value will have up to the value number icons scanned. +# Negative values are not allowed. +# WARNING: setting this limit too high may result in severe damage or impact performance. +# Default: 100 +#MaxIconsPE 200 + +## +## On-access Scan Settings +## + +# Enable on-access scanning. Currently, this is supported via fanotify. +# Clamuko/Dazuko support has been deprecated. +# Default: no +#ScanOnAccess yes + +# Don't scan files larger than OnAccessMaxFileSize +# Value of 0 disables the limit. +# Default: 5M +#OnAccessMaxFileSize 10M + +# Set the include paths (all files inside them will be scanned). You can have +# multiple OnAccessIncludePath directives but each directory must be added +# in a separate line. (On-access scan only) +# Default: disabled +#OnAccessIncludePath /home +#OnAccessIncludePath /students + +# Set the exclude paths. All subdirectories are also excluded. +# (On-access scan only) +# Default: disabled +#OnAccessExcludePath /home/bofh + +# With this option you can whitelist specific UIDs. Processes with these UIDs +# will be able to access all files. +# This option can be used multiple times (one per line). +# Default: disabled +#OnAccessExcludeUID 0 + + +## +## Bytecode +## + +# With this option enabled ClamAV will load bytecode from the database. +# It is highly recommended you keep this option on, otherwise you'll miss detections for many new viruses. +# Default: yes +#Bytecode yes + +# Set bytecode security level. +# Possible values: +# None - no security at all, meant for debugging. DO NOT USE THIS ON PRODUCTION SYSTEMS +# This value is only available if clamav was built with --enable-debug! +# TrustSigned - trust bytecode loaded from signed .c[lv]d files, +# insert runtime safety checks for bytecode loaded from other sources +# Paranoid - don't trust any bytecode, insert runtime checks for all +# Recommended: TrustSigned, because bytecode in .cvd files already has these checks +# Note that by default only signed bytecode is loaded, currently you can only +# load unsigned bytecode in --enable-debug mode. +# +# Default: TrustSigned +#BytecodeSecurity TrustSigned + +# Set bytecode timeout in miliseconds. +# +# Default: 5000 +# BytecodeTimeout 1000 + +## +## Statistics gathering and submitting +## + +# Enable statistical reporting. +# Default: no +#StatsEnabled yes + +# Disable submission of individual PE sections for files flagged as malware. +# Default: no +#StatsPEDisabled yes + +# HostID in the form of an UUID to use when submitting statistical information. +# Default: auto +#StatsHostID auto + +# Time in seconds to wait for the stats server to come back with a response +# Default: 10 +#StatsTimeout 10 diff --git a/recipes-security/clamav/clamav-0.99.1/freshclam.conf b/recipes-security/clamav/clamav-0.99.1/freshclam.conf new file mode 100644 index 0000000..100724f --- /dev/null +++ b/recipes-security/clamav/clamav-0.99.1/freshclam.conf @@ -0,0 +1,224 @@ +# Path to the database directory. +# WARNING: It must match clamd.conf's directive! +# Default: hardcoded (depends on installation options) +DatabaseDirectory /var/lib/clamav + +# Path to the log file (make sure it has proper permissions) +# Default: disabled +UpdateLogFile /var/log/clamav/freshclam.log + +# Maximum size of the log file. +# Value of 0 disables the limit. +# You may use 'M' or 'm' for megabytes (1M = 1m = 1048576 bytes) +# and 'K' or 'k' for kilobytes (1K = 1k = 1024 bytes). +# in bytes just don't use modifiers. If LogFileMaxSize is enabled, +# log rotation (the LogRotate option) will always be enabled. +# Default: 1M +LogFileMaxSize 2M + +# Log time with each message. +# Default: no +LogTime yes + +# Enable verbose logging. +# Default: no +#LogVerbose yes + +# Use system logger (can work together with UpdateLogFile). +# Default: no +#LogSyslog yes + +# Specify the type of syslog messages - please refer to 'man syslog' +# for facility names. +# Default: LOG_LOCAL6 +#LogFacility LOG_MAIL + +# Enable log rotation. Always enabled when LogFileMaxSize is enabled. +# Default: no +#LogRotate yes + +# This option allows you to save the process identifier of the daemon +# Default: disabled +PidFile /var/run/freshclam.pid + +# By default when started freshclam drops privileges and switches to the +# "clamav" user. This directive allows you to change the database owner. +# Default: clamav (may depend on installation options) +DatabaseOwner clamav + +# Initialize supplementary group access (freshclam must be started by root). +# Default: no +#AllowSupplementaryGroups yes + +# Use DNS to verify virus database version. Freshclam uses DNS TXT records +# to verify database and software versions. With this directive you can change +# the database verification domain. +# WARNING: Do not touch it unless you're configuring freshclam to use your +# own database verification domain. +# Default: current.cvd.clamav.net +#DNSDatabaseInfo current.cvd.clamav.net + +# Uncomment the following line and replace XY with your country +# code. See http://www.iana.org/cctld/cctld-whois.htm for the full list. +# You can use db.XY.ipv6.clamav.net for IPv6 connections. +#DatabaseMirror db.XY.clamav.net + +# database.clamav.net is a round-robin record which points to our most +# reliable mirrors. It's used as a fall back in case db.XY.clamav.net is +# not working. DO NOT TOUCH the following line unless you know what you +# are doing. +DatabaseMirror database.clamav.net + +# How many attempts to make before giving up. +# Default: 3 (per mirror) +#MaxAttempts 5 + +# With this option you can control scripted updates. It's highly recommended +# to keep it enabled. +# Default: yes +#ScriptedUpdates yes + +# By default freshclam will keep the local databases (.cld) uncompressed to +# make their handling faster. With this option you can enable the compression; +# the change will take effect with the next database update. +# Default: no +#CompressLocalDatabase no + +# With this option you can provide custom sources (http:// or file://) for +# database files. This option can be used multiple times. +# Default: no custom URLs +#DatabaseCustomURL http://myserver.com/mysigs.ndb +#DatabaseCustomURL file:///mnt/nfs/local.hdb + +# This option allows you to easily point freshclam to private mirrors. +# If PrivateMirror is set, freshclam does not attempt to use DNS +# to determine whether its databases are out-of-date, instead it will +# use the If-Modified-Since request or directly check the headers of the +# remote database files. For each database, freshclam first attempts +# to download the CLD file. If that fails, it tries to download the +# CVD file. This option overrides DatabaseMirror, DNSDatabaseInfo +# and ScriptedUpdates. It can be used multiple times to provide +# fall-back mirrors. +# Default: disabled +#PrivateMirror mirror1.mynetwork.com +#PrivateMirror mirror2.mynetwork.com + +# Number of database checks per day. +# Default: 12 (every two hours) +#Checks 24 + +# Proxy settings +# Default: disabled +#HTTPProxyServer myproxy.com +#HTTPProxyPort 1234 +#HTTPProxyUsername myusername +#HTTPProxyPassword mypass + +# If your servers are behind a firewall/proxy which applies User-Agent +# filtering you can use this option to force the use of a different +# User-Agent header. +# Default: clamav/version_number +#HTTPUserAgent SomeUserAgentIdString + +# Use aaa.bbb.ccc.ddd as client address for downloading databases. Useful for +# multi-homed systems. +# Default: Use OS'es default outgoing IP address. +#LocalIPAddress aaa.bbb.ccc.ddd + +# Send the RELOAD command to clamd. +# Default: no +#NotifyClamd /path/to/clamd.conf + +# Run command after successful database update. +# Default: disabled +#OnUpdateExecute command + +# Run command when database update process fails. +# Default: disabled +#OnErrorExecute command + +# Run command when freshclam reports outdated version. +# In the command string %v will be replaced by the new version number. +# Default: disabled +#OnOutdatedExecute command + +# Don't fork into background. +# Default: no +#Foreground yes + +# Enable debug messages in libclamav. +# Default: no +#Debug yes + +# Timeout in seconds when connecting to database server. +# Default: 30 +#ConnectTimeout 60 + +# Timeout in seconds when reading from database server. +# Default: 30 +#ReceiveTimeout 60 + +# With this option enabled, freshclam will attempt to load new +# databases into memory to make sure they are properly handled +# by libclamav before replacing the old ones. +# Default: yes +#TestDatabases yes + +# When enabled freshclam will submit statistics to the ClamAV Project about +# the latest virus detections in your environment. The ClamAV maintainers +# will then use this data to determine what types of malware are the most +# detected in the field and in what geographic area they are. +# Freshclam will connect to clamd in order to get recent statistics. +# Default: no +#SubmitDetectionStats /path/to/clamd.conf + +# Country of origin of malware/detection statistics (for statistical +# purposes only). The statistics collector at ClamAV.net will look up +# your IP address to determine the geographical origin of the malware +# reported by your installation. If this installation is mainly used to +# scan data which comes from a different location, please enable this +# option and enter a two-letter code (see http://www.iana.org/domains/root/db/) +# of the country of origin. +# Default: disabled +#DetectionStatsCountry country-code + +# This option enables support for our "Personal Statistics" service. +# When this option is enabled, the information on malware detected by +# your clamd installation is made available to you through our website. +# To get your HostID, log on http://www.stats.clamav.net and add a new +# host to your host list. Once you have the HostID, uncomment this option +# and paste the HostID here. As soon as your freshclam starts submitting +# information to our stats collecting service, you will be able to view +# the statistics of this clamd installation by logging into +# http://www.stats.clamav.net with the same credentials you used to +# generate the HostID. For more information refer to: +# http://www.clamav.net/documentation.html#cctts +# This feature requires SubmitDetectionStats to be enabled. +# Default: disabled +#DetectionStatsHostID unique-id + +# This option enables support for Google Safe Browsing. When activated for +# the first time, freshclam will download a new database file (safebrowsing.cvd) +# which will be automatically loaded by clamd and clamscan during the next +# reload, provided that the heuristic phishing detection is turned on. This +# database includes information about websites that may be phishing sites or +# possible sources of malware. When using this option, it's mandatory to run +# freshclam at least every 30 minutes. +# Freshclam uses the ClamAV's mirror infrastructure to distribute the +# database and its updates but all the contents are provided under Google's +# terms of use. See http://www.google.com/transparencyreport/safebrowsing +# and http://www.clamav.net/documentation.html#safebrowsing +# for more information. +# Default: disabled +#SafeBrowsing yes + +# This option enables downloading of bytecode.cvd, which includes additional +# detection mechanisms and improvements to the ClamAV engine. +# Default: enabled +#Bytecode yes + +# Download an additional 3rd party signature database distributed through +# the ClamAV mirrors. +# This option can be used multiple times. +#ExtraDatabase dbname1 +#ExtraDatabase dbname2 diff --git a/recipes-security/clamav/clamav-0.99.1/mempool_build_fix.patch b/recipes-security/clamav/clamav-0.99.1/mempool_build_fix.patch new file mode 100644 index 0000000..18ead72 --- /dev/null +++ b/recipes-security/clamav/clamav-0.99.1/mempool_build_fix.patch @@ -0,0 +1,14 @@ +Index: libclamav/readdb.c +=================================================================== +--- a/libclamav/readdb.c ++++ b/libclamav/readdb.c +@@ -4163,7 +4163,9 @@ static int cli_loadpwdb(FILE *fs, struct + + /* use the tdb to track filetypes and check flevels */ + memset(&tdb, 0, sizeof(tdb)); ++#ifdef USE_MPOOL + tdb.mempool = engine->mempool; ++#endif + ret = init_tdb(&tdb, engine, attribs, passname); + free(attribs); + if(ret != CL_SUCCESS) { diff --git a/recipes-security/clamav/clamav-0.99.1/remove_rpath_chk.patch b/recipes-security/clamav/clamav-0.99.1/remove_rpath_chk.patch new file mode 100644 index 0000000..4d00931 --- /dev/null +++ b/recipes-security/clamav/clamav-0.99.1/remove_rpath_chk.patch @@ -0,0 +1,16 @@ +Index: clamav-0.99/configure +=================================================================== +--- clamav-0.99.orig/configure ++++ clamav-0.99/configure +@@ -16192,11 +16192,6 @@ $as_echo_n "checking for shared library + if ${acl_cv_rpath+:} false; then : + $as_echo_n "(cached) " >&6 + else +- +- CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ +- ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh +- . ./conftest.sh +- rm -f ./conftest.sh + acl_cv_rpath=done + + fi diff --git a/recipes-security/clamav/clamav-0.99.1/rpath_rmove.patch b/recipes-security/clamav/clamav-0.99.1/rpath_rmove.patch new file mode 100644 index 0000000..a903c7e --- /dev/null +++ b/recipes-security/clamav/clamav-0.99.1/rpath_rmove.patch @@ -0,0 +1,44 @@ +Index: clamav-0.99/configure +=================================================================== +--- clamav-0.99.orig/configure ++++ clamav-0.99/configure +@@ -9266,7 +9266,7 @@ $as_echo_n "checking whether the $compil + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_flag_spec='${wl}-rpath $libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then +@@ -9502,7 +9502,7 @@ _LT_EOF + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_flag_spec='${wl}-rpath $libdir' + 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 +@@ -10074,7 +10074,7 @@ $as_echo "$lt_cv_irix_exported_symbol" > + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_flag_spec='${wl}-rpath $libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes +Index: clamav-0.99/config/config.rpath +=================================================================== +--- clamav-0.99.orig/config/config.rpath ++++ clamav-0.99/config/config.rpath +@@ -156,7 +156,7 @@ if test "$with_gnu_ld" = yes; then + # here allows them to be overridden if necessary. + # Unlike libtool, we use -rpath here, not --rpath, since the documented + # option of GNU ld is called -rpath, not --rpath. +- hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' ++ hardcode_libdir_flag_spec= + case "$host_os" in + aix3* | aix4* | aix5*) + # On AIX/PPC, the GNU linker is very broken diff --git a/recipes-security/clamav/clamav-0.99.1/volatiles.03_clamav b/recipes-security/clamav/clamav-0.99.1/volatiles.03_clamav new file mode 100644 index 0000000..ee2153c --- /dev/null +++ b/recipes-security/clamav/clamav-0.99.1/volatiles.03_clamav @@ -0,0 +1,3 @@ +# +d clamav clamav 0755 /var/log/clamav none +f clamav clamav 0655 /var/log/clamav/freshclam.log none diff --git a/recipes-security/clamav/clamav_0.98.5.bb b/recipes-security/clamav/clamav_0.98.5.bb deleted file mode 100644 index 8820461..0000000 --- a/recipes-security/clamav/clamav_0.98.5.bb +++ /dev/null @@ -1,132 +0,0 @@ -SUMMARY = "ClamAV anti-virus utility for Unix - command-line interface" -DESCRIPTION = "ClamAV is an open source antivirus engine for detecting trojans, viruses, malware & other malicious threats." -HOMEPAGE = "http://www.clamav.net/index.html" -SECTION = "security" -LICENSE = "LGPL-2.1" -DEPENDS = "libtool db openssl zlib ncurses bzip2 libmspack" - -LIC_FILES_CHKSUM = "file://COPYING.LGPL;beginline=2;endline=3;md5=4b89c05acc71195e9a06edfa2fa7d092" - -SRC_URI = "https://launchpad.net/debian/+archive/primary/+files/clamav_0.98.5%2Bdfsg.orig.tar.xz;name=archive \ - file://0001-Change-paths-in-sample-conf-file-to-match-Debian.patch \ - file://0002-Add-an-additional-n-after-the-number-in-the-pidfile.patch \ - file://0003-unit_tests-increment-test-timeout-from-40secs-to-5mi.patch \ - file://0004-Fix-compiling-on-Hurd.patch \ - file://0005-Workaround-a-bug-in-libc-on-Hurd.patch \ - file://0006-remove-unnecessary-harmful-flags-from-libclamav.pc.patch \ - file://0008-Add-upstream-systemd-support-for-clamav-daemon-and-c.patch \ - file://0009-fix-ssize_t-size_t-off_t-printf-modifier.patch \ - file://0010-hardcode-LLVM-linker-flag-because-llvm-config-return.patch \ - file://0014-remove-AC_CONFIG_SRCDIR-llvm-configure-from-libclama.patch \ - file://0015-bb-10731-Allow-to-specificy-a-group-for-the-socket-o.patch \ - file://0016-clamav-milter-add-additinal-SMFIF_-flags-before-invo.patch \ - file://0017-Bump-.so-version-number.patch \ - file://0018-llvm-don-t-use-system-libs.patch \ - file://clamav-0001-clamdscan.patch \ - file://clamd.conf \ - file://freshclam.conf \ - file://volatiles.03_clamav \ -" - -SRC_URI[archive.md5sum] = "34d5e8698e57ce45c4a8c3c2cb211cf3" -SRC_URI[archive.sha256sum] = "0e353f646a0add17ca42e75ccfc7edf4f8b7c1acc972a86c317543f6b365db2d" - -inherit autotools-brokensep pkgconfig useradd systemd - -UID = "clamav" -GID = "clamav" - -S = "${WORKDIR}/${BPN}-${PV}+dfsg" - -PACKAGECONFIG ??= "" -PACKAGECONFIG += " ${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "ipv6", "", d)}" -PACKAGECONFIG += "${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}" -PACKAGECONFIG[xml] = "--with-xml=${STAGING_LIBDIR}/.., --with-xml=no, libxml2," -PACKAGECONFIG[json] = "--with-libjson=${STAGING_LIBDIR}, --without-libjson, json," -PACKAGECONFIG[curl] = "--with-libcurl=${STAGING_LIBDIR}, --without-libcurl, curl," -PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6" -PACKAGECONFI[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', " - -EXTRA_OECONF += " --with-user=${UID} --with-group=${GID} \ - --without-libcheck-prefix --disable-unrar \ - --disable-llvm \ - --with-openssl=${STAGING_LIBDIR}/.. \ - --with-zlib=${STAGING_LIBDIR}/.. \ - --with-libbz2-prefix=${STAGING_DIR}${prefix} \ - --with-libncurses-prefix=${STAGING_LIBDIR}/.. \ -" - -do_install_append () { - install -d ${D}/${sysconfdir} - install -d ${D}/${localstatedir}/lib/clamav - install -d ${D}${sysconfdir}/clamav ${D}${sysconfdir}/default/volatiles - - install -m 644 ${WORKDIR}/clamd.conf ${D}/${sysconfdir} - install -m 644 ${WORKDIR}/freshclam.conf ${D}/${sysconfdir} - install -m 0644 ${WORKDIR}/volatiles.03_clamav ${D}${sysconfdir}/default/volatiles/volatiles.03_clamav -} - -pkg_postinst_${PN} () { - if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then - ${sysconfdir}/init.d/populate-volatile.sh update - fi - chown ${UID}:${GID} ${localstatedir}/lib/clamav -} - - -PACKAGES = "${PN} ${PN}-dev ${PN}-dbg ${PN}-daemon ${PN}-doc \ - ${PN}-clamdscan ${PN}-freshclam ${PN}-libclamav6 ${PN}-staticdev" - -FILES_${PN} = "${bindir}/clambc ${bindir}/clamscan ${bibdir}/clamsubmit \ - ${bindir}/sigtool ${mandir}/man1/clambc* ${mandir}/man1/clamscan* \ - ${mandir}/man1/sigtool* ${mandir}/man1/clambsubmit* \ - ${docdir}/clamav/* " - -FILES_${PN}-clamdscan = " ${bindir}/clamdscan \ - ${docdir}/clamdscan/* \ - ${mandir}/man1/clamdscan* \ - " - -FILES_${PN}-daemon = "${bindir}/clamconf ${bindir}/clamdtop ${sbindir}/clamd \ - ${mandir}/man1/clamconf* ${mandir}/man1/clamdtop* \ - ${mandir}/man5/clamd* ${mandir}/man8/clamd* \ - ${sysconfdir}/clamd.conf* \ - ${systemd_unitdir}/system/clamav-daemon/* \ - ${docdir}/clamav-daemon/* ${sysconfdir}/clamav-daemon \ - ${sysconfdir}/logcheck/ignore.d.server/clamav-daemon " - -FILES_${PN}-freshclam = "${bindir}/freshclam \ - ${sysconfdir}/freshclam.conf* \ - ${sysconfdir}/clamav ${sysconfdir}/default/volatiles \ - ${localstatedir}/lib/clamav \ - ${docdir}/${PN}-freshclam ${mandir}/man1/freshclam.* \ - ${mandir}/man5/freshclam.conf.*" - -FILES_${PN}-dev = " ${bindir}/clamav-config ${libdir}/*.la \ - ${libdir}/pkgconfig/*.pc \ - ${mandir}/man1/clamav-config.* \ - ${includedir}/*.h ${docdir}/libclamav* " - -FILES_${PN}-staticdev = "${libdir}/*.a" - -FILES_${PN}-libclamav6 = "${libdir}/libclamav.so* ${libdir}/libmspack.so*\ - ${docdir}/libclamav6/* " - -FILES_${PN}-doc = "${mandir}/man/* \ - ${datadir}/man/* \ - ${docdir}/* " - -INSANE_SKIP_${PN}-libclamav6 = "dev-so" - -USERADD_PACKAGES = "${PN}" -GROUPADD_PARAM_${PN} = "--system ${UID}" -USERADD_PARAM_${PN} = "--system -g ${GID} --home-dir \ - ${localstatedir}/spool/${BPN} \ - --no-create-home --shell /bin/false ${BPN}" - -RPROVIDES_${PN} += "${PN}-systemd" -RREPLACES_${PN} += "${PN}-systemd" -RCONFLICTS_${PN} += "${PN}-systemd" -SYSTEMD_SERVICE_${PN} = "${BPN}.service" - -RDEPENDS_${PN} += "openssl ncurses-libncurses libbz2 ncurses-libtinfo clamav-freshclam clamav-libclamav6" diff --git a/recipes-security/clamav/clamav_0.99.1.bb b/recipes-security/clamav/clamav_0.99.1.bb new file mode 100644 index 0000000..4b42361 --- /dev/null +++ b/recipes-security/clamav/clamav_0.99.1.bb @@ -0,0 +1,139 @@ +SUMMARY = "ClamAV anti-virus utility for Unix - command-line interface" +DESCRIPTION = "ClamAV is an open source antivirus engine for detecting trojans, viruses, malware & other malicious threats." +HOMEPAGE = "http://www.clamav.net/index.html" +SECTION = "security" +LICENSE = "LGPL-2.1" + +DEPENDS = "libtool db libmspack " + +LIC_FILES_CHKSUM = "file://COPYING.LGPL;beginline=2;endline=3;md5=4b89c05acc71195e9a06edfa2fa7d092" + +SRC_URI = "http://www.clamav.net/downloads/production/${BPN}-${PV}.tar.gz \ + file://clamd.conf \ + file://freshclam.conf \ + file://volatiles.03_clamav \ + file://mempool_build_fix.patch \ + file://remove_rpath_chk.patch \ +" +SRC_URI[md5sum] = "cf1f3cbe62a08c9165801f79239166ff" +SRC_URI[sha256sum] = "e144689122d3f91293808c82cbb06b7d3ac9eca7ae29564c5d148ffe7b25d58a" + +inherit autotools-brokensep pkgconfig useradd systemd + +UID = "clamav" +GID = "clamav" + +PACKAGECONFIG ?= "ncurses openssl bz2 zlib " +PACKAGECONFIG += " ${@bb.utils.contains("DISTRO_FEATURES", "ipv6", "ipv6", "", d)}" +PACKAGECONFIG += "${@base_contains('DISTRO_FEATURES', 'systemd', 'systemd', '', d)}" +PACKAGECONFIG[pcre] = "--with-pcre=${STAGING_LIBDIR}, --without-pcre, libpcre" +PACKAGECONFIG[xml] = "--with-xml=${STAGING_LIBDIR}/.., --with-xml=no, libxml2," +PACKAGECONFIG[json] = "--with-libjson=${STAGING_LIBDIR}, --without-libjson, json," +PACKAGECONFIG[curl] = "--with-libcurl=${STAGING_LIBDIR}, --without-libcurl, curl," +PACKAGECONFIG[ipv6] = "--enable-ipv6, --disable-ipv6" +PACKAGECONFIG[openssl] = "--with-openssl=${STAGING_DIR_HOST}/usr, --without-openssl, openssl, openssl" +PACKAGECONFIG[zlib] = "--with-zlib=${STAGING_DIR_HOST}/usr, --without-zlib, zlib, " +PACKAGECONFIG[bz2] = "--with-libbz2-prefix=${STAGING_LIBDIR}/.., --without-libbz2-prefix, " +PACKAGECONFIG[ncurses] = "--with-libncurses-prefix=${STAGING_LIBDIR}/.., --without-libncurses-prefix, ncurses, " + +PACKAGECONFI[systemd] = "--with-systemdsystemunitdir=${systemd_unitdir}/system/', '--without-systemdsystemunitdir', " + +EXTRA_OECONF += " --with-user=${UID} --with-group=${GID} \ + --without-libcheck-prefix --disable-unrar \ + --disable-mempool \ + --program-prefix="" \ + --disable-yara \ + --disable-rpath \ + " + +do_configure () { + cd ${S} + ./configure ${CONFIGUREOPTS} ${EXTRA_OECONF} +} + +do_compile_append() { + # brute force removing RPATH + chrpath -d ${B}/libclamav/.libs/libclamav.so.7.1.1 + chrpath -d ${B}/sigtool/.libs/sigtool + chrpath -d ${B}/clambc/.libs/clambc + chrpath -d ${B}/clamscan/.libs/clamscan + chrpath -d ${B}/clamconf/.libs/clamconf + chrpath -d ${B}/clamd/.libs/clamd + chrpath -d ${B}/freshclam/.libs/freshclam +} + +do_install_append() { + install -d ${D}/${sysconfdir} + install -d ${D}/${localstatedir}/lib/clamav + install -d ${D}${sysconfdir}/clamav ${D}${sysconfdir}/default/volatiles + + install -m 644 ${WORKDIR}/clamd.conf ${D}/${sysconfdir} + install -m 644 ${WORKDIR}/freshclam.conf ${D}/${sysconfdir} + install -m 0644 ${WORKDIR}/volatiles.03_clamav ${D}${sysconfdir}/default/volatiles/volatiles.03_clamav + sed -i -e 's#${STAGING_DIR_HOST}##g' ${D}${libdir}/pkgconfig/libclamav.pc +} + +pkg_postinst_${PN} () { + if [ -z "$D" ] && [ -e /etc/init.d/populate-volatile.sh ] ; then + ${sysconfdir}/init.d/populate-volatile.sh update + fi + chown ${UID}:${GID} ${localstatedir}/lib/clamav +} + + +PACKAGES = "${PN} ${PN}-dev ${PN}-dbg ${PN}-daemon ${PN}-doc \ + ${PN}-clamdscan ${PN}-freshclam ${PN}-libclamav6 ${PN}-staticdev" + +FILES_${PN} = "${bindir}/clambc ${bindir}/clamscan ${bindir}/clamsubmit \ + ${bindir}/*sigtool ${mandir}/man1/clambc* ${mandir}/man1/clamscan* \ + ${mandir}/man1/sigtool* ${mandir}/man1/clambsubmit* \ + ${docdir}/clamav/* " + +FILES_${PN}-clamdscan = " ${bindir}/clamdscan \ + ${docdir}/clamdscan/* \ + ${mandir}/man1/clamdscan* \ + " + +FILES_${PN}-daemon = "${bindir}/clamconf ${bindir}/clamdtop ${sbindir}/clamd \ + ${mandir}/man1/clamconf* ${mandir}/man1/clamdtop* \ + ${mandir}/man5/clamd* ${mandir}/man8/clamd* \ + ${sysconfdir}/clamd.conf* \ + ${systemd_unitdir}/system/clamav-daemon/* \ + ${docdir}/clamav-daemon/* ${sysconfdir}/clamav-daemon \ + ${sysconfdir}/logcheck/ignore.d.server/clamav-daemon " + +FILES_${PN}-freshclam = "${bindir}/freshclam \ + ${sysconfdir}/freshclam.conf* \ + ${sysconfdir}/clamav ${sysconfdir}/default/volatiles \ + ${localstatedir}/lib/clamav \ + ${docdir}/${PN}-freshclam ${mandir}/man1/freshclam.* \ + ${mandir}/man5/freshclam.conf.*" + +FILES_${PN}-dev = " ${bindir}/clamav-config ${libdir}/*.la \ + ${libdir}/pkgconfig/*.pc \ + ${mandir}/man1/clamav-config.* \ + ${includedir}/*.h ${docdir}/libclamav* " + +FILES_${PN}-staticdev = "${libdir}/*.a" + +FILES_${PN}-libclamav6 = "${libdir}/libclamav.so* ${libdir}/libmspack.so*\ + ${docdir}/libclamav6/* " + +FILES_${PN}-doc = "${mandir}/man/* \ + ${datadir}/man/* \ + ${docdir}/* " + +INSANE_SKIP_${PN}-libclamav6 = "dev-so" + +USERADD_PACKAGES = "${PN}" +GROUPADD_PARAM_${PN} = "--system ${UID}" +USERADD_PARAM_${PN} = "--system -g ${GID} --home-dir \ + ${localstatedir}/spool/${BPN} \ + --no-create-home --shell /bin/false ${BPN}" + +RPROVIDES_${PN} += "${PN}-systemd" +RREPLACES_${PN} += "${PN}-systemd" +RCONFLICTS_${PN} += "${PN}-systemd" +SYSTEMD_SERVICE_${PN} = "${BPN}.service" + +RDEPENDS_${PN} += "openssl ncurses-libncurses libbz2 ncurses-libtinfo clamav-freshclam clamav-libclamav6" -- cgit v1.2.3-54-g00ecf