[Pkg-clamav-commits] [SCM] Debian repository for ClamAV branch, debian/unstable, updated. debian/0.95+dfsg-1-6603-g130f0d2

aCaB acab at clamav.net
Mon Oct 25 18:22:26 UTC 2010


The following commit has been merged in the debian/unstable branch:
commit 130f0d239961d93cb273447e414706958f1a1c3f
Author: aCaB <acab at clamav.net>
Date:   Mon Oct 25 20:21:01 2010 +0200

    git merge --squash clamav-0.96.4

diff --git a/ChangeLog b/ChangeLog
index 1da068a..aaccde8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,141 @@
+Mon Oct 25 18:02:56 CEST 2010 (tk)
+----------------------------------
+ * V 0.96.4
+
+Mon Oct 18 20:01:46 CEST 2010 (tk)
+----------------------------------
+ * clamd: be more verbose about config errors (bb#2252)
+
+Mon Oct 18 15:52:47 CEST 2010 (tk)
+----------------------------------
+ * libclamav/matcher.c: fix stack smash with HandlerType (bb#2298)
+
+Mon Oct 18 13:23:42 CEST 2010 (acab)
+------------------------------------
+ * libclamav/scanners.c: mark embpes as unreliable (bb#2307)
+
+Mon Oct 18 14:16:11 EEST 2010 (edwin)
+-------------------------------------
+ * clamconf/clamconf.c, libclamav/others.c: warn about zlib version mismatches (bb #2072)
+
+Mon Oct 18 13:55:17 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/pdf.c: bb #2295
+
+Mon Oct 18 13:46:59 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/builtin_bytecodes.h: disable JIT on CPUs without CMOV (bb #2327).
+
+Mon Oct 18 12:52:25 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/pdf.c: keep parsing after %%EOF (bb #2264).
+
+Mon Oct 18 11:30:01 CEST 2010 (tk)
+----------------------------------
+ * clamdscan: fix name parsing in normal mode (bb#2328)
+
+Mon Oct 18 11:10:14 CEST 2010 (tk)
+----------------------------------
+ * libclamav/others.h: bump f-level
+
+Mon Oct 18 11:27:16 EEST 2010 (edwin)
+-------------------------------------
+ * configure: fix bytecode and autoit for Apple-style universal builds (bb #2030)
+
+Mon Oct 18 10:46:25 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav: test mode for bytecode (bb #2101)
+
+Sat Oct 16 18:23:17 CEST 2010 (acab)
+------------------------------------
+ * clamav-milter: send FILDES early (bb#2321)
+
+Fri Oct 15 17:48:00 CEST 2010 (acab)
+------------------------------------
+ * libclamav/pe_icons.c: make sure all ref points are initted (bb#2291)
+
+Fri Oct 15 16:13:27 CEST 2010 (tk)
+----------------------------------
+ * freshclam/manager.c: don't mix IPv4 and IPv6 addresses while randomizing (bb#2319)
+
+Thu Oct 14 19:43:09 CEST 2010 (acab)
+------------------------------------
+ * libclamav: add pool based hastabs so we don't frag on md5 sizes (bb#2185)
+
+Thu Oct 14 16:14:01 CEST 2010 (acab)
+------------------------------------
+ * libclamav/fmap.c: properly check for pread errors (bb#2306)
+
+Thu Oct 14 16:06:06 CEST 2010 (acab)
+------------------------------------
+ * clamd: properly terminate zSTATS (bb#2286)
+
+Thu Oct 14 15:36:06 CEST 2010 (acab)
+------------------------------------
+ * freshclam: undefine qcompare if HAVE_GETADDRINFO is unset (bb#2289)
+
+Mon Oct 11 13:49:29 CEST 2010 (tk)
+----------------------------------
+ * clamdscan: fix parsing of virus names in extended mode (bb#2311)
+
+Fri Oct  8 15:38:56 CEST 2010 (tk)
+----------------------------------
+ * clamscan/manager.c: return errors for stdin scan failures (bb#2317)
+
+Fri Oct  8 15:22:22 CEST 2010 (tk)
+----------------------------------
+ * libclamav/elf.c: shutdown error message (bb#2318)
+
+Fri Oct  8 14:23:24 CEST 2010 (tk)
+----------------------------------
+ * libclamav/readdb.c: fix handling of Engine attrib (bb#2297)
+
+Tue Oct  5 18:14:59 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/pdf.c: Fix 'Unknown error code ERROR'(bb #2296).
+
+Tue Oct  5 17:03:43 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/pdf.c: Fix crash on 64-bit Solaris Intel (bb #2314).
+
+Tue Sep 28 16:25:03 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/c++: allow building with external LLVM 2.8rc2.
+
+Tue Sep 28 13:05:53 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/bytecode.c: fix memory leak in runlsig (bb #2291)
+
+Tue Sep 28 13:01:19 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/scanners.c: fix VI memory leak (bb #2291)
+
+Tue Sep 28 12:42:01 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/pdf.c: fix mmap failed(2) on 32-bit FreeBSD (bb #2300).
+
+Thu Sep 23 17:59:26 CEST 2010 (acab)
+------------------------------------
+ * m4/acinclude: add alarm(10) to the CVE-2010-0405 check so we don't
+		 infloop on SUSE libbz2 1.0.5
+
+Tue Sep 21 20:19:41 EEST 2010 (edwin)
+-------------------------------------
+ * libclamav/c++: improve bytecode load time, and optimization (bb #2278)
+
+Tue Sep 21 16:32:22 CEST 2010 (tk)
+----------------------------------
+ * sigtool/sigtool.c: don't use of sizeof() for malloc'ed buffer (bb#2283)
+
+Tue Sep 21 16:19:41 CEST 2010 (tk)
+----------------------------------
+ * clamdscan/proto.c: fix error path memleak (bb#2282)
+
+Tue Sep 21 16:13:27 CEST 2010 (tk)
+----------------------------------
+ * shared/cdiff.c, sigtool/sigtool.c: fix error path double frees
+				      (bb#2280, bb#2281)
+
 Mon Sep 20 17:09:37 CEST 2010 (tk)
 ----------------------------------
  * V 0.96.3
diff --git a/NEWS b/NEWS
index 1b1d02c..952d8f0 100644
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,7 @@
-0.96.3
+0.96.4
 ------
 
-This release fixes problems with the PDF parser and the internal bzip2
-library. A complete list of changes is available in the Changelog file.
+ClamAV 0.96.4 is a bugfix release recommended for all users.
 
 --
 The ClamAV team (http://www.clamav.net/team)
-
diff --git a/README b/README
index 6f2cd6f..8ac117c 100644
--- a/README
+++ b/README
@@ -2,6 +2,15 @@ Note: This README/NEWS file refers to the source tarball. Some things described
 here may not be available in binary packages.
 --
 
+0.96.4
+------
+
+ClamAV 0.96.4 is a bugfix release recommended for all users.
+
+--
+The ClamAV team (http://www.clamav.net/team)
+
+
 0.96.3
 ------
 
@@ -11,7 +20,6 @@ library. A complete list of changes is available in the Changelog file.
 --
 The ClamAV team (http://www.clamav.net/team)
 
-
 0.96.2
 ------
 
diff --git a/aclocal.m4 b/aclocal.m4
index 2529df9..10c1638 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -13,8 +13,8 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
-[m4_warning([this file was generated for autoconf 2.65.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
+[m4_warning([this file was generated for autoconf 2.67.
 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'.])])
diff --git a/clamav-milter/clamfi.c b/clamav-milter/clamfi.c
index ba2223b..9f9573c 100644
--- a/clamav-milter/clamfi.c
+++ b/clamav-milter/clamfi.c
@@ -284,12 +284,6 @@ sfsistat clamfi_eom(SMFICTX *ctx) {
     }
 
     if(cf->local) {
-	if(nc_send(cf->main, "nFILDES\n", 8)) {
-	    logg("!FD scan request failed\n");
-	    nullify(ctx, cf, CF_ALT);
-	    return FailAction;
-	}
-
 	lseek(cf->alt, 0, SEEK_SET);
 
 	if(nc_sendmsg(cf->main, cf->alt) == -1) {
diff --git a/clamav-milter/netcode.c b/clamav-milter/netcode.c
index 6fea945..cd33e5f 100644
--- a/clamav-milter/netcode.c
+++ b/clamav-milter/netcode.c
@@ -320,6 +320,12 @@ int nc_connect_rand(int *main, int *alt, int *local) {
 	}
 	unlink(unlinkme);
 	free(unlinkme);
+	if(nc_send(*main, "nFILDES\n", 8)) {
+	    logg("!FD scan request failed\n");
+	    close(*alt);
+	    close(*main);
+	    return 1;
+	}
     } else {
 	if(nc_send(*main, "nINSTREAM\n", 10)) {
 	    logg("!Failed to communicate with clamd\n");
diff --git a/clamconf/clamconf.c b/clamconf/clamconf.c
index 4396a63..5f69351 100644
--- a/clamconf/clamconf.c
+++ b/clamconf/clamconf.c
@@ -237,6 +237,8 @@ static void print_platform(struct cli_environment *env)
     }
 #endif
 
+    if (strcmp(ZLIB_VERSION, zlibVersion()))
+	printf("WARNING: zlib version mismatch: %s (%s)\n", ZLIB_VERSION, zlibVersion());
 #ifdef ZLIB_VERNUM
     printf("zlib version: %s (%s), compile flags: %02lx\n",
 	   ZLIB_VERSION, zlibVersion(), zlibCompileFlags());
diff --git a/clamd/session.c b/clamd/session.c
index 772290c..6509314 100644
--- a/clamd/session.c
+++ b/clamd/session.c
@@ -319,7 +319,7 @@ int command(client_conn_t *conn, int *virus)
 	    thrmgr_setactivetask(NULL, "STATS");
 	    if (conn->group)
 		mdprintf(desc, "%u: ", conn->id);
-	    thrmgr_printstats(desc);
+	    thrmgr_printstats(desc, conn->term);
 	    return 0;
 	case COMMAND_STREAM:
 	    thrmgr_setactivetask(NULL, "STREAM");
diff --git a/clamd/tcpserver.c b/clamd/tcpserver.c
index a8f73d2..cf8fa28 100644
--- a/clamd/tcpserver.c
+++ b/clamd/tcpserver.c
@@ -54,6 +54,7 @@ int tcpserver(const struct optstruct *opts)
     int true = 1;
 
     if (cfg_tcpsock(opts, &server, INADDR_ANY) == -1) {
+	logg("!TCP: Couldn't configure socket, check your configuration\n");
 	return -1;
     }
 
diff --git a/clamd/thrmgr.c b/clamd/thrmgr.c
index b1c7614..4c3f793 100644
--- a/clamd/thrmgr.c
+++ b/clamd/thrmgr.c
@@ -186,7 +186,7 @@ static void print_queue(int f, work_queue_t *queue, struct timeval *tv_now)
 		 (unsigned)queue->item_count);
 }
 
-int thrmgr_printstats(int f)
+int thrmgr_printstats(int f, char term)
 {
 	struct threadpool_list *l;
 	unsigned cnt, pool_cnt = 0;
@@ -301,7 +301,7 @@ int thrmgr_printstats(int f)
 		mdprintf(f,"MEMSTATS: heap N/A mmap N/A used N/A free N/A releasable N/A pools %u pools_used %.3fM pools_total %.3fM\n",
 			 pool_cnt, pool_used/(1024*1024.0), pool_total/(1024*1024.0));
 	}
-	mdprintf(f,"END\n");
+	mdprintf(f,"END%c", term);
 	pthread_mutex_unlock(&pools_lock);
 	return 0;
 }
diff --git a/clamd/thrmgr.h b/clamd/thrmgr.h
index 109b4e1..ace1a3b 100644
--- a/clamd/thrmgr.h
+++ b/clamd/thrmgr.h
@@ -105,7 +105,7 @@ int thrmgr_group_finished(jobgroup_t *group, enum thrmgr_exit exitc);
 int thrmgr_group_need_terminate(jobgroup_t *group);
 void thrmgr_group_terminate(jobgroup_t *group);
 jobgroup_t *thrmgr_group_new(void);
-int thrmgr_printstats(int outfd);
+int thrmgr_printstats(int outfd, char term);
 void thrmgr_setactivetask(const char *filename, const char* command);
 void thrmgr_setactiveengine(const struct cl_engine *engine);
 
diff --git a/clamdscan/proto.c b/clamdscan/proto.c
index e863cd6..85d979a 100644
--- a/clamdscan/proto.c
+++ b/clamdscan/proto.c
@@ -285,7 +285,10 @@ int dsresult(int sockd, int scantype, const char *filename, int *printok, int *e
 	return -1;
     }
     sprintf(bol, "z%s %s", scancmd[scantype], filename);
-    if(sendln(sockd, bol, len)) return -1;
+    if(sendln(sockd, bol, len)) {
+	free(bol);
+	return -1;
+    }
     free(bol);
     break;
 
@@ -313,24 +316,26 @@ int dsresult(int sockd, int scantype, const char *filename, int *printok, int *e
 	if(len > 7) {
 	    char *colon = strrchr(bol, ':');
 	    if(colon && colon[1] != ' ') {
-		char *colon2;
+		char *br;
 		*colon = 0;
-		colon2 = strrchr(bol, ':');
-		*colon = ':';
-		colon = colon2;
+		br = strrchr(bol, '(');
+		if(br)
+		    *br = 0;
+		colon = strrchr(bol, ':');
 	    }
 	    if(!colon) {
 		logg("Failed to parse reply\n");
 		return -1;
 	    } else if(!memcmp(eol - 7, " FOUND", 6)) {
+		*(eol - 7) = 0;
 		*printok = 0;
 		infected++;
 		if(filename) {
 		    if(scantype >= STREAM) {
-			logg("~%s%s\n", filename, colon);
+			logg("~%s%s FOUND\n", filename, colon);
 			if(action) action(filename);
 		    } else {
-			logg("~%s\n", bol);
+			logg("~%s FOUND\n", bol);
 			*colon = '\0';
 			if(action)
 			    action(bol);
diff --git a/clamscan/manager.c b/clamscan/manager.c
index 7c0b4aa..b4a5794 100644
--- a/clamscan/manager.c
+++ b/clamscan/manager.c
@@ -292,9 +292,11 @@ static int scanstdin(const struct cl_engine *engine, const struct optstruct *opt
     } else if(ret == CL_CLEAN) {
 	if(!printinfected)
 	    mprintf("stdin: OK\n");
-    } else
+    } else {
 	if(!printinfected)
 	    logg("stdin: %s ERROR\n", cl_strerror(ret));
+	info.errors++;
+    }
 
     unlink(file);
     free(file);
diff --git a/configure b/configure
index 8789001..15749bf 100755
--- a/configure
+++ b/configure
@@ -3496,7 +3496,7 @@ _ACEOF
 
 
 LC_CURRENT=7
-LC_REVISION=5
+LC_REVISION=6
 LC_AGE=1
 LIBCLAMAV_VERSION="$LC_CURRENT":"$LC_REVISION":"$LC_AGE"
 
@@ -12525,6 +12525,9 @@ fi
 if ${GREP-grep} elleemme conftest.$ac_objext >/dev/null 2>&1 ; then
 	ac_cv_c_fpu_bigendian=no
 fi
+if test "$ac_cv_c_bigendian" = "universal"; then
+        ac_cv_c_fpu_bigendian=universal
+fi
 
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
@@ -12548,6 +12551,12 @@ $as_echo "#define FPU_WORDS_BIGENDIAN 0" >>confdefs.h
 
                 have_autoitea06="yes"
 		;;
+	universal)
+
+$as_echo "#define FPU_WORDS_BIGENDIAN WORDS_BIGENDIAN" >>confdefs.h
+
+                have_autoitea06="yes"
+		;;
 	*)
 		{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to determine FPU endianess, some features may not be available in this build" >&5
 $as_echo "$as_me: WARNING: Unable to determine FPU endianess, some features may not be available in this build" >&2;}
@@ -15928,6 +15937,9 @@ else
 #include <stdlib.h>
 #include <stdio.h>
 #include <bzlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
 
 #ifdef NOBZ2PREFIX
 #define BZ2_bzReadOpen bzReadOpen
@@ -15969,6 +15981,9 @@ int main (int argc, char **argv) {
         bz.avail_in = poc_len;
         bz.next_out = buf;
         bz.avail_out = sizeof(buf);
+
+	alarm(10);
+
         if(BZ2_bzDecompressInit(&bz, 0, 0)!=BZ_OK)
                 return 1;
 
diff --git a/configure.in b/configure.in
index 0264675..562083f 100644
--- a/configure.in
+++ b/configure.in
@@ -46,7 +46,7 @@ VERSION="0.96.3"
 AC_DEFINE_UNQUOTED([VERSION],"$VERSION",[Version number of package])
 
 LC_CURRENT=7
-LC_REVISION=5
+LC_REVISION=6
 LC_AGE=1
 LIBCLAMAV_VERSION="$LC_CURRENT":"$LC_REVISION":"$LC_AGE"
 AC_SUBST([LIBCLAMAV_VERSION])
diff --git a/docs/clamdoc.pdf b/docs/clamdoc.pdf
index 0009cab..d3b789b 100644
Binary files a/docs/clamdoc.pdf and b/docs/clamdoc.pdf differ
diff --git a/docs/clamdoc.tex b/docs/clamdoc.tex
index 0e88939..4e98a5c 100644
--- a/docs/clamdoc.tex
+++ b/docs/clamdoc.tex
@@ -71,7 +71,7 @@
     \vspace{3cm}
     \begin{flushright}
 	\rule[-1ex]{8cm}{3pt}\\
-	\huge Clam AntiVirus 0.96.3\\
+	\huge Clam AntiVirus 0.96.4\\
 	\huge \emph{User Manual}\\
     \end{flushright}
 
diff --git a/docs/html/clamdoc.html b/docs/html/clamdoc.html
index fef604d..b70f4f8 100644
--- a/docs/html/clamdoc.html
+++ b/docs/html/clamdoc.html
@@ -56,7 +56,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BR>
 <BR>
     <DIV ALIGN="RIGHT">
-<BR>	<BIG CLASS="HUGE">Clam AntiVirus 0.96.3
+<BR>	<BIG CLASS="HUGE">Clam AntiVirus 0.96.4
 <BR>	<BIG CLASS="HUGE"><SPAN  CLASS="textit">User Manual</SPAN>
 <BR>    
 </BIG></BIG></DIV>
diff --git a/docs/html/index.html b/docs/html/index.html
index fef604d..b70f4f8 100644
--- a/docs/html/index.html
+++ b/docs/html/index.html
@@ -56,7 +56,7 @@ original version by:  Nikos Drakos, CBLU, University of Leeds
 <BR>
 <BR>
     <DIV ALIGN="RIGHT">
-<BR>	<BIG CLASS="HUGE">Clam AntiVirus 0.96.3
+<BR>	<BIG CLASS="HUGE">Clam AntiVirus 0.96.4
 <BR>	<BIG CLASS="HUGE"><SPAN  CLASS="textit">User Manual</SPAN>
 <BR>    
 </BIG></BIG></DIV>
diff --git a/freshclam/manager.c b/freshclam/manager.c
index 7a10243..eb17e9d 100644
--- a/freshclam/manager.c
+++ b/freshclam/manager.c
@@ -182,10 +182,12 @@ static int getclientsock(const char *localip, int prot)
     return socketfd;
 }
 
+#ifdef HAVE_GETADDRINFO
 static int qcompare(const void *a, const void *b)
 {
     return (*(const struct addrinfo **) a)->ai_flags - (*(const struct addrinfo **) b)->ai_flags;
 }
+#endif
 
 static int wwwconnect(const char *server, const char *proxy, int pport, char *ip, const char *localip, int ctimeout, struct mirdat *mdat, int logerr, unsigned int can_whitelist)
 {
@@ -195,6 +197,7 @@ static int wwwconnect(const char *server, const char *proxy, int pport, char *ip
 	struct addrinfo hints, *res = NULL, *rp, *loadbal_rp = NULL, *addrs[128];
 	char port_s[6], loadbal_ipaddr[46];
 	uint32_t loadbal = 1, minsucc = 0xffffffff, minfail = 0xffffffff, addrnum = 0;
+	int ipv4start = -1, ipv4end = -1;
 	struct mirdat_ip *md;
 #else
 	struct sockaddr_in name;
@@ -245,11 +248,20 @@ static int wwwconnect(const char *server, const char *proxy, int pport, char *ip
     for(rp = res; rp && addrnum < 128; rp = rp->ai_next) {
 	rp->ai_flags = cli_rndnum(1024);
 	addrs[addrnum] = rp;
+	if(rp->ai_family == AF_INET) {
+	    if(ipv4start == -1)
+		ipv4start = addrnum;
+	} else if(ipv4end == -1 && ipv4start != -1) {
+	    ipv4end = addrnum - 1;
+	}
+	if(!rp->ai_next && ipv4end == -1)
+	    ipv4end = addrnum;
 	addrnum++;
     }
-    qsort(addrs, addrnum, sizeof(struct addrinfo *), qcompare);
+    if(ipv4end != -1 && ipv4start != -1 && ipv4end - ipv4start + 1 > 1)
+	qsort(&addrs[ipv4start], ipv4end - ipv4start + 1, sizeof(struct addrinfo *), qcompare);
 
-    for(i = 0; i < addrnum; i++) {
+    for(i = 0; i < addrnum; ) {
 	    void *addr;
 
 	rp = addrs[i];
@@ -274,8 +286,10 @@ static int wwwconnect(const char *server, const char *proxy, int pport, char *ip
 		logg("*Ignoring mirror %s (has connected too many times with an outdated version)\n", ipaddr);
 
 	    ignored++;
-	    if(!loadbal || i + 1 < addrnum)
+	    if(!loadbal || i + 1 < addrnum) {
+		i++;
 		continue;
+	    }
 	}
 
 	if(mdat && loadbal) {
@@ -290,8 +304,10 @@ static int wwwconnect(const char *server, const char *proxy, int pport, char *ip
 			loadbal_rp = rp;
 			strncpy(loadbal_ipaddr, ipaddr, sizeof(loadbal_ipaddr));
 		    }
-		    if(i + 1 < addrnum)
+		    if(i + 1 < addrnum) {
+			i++;
 			continue;
+		    }
 		}
 	    }
 
@@ -306,6 +322,7 @@ static int wwwconnect(const char *server, const char *proxy, int pport, char *ip
 	    strncpy(ipaddr, loadbal_ipaddr, sizeof(ipaddr));
 
 	} else if(loadbal_rp == rp) {
+	    i++;
 	    continue;
 	}
 
@@ -344,6 +361,7 @@ static int wwwconnect(const char *server, const char *proxy, int pport, char *ip
 	    freeaddrinfo(res);
 	    return socketfd;
 	}
+	i++;
     }
     freeaddrinfo(res);
 
diff --git a/libclamav/Makefile.am b/libclamav/Makefile.am
index 99f2375..401477a 100644
--- a/libclamav/Makefile.am
+++ b/libclamav/Makefile.am
@@ -358,7 +358,9 @@ libclamav_la_SOURCES = \
 	cache.h \
 	bytecode_detect.c \
 	bytecode_detect.h\
-	builtin_bytecodes.h
+	builtin_bytecodes.h\
+	events.c\
+	events.h
 
 if !LINK_TOMMATH
 libclamav_la_SOURCES += bignum.c \
diff --git a/libclamav/Makefile.in b/libclamav/Makefile.in
index 7e105da..06d7309 100644
--- a/libclamav/Makefile.in
+++ b/libclamav/Makefile.in
@@ -158,7 +158,8 @@ am__libclamav_la_SOURCES_DIST = clamav.h matcher-ac.c matcher-ac.h \
 	type_desc.h bcfeatures.h bytecode_api.c bytecode_api_decl.c \
 	bytecode_api.h bytecode_api_impl.h bytecode_hooks.h cache.c \
 	cache.h bytecode_detect.c bytecode_detect.h \
-	builtin_bytecodes.h bignum.c bignum_class.h sha1.c sha1.h
+	builtin_bytecodes.h events.c events.h bignum.c bignum_class.h \
+	sha1.c sha1.h
 @LINK_TOMMATH_FALSE at am__objects_1 = libclamav_la-bignum.lo
 @BUILD_SHA1_TRUE at am__objects_2 = libclamav_la-sha1.lo
 am_libclamav_la_OBJECTS = libclamav_la-matcher-ac.lo \
@@ -210,7 +211,7 @@ am_libclamav_la_OBJECTS = libclamav_la-matcher-ac.lo \
 	libclamav_la-macho.lo libclamav_la-ishield.lo \
 	libclamav_la-bytecode_api.lo libclamav_la-bytecode_api_decl.lo \
 	libclamav_la-cache.lo libclamav_la-bytecode_detect.lo \
-	$(am__objects_1) $(am__objects_2)
+	libclamav_la-events.lo $(am__objects_1) $(am__objects_2)
 libclamav_la_OBJECTS = $(am_libclamav_la_OBJECTS)
 AM_V_lt = $(am__v_lt_$(V))
 am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY))
@@ -662,7 +663,8 @@ libclamav_la_SOURCES = clamav.h matcher-ac.c matcher-ac.h matcher-bm.c \
 	type_desc.h bcfeatures.h bytecode_api.c bytecode_api_decl.c \
 	bytecode_api.h bytecode_api_impl.h bytecode_hooks.h cache.c \
 	cache.h bytecode_detect.c bytecode_detect.h \
-	builtin_bytecodes.h $(am__append_7) $(am__append_8)
+	builtin_bytecodes.h events.c events.h $(am__append_7) \
+	$(am__append_8)
 noinst_LTLIBRARIES = libclamav_internal_utils.la libclamav_internal_utils_nothreads.la libclamav_nocxx.la
 COMMON_CLEANFILES = version.h version.h.tmp *.gcda *.gcno
 @MAINTAINER_MODE_TRUE at BUILT_SOURCES = jsparse/generated/operators.h jsparse/generated/keywords.h jsparse-keywords.gperf
@@ -818,6 +820,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_la-dsig.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_la-elf.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_la-entconv.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_la-events.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_la-explode.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_la-filetypes.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libclamav_la-filtering.Plo at am__quote@
@@ -1709,6 +1712,14 @@ libclamav_la-bytecode_detect.lo: bytecode_detect.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -c -o libclamav_la-bytecode_detect.lo `test -f 'bytecode_detect.c' || echo '$(srcdir)/'`bytecode_detect.c
 
+libclamav_la-events.lo: events.c
+ at 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) $(libclamav_la_CFLAGS) $(CFLAGS) -MT libclamav_la-events.lo -MD -MP -MF $(DEPDIR)/libclamav_la-events.Tpo -c -o libclamav_la-events.lo `test -f 'events.c' || echo '$(srcdir)/'`events.c
+ at am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libclamav_la-events.Tpo $(DEPDIR)/libclamav_la-events.Plo
+ at am__fastdepCC_FALSE@	$(AM_V_CC) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	source='events.c' object='libclamav_la-events.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@	DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCC_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libclamav_la_CFLAGS) $(CFLAGS) -c -o libclamav_la-events.lo `test -f 'events.c' || echo '$(srcdir)/'`events.c
+
 libclamav_la-bignum.lo: bignum.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) $(libclamav_la_CFLAGS) $(CFLAGS) -MT libclamav_la-bignum.lo -MD -MP -MF $(DEPDIR)/libclamav_la-bignum.Tpo -c -o libclamav_la-bignum.lo `test -f 'bignum.c' || echo '$(srcdir)/'`bignum.c
 @am__fastdepCC_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/libclamav_la-bignum.Tpo $(DEPDIR)/libclamav_la-bignum.Plo
diff --git a/libclamav/builtin_bytecodes.h b/libclamav/builtin_bytecodes.h
index 34c43c8..9ad28d9 100644
--- a/libclamav/builtin_bytecodes.h
+++ b/libclamav/builtin_bytecodes.h
@@ -29,53 +29,64 @@
  * fallback.
  * Usually bytecode.cvd will contain this bytecode */
 
-static const char* builtin_bc_startup = "ClamBCafheaie`fld|afefdfggifnf```aa```|biacflfafmfbfcfmb`cnbacacmbacdcicmbgfhcachcgcbchccf``bkbaap`clamcoincidencejb:1378\n"
+static const char* builtin_bc_startup = "ClamBCafhmknalkld|afefdfggifnf```aa```|biacflfafmfbfcfmb`cnbacacmbacgcgcmbgfbffcbficbfbfac``bgcaap`clamcoincidencejb:4096\n"
 "\n"
-"Teddaaahdabahdacahdadahdaeahdafahdagahebjfebidebifebhfebgfebffebedebefebdfebcfebadcbgab`bb`bb`bb`bb`bb`bb`bbbfbbfbbfbbfbbfbbfbbfahahahahahahahahahebgeebbfaaaaaaaab`baabb`bb`baacb`bbadb`baacb`bbheb`baacb`bb`bb`baadb`bbadb`bb`baadb`bbadbadb`bdbadahdbkaahdbbcahdbibahdb`eahdbddahdbodahdbdaahdbnbah\n"
-"Ebjdaibcdbke|bcaefnfgfifnfefoedfcfofnfffoelfeffgeflf``bbdbke|bkaefnfgfifnfefoeffegnfcfdgifofnfaflfifdgigoelfeffgeflf``agble|baadfefbfeggfoe`gbgifnfdgoeegifnfdg``bcable|afdgefcgdgbc``afbme|b`adfefbfeggfoe`gbgifnfdgoecgdgbg``bhdbne|b`agfefdgoeefnffgifbgofnfmfefnfdg``aaboe|afdgefcgdgac``bidb`f|bdadfifcgafbflfefoebfigdgefcfofdfefoeifff``bjdb`f|aodfifcgafbflfefoejfifdgoeifff``\n"
-"G`bha`@`b`aAa`bjfBifBkeBccBdcBmeBhcBfcB`bBdfBefBdgBefBcfBdgBefBdfBlbB`bBjdBidBdeB`bBnfBefBefBdfBcgB`bB`gBefBnfBdgBifBegBmfB`bBofBbgB`bBbfBefBdgBdgBefBbg@`bidBifBccBhcBfc@`bidBifBdcBhcBfc@`bifBbeBgeBheB`bBmfBafB`gB`gBifBnfBgfB`bBdfBefBnfBifBefBdfBnb@`bhfBneBceBedBldBifBnfBegBhgB`bBifBcgB`bB`gBbgBefBfgBefBnfBdgBifBnfBgfB`bBgbBefBhgBefBcfBmfBefBmfBgbB`bBafBcfBcfBefBcgBcgBnbAjBbeBegBnfB`bB`bBgbBcgBefBdgBcgBefBbfBofBofBlfB`bBmbB`eB`bBcfBlfBafBmfBdfBoeBegBcgBefBoeBjfBifBdgB`bBofBnfBgbBnb@`bgfBneB`eBafBheB`bBifBcgB`bB`gBbgBefBfgBefBnfBdgBifBnfBgfB`bBgbBmfB`gBbgBofBdgBefBcfBdgBgbB`bBafBcfBcfBefBcgBcgBnbAjBbeBegBnfB`bBgbB`gBafBhgBcfBdgBlfB`bBmbBcfBmfB`bBlcBefBhgBefBcfBegBdgBafBbfBlfBefBncBgb@`bffBneBbeBgeBheB`bBmfBafB`gB`gBifBnfBgfB`bBdfBefBnfBifBefBdfB`bBffBofBbgB`bBegBnfBkfBnfBofBggBnfB`bBbgBefBafBcgBofBnfBnbB`eBlfBefBafBcgBefB`bBbgBefB`gBofBbgBdgB`bBdgBofB`bBhfBdgBdgB`gBjcBobBobBbfBegBgfBcgBnbBcfBlfBafBmfBafBfgBnbBnfBefBdgAj@`bed@`befBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBefBhgBefBcfBegBdgBifBofBnfB`bBifBnfB`bBafBegBdgBofB`bBmfBofBdfBef@`bdfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBefBhgBefBcfBegBdgBifBofBnfB`bBggBifBdgBhfB`bBifBnfBdgBefBbgB`gBbgBefBdgBefBbgB`bBofBnfBlfBig@`bcfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBdfBifBcgBafBbfBlfBefBdf@`bad at Ab`bad at Ac`bad at Ad`bad at Ae`bad at Af`bad at Ag`bad at Ah`bad at Ai`bad at Aj`bad at Ak`bad at Al`\n"
-"A`b`bLbahb`bab`babgeab`b`bad`ah`aa`bad`ah`aa`bie`bad`b`b`aa`b`b`aa`b`b`b`b`bad`ah`b`b`b`b`aa`b`b`bad`ah`aa`ah`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`bad`ah`aa`bad`ah`aa`b`b`aa`b`b`b`b`aa`aa`aa`aa`aa`b`b`b`b`b`b`ah`aa`bcd`b`b`aa`bcd`b`b`bcd`b`b`aa`b`b`aa`b`b`b`b`aa`bad`ah`b`b`aa`b`b`aa`bad`ah`b`b`b`b`bad`ah`b`b`b`b`bad`ah`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`bad`ah`b`b`b`b`bcd`b`b`b`b`b`b`bad`ah`b`b`b`b`bcd`b`b`b`b`bcd`b`b`aa`b`b`bcd`b`b`aa`b`b`bcd`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`Fb`kbib\n"
-"Bb`bacabbbhdabClnadbadaddbbheabBdadahaegbadaaafeaahae at aTaaafb`aaa\n"
-"BbadagdbbheabB`adahahgbagaaaieaahahAaaTaaaiabae\n"
-"BbieajdbbheabAidbadakdbbieaj at db`balkbakAn`Addaaameab`bal at db`b`bbAadaaTaaamadac\n"
-"Bb`bankbakAo`Addaaaoeab`ban at db`baa`aaob`b`bbaaaaTbaad\n"
-"Bb`bb`abbaab`ab`bbaaabcbjdAm`@db`aTbaae\n"
-"BbadbbadbbheabBeadahbcagbbbab`bbda`abcab`bbeak`bdaAadaabfaeab`bbea at dTaabfaafal\n"
-"Bb`bbgaabcbjdB`a`@dAadbadbhadbbheabBaadahbiagbbhaaabjaeaahbiaAjaTaabjaagb`a\n"
-"Bahbkagbbbab`bbla`abkab`bbmak`blaAbdaabnaeab`bbma at dTaabnaaiah\n"
-"Bb`bboaabcbjdBaa`@dAadTbab`a\n"
-"Bb`bb`bk`blaAhdaababeab`bb`b at dTaababakaj\n"
-"Bb`bbbbabcbjdBba`@dAadTbab`a\n"
-"Bb`bbcbabcbjdBca`@dAadTbab`a\n"
-"BbadbdbdbbheabBaadahbebgbbdbaabfbeaahbebAjaTaabfbanam\n"
-"BbadbgbdbbheabBbadahbhbgbbgbaabibeaahbhbAfaTaabibanb`a\n"
-"Bb`bbjbk`bdaB`adaabkbeab`bbjb at dTaabkbb`aao\n"
-"Bb`bblbabcbjdBba`@dAadTbab`a\n"
-"Bb`bbmbabcbidBda`@d at daabnbnab`bbmbAadTaabnbbdabaa\n"
-"Baabobnab`bbmbAbdTaabobbcabba\n"
-"Baab`ceab`bbmbAbdTaab`cbgabha\n"
-"Baabaceab`bbmbAadTaabacbfabha\n"
-"Baabbceab`bbmb at dTaabbcbeabha\n"
-"Bb`bbccabbafBea`@dTbabha\n"
-"Bb`bbdcabbafBfa`@dTbabha\n"
-"Bb`bbecabbafBga`@dTbabha\n"
-"Bahbfcgbadaabgceaahbfc at aTaabgcbjabia\n"
-"BbcdbhcdbbheabAddb`bbicgbbhcaabjceab`bbic at db`b`bbEamjnmd`Taabjcbhbbja\n"
-"BbcdbkcdbbheabAfdb`bblcgbbkcbcdbmcdbbheabAedb`bbncgbbmcaabociab`bblcbncb`b`bbEbmjnmd`Taabocbhbbka\n"
-"Bb`bb`dab`bbdaabadeab`bbncb`db`b`bbEcmjnmd`Taabadblabhb\n"
-"Bb`bbbdgbbkcb`bbcdab`bcdaabddeab`bbbdbcdb`b`bbEdmjnmd`Taabddbmabhb\n"
-"BbadbeddbbheabAndahbfdgbbedb`bbgd`abfdaabhdlbb`bbid`abhdaabjdeab`bbgdbidb`b`bbEemjnmd`Taabjdbnabhb\n"
-"BbadbkddbbheabBaadahbldgbbkdb`bbmd`abldb`bbndh`bmdBhadbadboddbbheabB`adahb`egbbodb`bbae`ab`eb`bbbeh`baeBdadbadbcedbbheabBcadahbdegbbceb`bbee`abdeb`bbfeh`beeB`adb`bbgegbbmcb`bbheh`bgeAhdb`bbiegbbkcb`bbjel`bbebndb`bbkel`bjebheb`bblel`bkebieb`bbmel`blebfeb`bbneh`bgdBladbadboedbbheabAodahb`fgbboeb`bbaf`ab`fb`bbbfh`bafBhadbcdbcfdbbheabAddb`bbdfgbbcfb`bbefl`bdfbneb`bbffl`befbbfbadbgfdbbheabBeadahbhfgbbgfb`bbif`abhfb`bbjfh`bifBhadbcdbkfdbbheabAcdb`bblfgbbkfb`bbmfl`bjfblfbcdbnfdbbheab at db`bbofgbbnfaab`geab`bbmebofTaab`gb`bboa\n"
-"Bb`bbagabaagbmeTcab`bEfmjnmd\n"
-"BbcdbbgdbbheabAadb`bbcggbbbgaabdgeab`bbffbcgTaabdgbbbbab\n"
-"Bb`bbegabaagbffTcab`bEgmjnmd\n"
-"BbcdbfgdbbheabAbdb`bbgggbbfgaabhgeab`bbmfbggTaabhgbdbbcb\n"
-"Bb`bbigabaagbmfTcab`bEhmjnmd\n"
-"Bb`bbjgabbaaHonnkm``odHm``oonnkdaabkgeab`bbjgHhgfedcbadTaabkgbfbbeb\n"
-"Bb`bblgabaagbjgTcab`bEimjnmd\n"
-"Bb`bbmgababcaDm``odaabngeab`bbmgDo``mdb`b`bbHnejkjgjmd`Taabngbhbbgb\n"
-"Bb`bbogabaagbmgTcab`bF`amjnmd\n"
-"Bb`bb`hbb`b`hTcab`bb`hE\n"
+"Teddaaahdabahdacahdadahdaeahdafahdagahebfgebidebegebdgebgdebkdebcgebbgebageb`gebofebnfebmfebedeblfebkfebjfebadcbgab`bb`bb`bb`bb`bb`bb`bbifbifbifbifbifbifbifahahahahahahahahahebneebifaaaaaaaab`baabb`bb`baacb`bbadb`baacb`bboeb`baacb`bb`bb`baadb`bbadb`bb`baadb`bbadbadb`bdbadahdbkaahdbbcahdbibahdb`eahdbddahdbodahdbdaahdaiahdakahdamahdahahdbgcahdbnbah\n"
+"Ebjdaibcdbbf|bcaefnfgfifnfefoedfcfofnfffoelfeffgeflf``bbdbbf|bkaefnfgfifnfefoeffegnfcfdgifofnfaflfifdgigoelfeffgeflf``agbcf|baadfefbfeggfoe`gbgifnfdgoeegifnfdg``bcabcf|afdgefcgdgbc``afbdf|b`adfefbfeggfoe`gbgifnfdgoecgdgbg``bhdbef|b`agfefdgoeefnffgifbgofnfmfefnfdg``aabff|afdgefcgdgac``bidbgf|bdadfifcgafbflfefoebfigdgefcfofdfefoeifff``bjdbgf|aodfifcgafbflfefoejfifdgoeifff``\n"
+"G`b`c`@`b`aAa`bfgBifBkeBccBdcBmeBhcBfcB`bBdfBefBdgBefBcfBdgBefBdfBlbB`bBjdBidBdeB`bBnfBefBefBdfBcgB`bB`gBefBnfBdgBifBegBmfB`bBofBbgB`bBbfBefBdgBdgBefBbg@`bidBifBccBhcBfc@`bidBifBdcBhcBfc@`begBcdB`eBeeB`bBdfBofBefBcgBnfBgbBdgB`bBcgBegB`gB`gBofBbgBdgB`bBcdBmdBodBfeBlbB`bBggBofBegBlfBdfB`bBnfBefBefBdfB`bBldBldBfeBmdB`bBbcBnbBhcB`bBdgBofB`bBggBofBbgBkfBab@`bidBifBecBhcBfc@`bdgB`gBefBnfBdgBifBegBmf@`bidBifBfcBhcBfc@`bgdBkfBfc@`bidBkfBfcBmbBbc@`bidBkfBfcBmbBcc@`bkdBafBdgBhfBlfBofBnf@`bcgBafBdgBhfBlfBofBnfBmbBdgBbfBifBbgBdf@`bbgBggBifBnfBcfBhfBifB`gBmbBcfBfc@`bagBggBifBnfBcfBhfBifB`gBbc@`bgdBcfBcc@`b`gBbeBgeBheB`bBmfBafB`gB`gBifBnfBgfB`bBdfBefBnfBifBefBdfBnb@`bofBneBceBedBldBifBnfBegBhgB`bBifBcgB`bB`gBbgBefBfgBefBnfBdgBifBnfBgfB`bBgbBefBhgBefBcfBmfBefBmfBgbB`bBafBcfBcfBefBcgBcgBnbAjBbeBegBnfB`bB`bBgbBcgBefBdgBcgBefBbfBofBofBlfB`bBmbB`eB`bBcfBlfBafBmfBdfBoeBegBcgBefBoeBjfBifBdgB`bBofBnfBgbBnb@`bnfBneB`eBafBheB`bBifBcgB`bB`gBbgBefBfgBefBnfBdgBifBnfBgfB`bBgbBmfB`gBbgBofBdgBefBcfBdgBgbB`bBafBcfBcfBefBcgBcgBnbAjBbeBegBnfB`bBgbB`gBafBhgBcfBdgBlfB`bBmbBcfBmfB`bBlcBefBhgBefBcfBegBdgBafBbfBlfBefBncBgb@`bmfBneBbeBgeBheB`bBmfBafB`gB`gBifBnfBgfB`bBdfBefBnfBifBefBdfB`bBffBofBbgB`bBegBnfBkfBnfBofBggBnfB`bBbgBefBafBcgBofBnfBnbB`eBlfBefBafBcgBefB`bBbgBefB`gBofBbgBdgB`bBdgBofB`bBhfBdgBdgB`gBjcBobBobBbfBegBgfBcgBnbBcfBlfBafBmfBafBfgBnbBnfBefBdgAj@`bed@`blfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBefBhgBefBcfBegBdgBifBofBnfB`bBifBnfB`bBafBegBdgBofB`bBmfBofBdfBef@`bkfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBefBhgBefBcfBegBdgBifBofBnfB`bBggBifBdgBhfB`bBifBnfBdgBefBbgB`gBbgBefBdgBefBbgB`bBofBnfBlfBig@`bjfBcgBdgBafBbgBdgBegB`gBjcB`bBbfBigBdgBefBcfBofBdfBefB`bBdfBifBcgBafBbfBlfBefBdf@`bad at Ab`bad at Ac`bad at Ad`bad at Ae`bad at Af`bad at Ag`bad at Ah`bad at Ai`bad at Aj`bad at Ak`bad at Al`bad at Am`bad at An`bad at Ao`bad at B`a`bad at Baa`bad at Bba`bad at Bca`bad at Bda`bad at Bea`bad at Bfa`bad at Bga`bad at Bha`\n"
+"A`b`bLbjib`bab`bab`babneab`b`bad`ah`aa`bad`ah`aa`b`f`bad`b`b`aa`b`b`aa`b`b`b`b`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`aa`b`b`b`b`bad`ah`b`b`b`b`aa`b`b`bad`ah`aa`ah`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`bad`ah`aa`bad`ah`aa`b`b`aa`b`b`b`b`aa`aa`aa`aa`aa`b`b`b`b`b`b`ah`aa`bcd`b`b`aa`bcd`b`b`bcd`b`b`aa`b`b`aa`b`b`b`b`aa`bad`ah`b`b`aa`b`b`aa`bad`ah`b`b`b`b`bad`ah`b`b`b`b`bad`ah`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`b`bad`ah`b`b`b`b`bcd`b`b`b`b`b`b`bad`ah`b`b`b`b`bcd`b`b`b`b`bcd`b`b`aa`b`b`bcd`b`b`aa`b`b`bcd`b`b`aa`b`b`b`b`aa`b`b`b`b`aa`b`b`b`b`Fbombdc\n"
+"Bb`badabbbhdacClnadbadaedbboeacBdadahafgbaeaaageaahaf at aTaaagbkaaa\n"
+"BbadahdbboeacB`adahaigbahaaajeaahaiAaaTaaajabb`a\n"
+"Bb`fakdbboeacAidbadaldbb`fak at db`bamkbalBja`Addaaaneab`bam at db`b`bbAadabTaaanadac\n"
+"Bb`baokbalBka`Addaab`aeab`bao at db`bab`ab`ab`b`bbababTbaad\n"
+"Bb`bbaabbabbaab`bbbaabcbjdBia`@dbaab`bbcakbalBma`Addaabdaeab`bbca at db`b`bbAadaaTaabdaaoae\n"
+"Bb`bbeakbalBna`Agdaabfaeab`bbea at db`b`bbAadaaTaabfaaoaf\n"
+"Bb`bbgakbalBoa`Addaabhaeab`bbga at db`b`bbAadaaTaabhaaoag\n"
+"Bb`bbiakbalB`b`Abdaabjaeab`bbia at db`b`bbAadaaTaabjaaoah\n"
+"Bb`bbkakbalBab`Addaablaeab`bbka at db`b`bbAadaaTaablaaoai\n"
+"Bb`bbmakbalBbb`Addaabnaeab`bbma at db`b`bbAadaaTaabnaaoaj\n"
+"Bb`bboakbalBcb`Afdaab`beab`bboa at db`b`bbAadaaTaab`baoak\n"
+"Bb`bbabkbalBdb`Aldaabbbeab`bbab at db`b`bbAadaaTaabbbaoal\n"
+"Bb`bbcbkbalBeb`Ajdaabdbeab`bbcb at db`b`bbAadaaTaabdbaoam\n"
+"Bb`bbebkbalBfb`Ahdaabfbeab`bbeb at db`b`bbAadaaTaabfbaoan\n"
+"Bb`bbgbkbalBgb`Abdaabhbeab`bbgb at db`baa`abhbb`b`bbaaaaTbaao\n"
+"Bb`bbibbbaabibb`bbjbabcbjdBla`@dbibTbab`a\n"
+"BbadbkbdbboeacBeadahblbgbbkbb`bbmb`ablbb`bbnbk`bmbAadaabobeab`bbnb at dTaabobbaabga\n"
+"Bb`bb`cabcbjdBhb`@dAadbadbacdbboeacBaadahbbcgbbacaabcceaahbbcAjaTaabccbbabka\n"
+"Bahbdcgbbkbb`bbec`abdcb`bbfck`becAbdaabgceab`bbfc at dTaabgcbdabca\n"
+"Bb`bbhcabcbjdBib`@dAadTbabka\n"
+"Bb`bbick`becAhdaabjceab`bbic at dTaabjcbfabea\n"
+"Bb`bbkcabcbjdBjb`@dAadTbabka\n"
+"Bb`bblcabcbjdBkb`@dAadTbabka\n"
+"BbadbmcdbboeacBaadahbncgbbmcaaboceaahbncAjaTaabocbiabha\n"
+"Bbadb`ddbboeacBbadahbadgbb`daabbdeaahbadAfaTaabbdbiabka\n"
+"Bb`bbcdk`bmbB`adaabddeab`bbcd at dTaabddbkabja\n"
+"Bb`bbedabcbjdBjb`@dAadTbabka\n"
+"Bb`bbfdabcbidBlb`@d at daabgdnab`bbfdAadTaabgdboabla\n"
+"Baabhdnab`bbfdAbdTaabhdbnabma\n"
+"Baabideab`bbfdAbdTaabidbbbbcb\n"
+"Baabjdeab`bbfdAadTaabjdbabbcb\n"
+"Baabkdeab`bbfd at dTaabkdb`bbcb\n"
+"Bb`bbldabbafBmb`@dTbabcb\n"
+"Bb`bbmdabbafBnb`@dTbabcb\n"
+"Bb`bbndabbafBob`@dTbabcb\n"
+"Bahbodgbaeaab`eeaahbod at aTaab`ebebbdb\n"
+"BbcdbaedbboeacAddb`bbbegbbaeaabceeab`bbbe at db`b`bbEamjnmd`Taabcebccbeb\n"
+"BbcdbdedbboeacAfdb`bbeegbbdebcdbfedbboeacAedb`bbgegbbfeaabheiab`bbeebgeb`b`bbEbmjnmd`Taabhebccbfb\n"
+"Bb`bbieab`bbdaabjeeab`bbgebieb`b`bbEcmjnmd`Taabjebgbbcc\n"
+"Bb`bbkegbbdeb`bbleab`bcdaabmeeab`bbkebleb`b`bbEdmjnmd`Taabmebhbbcc\n"
+"BbadbnedbboeacAndahboegbbneb`bb`f`aboeaabaflbb`bbbf`abafaabcfeab`bb`fbbfb`b`bbEemjnmd`Taabcfbibbcc\n"
+"BbadbdfdbboeacBaadahbefgbbdfb`bbff`abefb`bbgfh`bffBhadbadbhfdbboeacB`adahbifgbbhfb`bbjf`abifb`bbkfh`bjfBdadbadblfdbboeacBcadahbmfgbblfb`bbnf`abmfb`bbofh`bnfB`adb`bb`ggbbfeb`bbagh`b`gAhdb`bbbggbbdeb`bbcgl`bkfbgfb`bbdgl`bcgbagb`bbegl`bdgbbgb`bbfgl`begbofb`bbggh`b`fBladbadbhgdbboeacAodahbiggbbhgb`bbjg`abigb`bbkgh`bjgBhadbcdblgdbboeacAddb`bbmggbblgb`bbngl`bmgbggb`bbogl`bngbkgbadb`hdbboeacBeadahbahgbb`hb`bbbh`abahb`bbchh`bbhBhadbcdbdhdbboeacAcdb`bbehgbbdhb`bbfhl`bchbehbcdbghdbboeac at db`bbhhgbbghaabiheab`bbfgbhhTaabihbkbbjb\n"
+"Bb`bbjhabaagbfgTcab`bEfmjnmd\n"
+"BbcdbkhdbboeacAadb`bblhgbbkhaabmheab`bbogblhTaabmhbmbblb\n"
+"Bb`bbnhabaagbogTcab`bEgmjnmd\n"
+"BbcdbohdbboeacAbdb`bb`igbbohaabaieab`bbfhb`iTaabaibobbnb\n"
+"Bb`bbbiabaagbfhTcab`bEhmjnmd\n"
+"Bb`bbciabbaaHonnkm``odHm``oonnkdaabdieab`bbciHhgfedcbadTaabdibacb`c\n"
+"Bb`bbeiabaagbciTcab`bEimjnmd\n"
+"Bb`bbfiababcaDm``odaabgieab`bbfiDo``mdb`b`bbHnejkjgjmd`Taabgibccbbc\n"
+"Bb`bbhiabaagbfiTcab`bF`amjnmd\n"
+"Bb`bbiibb`biiTcab`bbiiE\n"
 ;
 /* source-code for builtin_bc_startup: */
 #if 0
@@ -97,6 +108,21 @@ int entrypoint()
       disable_jit_if("i[34]86 detected, JIT needs pentium or better",0,
                      !memcmp(env.cpu,"i386",4) ||
                      !memcmp(env.cpu,"i486",4));
+      /* FIXME: update embedded LLVM to 2.8 which correctly skips CMOV if CPU
+       * doesn't support it.
+       * For now disable JIT on CPUs without cmov */
+      disable_jit_if("CPU doesn't support CMOV, would need LLVM 2.8 to work!",0,
+		     !memcmp(env.cpu,"i586",4) ||
+		     !memcmp(env.cpu,"pentium",7) ||
+		     !memcmp(env.cpu,"i686",4) ||
+		     !memcmp(env.cpu,"k6",2) ||
+		     !memcmp(env.cpu,"k6-2",4) ||
+		     !memcmp(env.cpu,"k6-3",4) ||
+		     !memcmp(env.cpu,"athlon",6) ||
+		     !memcmp(env.cpu,"athlon-tbird",12) ||
+		     !memcmp(env.cpu,"winchip-c6",10) ||
+		     !memcmp(env.cpu,"winchip2",8) ||
+		     !memcmp(env.cpu,"c3",2));
       break;
     default:
       break;
diff --git a/libclamav/bytecode.c b/libclamav/bytecode.c
index c1e6b96..aec614a 100644
--- a/libclamav/bytecode.c
+++ b/libclamav/bytecode.c
@@ -165,7 +165,7 @@ static int cli_bytecode_context_reset(struct cli_bc_ctx *ctx)
     }
     ctx->numParams = 0;
     ctx->funcid = 0;
-    ctx->file_size = 0;
+    /* don't touch fmap, file_size, and hooks, sections, ctx, timeout, pdf* */
     ctx->off = 0;
     ctx->written = 0;
     ctx->jsnormwritten = 0;
@@ -779,6 +779,13 @@ static int parseTypes(struct cli_bc *bc, unsigned char *buffer)
 		return CL_EMALFDB;
 	}
     }
+    for (i=(BC_START_TID - 65);i<bc->num_types-1;i++) {
+	struct cli_bc_type *ty = &bc->types[i];
+	if (ty->kind == DArrayType) {
+	    ty->size = ty->numElements*typesize(bc, ty->containedTypes[0]);
+	    ty->align = typealign(bc, ty->containedTypes[0]);
+	}
+    }
     return CL_SUCCESS;
 }
 
@@ -1559,11 +1566,52 @@ int cli_bytecode_load(struct cli_bc *bc, FILE *f, struct cli_dbio *dbio, int tru
     return CL_SUCCESS;
 }
 
+static struct {
+    enum bc_events id;
+    const char *name;
+    enum ev_type type;
+    enum multiple_handling multiple;
+} bc_events[] = {
+    {BCEV_VIRUSNAME, "virusname", ev_string, multiple_last},
+    {BCEV_EXEC_RETURNVALUE, "returnvalue", ev_int, multiple_last},
+    {BCEV_WRITE, "bcapi_write", ev_data_fast, multiple_sum},
+    {BCEV_OFFSET, "read offset", ev_int, multiple_sum},
+    {BCEV_READ, "read data", ev_data_fast, multiple_sum},
+    //{BCEV_READ, "read data", ev_data, multiple_concat},
+    {BCEV_DBG_STR, "debug message", ev_data_fast, multiple_sum},
+    {BCEV_DBG_INT, "debug int", ev_int, multiple_sum},
+    {BCEV_MEM_1, "memmem 1", ev_data_fast, multiple_sum},
+    {BCEV_MEM_2, "memmem 2", ev_data_fast, multiple_sum},
+    {BCEV_FIND, "find", ev_data_fast, multiple_sum},
+    {BCEV_EXTRACTED, "extracted files", ev_int, multiple_sum},
+    {BCEV_READ_ERR, "read errors", ev_int, multiple_sum},
+    {BCEV_DISASM_FAIL, "disasm fails", ev_int, multiple_sum},
+    {BCEV_EXEC_TIME, "bytecode execute", ev_time, multiple_sum}
+};
+
+static int register_events(cli_events_t *ev)
+{
+    unsigned i;
+    for (i=0;i<sizeof(bc_events)/sizeof(bc_events[0]);i++) {
+	if (cli_event_define(ev, bc_events[i].id, bc_events[i].name, bc_events[i].type,
+			     bc_events[i].multiple) == -1)
+	    return -1;
+    }
+    return 0;
+}
+
 int cli_bytecode_run(const struct cli_all_bc *bcs, const struct cli_bc *bc, struct cli_bc_ctx *ctx)
 {
-    int ret;
+    int ret = CL_SUCCESS;
     struct cli_bc_inst inst;
     struct cli_bc_func func;
+    cli_events_t *jit_ev = NULL, *interp_ev = NULL;
+
+    int test_mode = 0;
+    cli_ctx *cctx =(cli_ctx*)ctx->ctx;
+    if (cctx && cctx->engine->bytecode_mode == CL_BYTECODE_MODE_TEST)
+	test_mode = 1;
+
     if (!ctx || !ctx->bc || !ctx->func)
 	return CL_ENULLARG;
     if (ctx->numParams && (!ctx->values || !ctx->operands))
@@ -1578,7 +1626,23 @@ int cli_bytecode_run(const struct cli_all_bc *bcs, const struct cli_bc *bc, stru
     }
     ctx->env = &bcs->env;
     context_safe(ctx);
-    if (bc->state == bc_interp) {
+    if (test_mode) {
+	jit_ev = cli_events_new(BCEV_LASTEVENT);
+	interp_ev = cli_events_new(BCEV_LASTEVENT);
+	if (!jit_ev || !interp_ev) {
+	    cli_events_free(jit_ev);
+	    cli_events_free(interp_ev);
+	    return CL_EMEM;
+	}
+	if (register_events(jit_ev) == -1 ||
+	    register_events(interp_ev) == -1) {
+	    cli_events_free(jit_ev);
+	    cli_events_free(interp_ev);
+	    return CL_EBYTECODE_TESTFAIL;
+	}
+    }
+    if (bc->state == bc_interp || test_mode) {
+	ctx->bc_events = interp_ev;
 	memset(&func, 0, sizeof(func));
 	func.numInsts = 1;
 	func.numValues = 1;
@@ -1594,16 +1658,84 @@ int cli_bytecode_run(const struct cli_all_bc *bcs, const struct cli_bc *bc, stru
 	inst.u.ops.funcid = ctx->funcid;
 	inst.u.ops.ops = ctx->operands;
 	inst.u.ops.opsizes = ctx->opsizes;
-	cli_dbgmsg("Bytecode: executing in interpeter mode\n");
+	cli_dbgmsg("Bytecode %u: executing in interpeter mode\n", bc->id);
+
+	ctx->on_jit = 0;
+
+	cli_event_time_start(interp_ev, BCEV_EXEC_TIME);
 	ret = cli_vm_execute(ctx->bc, ctx, &func, &inst);
-    } else {
-	cli_dbgmsg("Bytecode: executing in JIT mode\n");
+	cli_event_time_stop(interp_ev, BCEV_EXEC_TIME);
+
+	cli_event_int(interp_ev, BCEV_EXEC_RETURNVALUE, ret);
+	cli_event_string(interp_ev, BCEV_VIRUSNAME, ctx->virname);
+
+	/* need to be called here to catch any extracted but not yet scanned files
+	*/
+	if (ctx->outfd)
+	    cli_bcapi_extract_new(ctx, -1);
+    }
+    if (bc->state == bc_jit || test_mode) {
+	if (test_mode) {
+	    ctx->off = 0;
+	}
+	ctx->bc_events = jit_ev;
+	cli_dbgmsg("Bytecode %u: executing in JIT mode\n", bc->id);
+
+	ctx->on_jit = 1;
+	cli_event_time_start(jit_ev, BCEV_EXEC_TIME);
 	ret = cli_vm_execute_jit(bcs, ctx, &bc->funcs[ctx->funcid]);
+	cli_event_time_stop(jit_ev, BCEV_EXEC_TIME);
+
+	cli_event_int(jit_ev, BCEV_EXEC_RETURNVALUE, ret);
+	cli_event_string(jit_ev, BCEV_VIRUSNAME, ctx->virname);
+
+	/* need to be called here to catch any extracted but not yet scanned files
+	*/
+	if (ctx->outfd)
+	    cli_bcapi_extract_new(ctx, -1);
     }
-    /* need to be called here to catch any extracted but not yet scanned files
-     */
-    if (ctx->outfd)
-	cli_bcapi_extract_new(ctx, -1);
+
+    if (test_mode) {
+	unsigned interp_errors = cli_event_errors(interp_ev);
+	unsigned jit_errors = cli_event_errors(jit_ev);
+	unsigned interp_warns = 0, jit_warns = 0;
+	int ok = 1;
+	enum bc_events evid;
+
+	if (interp_errors || jit_errors) {
+	    cli_infomsg(cctx, "bytecode %d encountered %u JIT and %u interpreter errors\n",
+			bc->id, interp_errors, jit_errors);
+	    ok = 0;
+	}
+	if (!ctx->no_diff && cli_event_diff_all(interp_ev, jit_ev, NULL)) {
+	    cli_infomsg(cctx, "bytecode %d execution different with JIT and interpreter, see --debug for details\n",
+			bc->id);
+	    ok = 0;
+	}
+	for (evid=BCEV_API_WARN_BEGIN+1;evid < BCEV_API_WARN_END;evid++) {
+	    union ev_val v;
+	    uint32_t count = 0;
+	    cli_event_get(interp_ev, evid, &v, &count);
+	    interp_warns += count;
+	    count = 0;
+	    cli_event_get(jit_ev, evid, &v, &count);
+	    jit_warns += count;
+	}
+	if (interp_warns || jit_warns) {
+	    cli_infomsg(cctx, "bytecode %d encountered %u JIT and %u interpreter warnings\n",
+			bc->id, interp_warns, jit_warns);
+	    ok = 0;
+	}
+	/*cli_event_debug(jit_ev, BCEV_EXEC_TIME);
+	cli_event_debug(interp_ev, BCEV_EXEC_TIME);*/
+	if (!ok) {
+	    cli_events_free(jit_ev);
+	    cli_events_free(interp_ev);
+	    return CL_EBYTECODE_TESTFAIL;
+	}
+    }
+    cli_events_free(jit_ev);
+    cli_events_free(interp_ev);
     return ret;
 }
 
@@ -1847,6 +1979,7 @@ static int cli_bytecode_prepare_interpreter(struct cli_bc *bc)
 	    uint16_t ty = bcfunc->types[j];
 	    unsigned align;
 	    align = typealign(bc, ty);
+	    assert(!ty || typesize(bc, ty));
 	    assert(align);
 	    bcfunc->numBytes  = (bcfunc->numBytes + align-1)&(~(align-1));
 	    map[j] = bcfunc->numBytes;
@@ -2361,6 +2494,10 @@ int cli_bytecode_prepare2(struct cl_engine *engine, struct cli_all_bc *bcs, unsi
 	    cli_errmsg("Bytecode: JIT required, but not all bytecodes could be prepared with JIT\n");
 	    return CL_EMALFDB;
 	}
+	if (rc && engine->bytecode_mode == CL_BYTECODE_MODE_TEST) {
+	    cli_errmsg("Bytecode: Test mode, but not all bytecodes could be prepared with JIT\n");
+	    return CL_EBYTECODE_TESTFAIL;
+	}
     } else {
 	cli_bytecode_done_jit(bcs, 0);
     }
@@ -2382,7 +2519,8 @@ int cli_bytecode_prepare2(struct cl_engine *engine, struct cli_all_bc *bcs, unsi
 	struct cli_bc *bc = &bcs->all_bcs[i];
 	if (bc->state == bc_jit) {
 	    jitcount++;
-	    continue;
+	    if (engine->bytecode_mode != CL_BYTECODE_MODE_TEST)
+		continue;
 	}
 	if (bc->state == bc_interp) {
 	    interp++;
@@ -2397,8 +2535,7 @@ int cli_bytecode_prepare2(struct cl_engine *engine, struct cli_all_bc *bcs, unsi
 	interp++;
     }
     cli_dbgmsg("Bytecode: %u bytecode prepared with JIT, "
-	       "%u prepared with interpreter, %u failed\n", jitcount, interp,
-	       bcs->count - jitcount - interp);
+	       "%u prepared with interpreter, %u total\n", jitcount, interp, bcs->count);
     return CL_SUCCESS;
 }
 
@@ -2461,13 +2598,15 @@ int cli_bytecode_runlsig(cli_ctx *cctx, struct cli_target_info *tinfo,
 	/* save match counts */
 	memcpy(&ctx.lsigcnt, lsigcnt, 64*4);
 	memcpy(&ctx.lsigoff, lsigsuboff, 64*4);
+	cli_bytecode_context_clear(&ctx);
 	return CL_SUCCESS;
     }
 
     cli_dbgmsg("Running bytecode for logical signature match\n");
     ret = cli_bytecode_run(bcs, bc, &ctx);
     if (ret != CL_SUCCESS) {
-	cli_warnmsg("Bytcode failed to run: %s\n", cl_strerror(ret));
+	cli_warnmsg("Bytcode %u failed to run: %s\n", bc->id, cl_strerror(ret));
+	cli_bytecode_context_clear(&ctx);
 	return CL_SUCCESS;
     }
     if (ctx.virname) {
@@ -2494,11 +2633,11 @@ int cli_bytecode_runhook(cli_ctx *cctx, const struct cl_engine *engine, struct c
     const unsigned *hooks = engine->hooks[id - _BC_START_HOOKS];
     unsigned i, hooks_cnt = engine->hooks_cnt[id - _BC_START_HOOKS];
     int ret;
-    unsigned executed = 0, breakflag = 0;
+    unsigned executed = 0, breakflag = 0, errorflag = 0;
 
-    cli_bytecode_context_setfile(ctx, map);
     cli_dbgmsg("Bytecode executing hook id %u (%u hooks)\n", id, hooks_cnt);
     /* restore match counts */
+    cli_bytecode_context_setfile(ctx, map);
     ctx->hooks.match_counts = ctx->lsigcnt;
     ctx->hooks.match_offsets = ctx->lsigoff;
     for (i=0;i < hooks_cnt;i++) {
@@ -2513,7 +2652,8 @@ int cli_bytecode_runhook(cli_ctx *cctx, const struct cl_engine *engine, struct c
 	ret = cli_bytecode_run(&engine->bcs, bc, ctx);
 	executed++;
 	if (ret != CL_SUCCESS) {
-	    cli_warnmsg("Bytecode failed to run: %s\n", cl_strerror(ret));
+	    cli_warnmsg("Bytecode %u failed to run: %s\n", bc->id, cl_strerror(ret));
+	    errorflag = 1;
 	    continue;
 	}
 	if (ctx->virname) {
@@ -2567,6 +2707,8 @@ int cli_bytecode_runhook(cli_ctx *cctx, const struct cl_engine *engine, struct c
 	cli_dbgmsg("Bytecode: executed %u bytecodes for this hook\n", executed);
     else
 	cli_dbgmsg("Bytecode: no logical signature matched, no bytecode executed\n");
+    if (errorflag && cctx && cctx->engine->bytecode_mode == CL_BYTECODE_MODE_TEST)
+	return CL_EBYTECODE_TESTFAIL;
     return breakflag ? CL_BREAK : CL_CLEAN;
 }
 
diff --git a/libclamav/bytecode_api.c b/libclamav/bytecode_api.c
index 43d5f06..014dcfd 100644
--- a/libclamav/bytecode_api.c
+++ b/libclamav/bytecode_api.c
@@ -50,6 +50,12 @@
 #include "str.h"
 #include "filetypes.h"
 
+#define EV ctx->bc_events
+
+#define STRINGIFY(x) #x
+#define TOSTRING(x) STRINGIFY(x)
+#define  API_MISUSE() cli_event_error_str(EV, "API misuse @" TOSTRING(__LINE__ ))
+
 uint32_t cli_bcapi_test1(struct cli_bc_ctx *ctx, uint32_t a, uint32_t b)
 {
     return (a==0xf00dbeef && b==0xbeeff00d) ? 0x12345678 : 0x55;
@@ -63,18 +69,24 @@ uint32_t cli_bcapi_test2(struct cli_bc_ctx *ctx, uint32_t a)
 int32_t cli_bcapi_read(struct cli_bc_ctx* ctx, uint8_t *data, int32_t size)
 {
     int n;
-    if (!ctx->fmap)
+    if (!ctx->fmap) {
+	API_MISUSE();
 	return -1;
+    }
     if (size < 0 || size > CLI_MAX_ALLOCATION) {
 	cli_warnmsg("bytecode: negative read size: %d\n", size);
+	API_MISUSE();
 	return -1;
     }
-/*    cli_dbgmsg("read data at %d\n", ctx->off);*/
     n = fmap_readn(ctx->fmap, data, ctx->off, size);
     if (n <= 0) {
-	cli_dbgmsg("bcapi_read: fmap_readn failed\n");
+	cli_dbgmsg("bcapi_read: fmap_readn failed (requested %d)\n", size);
+	cli_event_count(EV, BCEV_READ_ERR);
 	return n;
     }
+    cli_event_int(EV, BCEV_OFFSET, ctx->off);
+    cli_event_fastdata(EV, BCEV_READ, data, size);
+    //cli_event_data(EV, BCEV_READ, data, n);
     ctx->off += n;
     return n;
 }
@@ -84,6 +96,7 @@ int32_t cli_bcapi_seek(struct cli_bc_ctx* ctx, int32_t pos, uint32_t whence)
     off_t off;
     if (!ctx->fmap) {
 	cli_dbgmsg("bcapi_seek: no fmap\n");
+	API_MISUSE();
 	return -1;
     }
     switch (whence) {
@@ -97,6 +110,7 @@ int32_t cli_bcapi_seek(struct cli_bc_ctx* ctx, int32_t pos, uint32_t whence)
 	    off = ctx->file_size + pos;
 	    break;
 	default:
+	    API_MISUSE();
 	    cli_dbgmsg("bcapi_seek: invalid whence value\n");
 	    return -1;
     }
@@ -105,18 +119,21 @@ int32_t cli_bcapi_seek(struct cli_bc_ctx* ctx, int32_t pos, uint32_t whence)
 		   off, ctx->file_size);
 	return -1;
     }
+    cli_event_int(EV, BCEV_OFFSET, off);
     ctx->off = off;
     return off;
 }
 
 uint32_t cli_bcapi_debug_print_str(struct cli_bc_ctx *ctx, const uint8_t *str, uint32_t len)
 {
+    cli_event_fastdata(EV, BCEV_DBG_STR, str, strlen((const char*)str));
     cli_dbgmsg("bytecode debug: %s\n", str);
     return 0;
 }
 
 uint32_t cli_bcapi_debug_print_uint(struct cli_bc_ctx *ctx, uint32_t a)
 {
+    cli_event_int(EV, BCEV_DBG_INT, a);
     if (!cli_debug_flag)
 	return 0;
     return fprintf(stderr, "%d", a);
@@ -136,8 +153,10 @@ uint32_t cli_bcapi_disasm_x86(struct cli_bc_ctx *ctx, struct DISASM_RESULT *res,
     int n;
     const unsigned char *buf;
     const unsigned char* next;
-    if (!res || !ctx->fmap || ctx->off >= ctx->fmap->len)
+    if (!res || !ctx->fmap || ctx->off >= ctx->fmap->len) {
+	API_MISUSE();
 	return -1;
+    }
     /* 32 should be longest instr we support decoding.
      * When we'll support mmx/sse instructions this should be updated! */
     n = MIN(32, ctx->fmap->len - ctx->off);
@@ -145,6 +164,7 @@ uint32_t cli_bcapi_disasm_x86(struct cli_bc_ctx *ctx, struct DISASM_RESULT *res,
     next = cli_disasm_one(buf, n, res, 0);
     if (!next) {
 	cli_dbgmsg("bcapi_disasm: failed\n");
+	cli_event_count(EV, BCEV_DISASM_FAIL);
 	return -1;
     }
     return ctx->off + next - buf;
@@ -156,33 +176,42 @@ uint32_t cli_bcapi_disasm_x86(struct cli_bc_ctx *ctx, struct DISASM_RESULT *res,
  * override the limit if we need it in a special situation */
 int32_t cli_bcapi_write(struct cli_bc_ctx *ctx, uint8_t*data, int32_t len)
 {
+    char err[128];
     int32_t res;
+
     cli_ctx *cctx = (cli_ctx*)ctx->ctx;
     if (len < 0) {
 	cli_warnmsg("Bytecode API: called with negative length!\n");
+	API_MISUSE();
 	return -1;
     }
     if (!ctx->outfd) {
 	ctx->tempfile = cli_gentemp(cctx ? cctx->engine->tmpdir : NULL);
 	if (!ctx->tempfile) {
 	    cli_dbgmsg("Bytecode API: Unable to allocate memory for tempfile\n");
+	    cli_event_error_oom(EV, 0);
 	    return -1;
 	}
 	ctx->outfd = open(ctx->tempfile, O_RDWR|O_CREAT|O_EXCL|O_TRUNC|O_BINARY, 0600);
 	if (ctx->outfd == -1) {
 	    ctx->outfd = 0;
-	    cli_warnmsg("Bytecode API: Can't create file %s\n", ctx->tempfile);
+	    cli_warnmsg("Bytecode API: Can't create file %s: %s\n", ctx->tempfile, cli_strerror(errno, err, sizeof(err)));
+	    cli_event_error_str(EV, "cli_bcapi_write: Can't create temporary file");
 	    free(ctx->tempfile);
 	    return -1;
 	}
 	cli_dbgmsg("bytecode opened new tempfile: %s\n", ctx->tempfile);
     }
+
+    cli_event_fastdata(ctx->bc_events, BCEV_WRITE, data, len);
     if (cli_checklimits("bytecode api", cctx, ctx->written + len, 0, 0))
 	return -1;
     res = cli_writen(ctx->outfd, data, len);
     if (res > 0) ctx->written += res;
-    if (res == -1)
-	cli_dbgmsg("Bytecode API: write failed: %d\n", errno);
+    if (res == -1) {
+	cli_warnmsg("Bytecode API: write failed: %s\n", cli_strerror(errno, err, sizeof(err)));
+	cli_event_error_str(EV, "cli_bcapi_write: write failed");
+    }
     return res;
 }
 
@@ -306,8 +335,9 @@ static inline const char* cli_memmem(const char *haystack, unsigned hlen,
 {
     const char *p;
     unsigned char c;
-    if (!needle || !haystack)
+    if (!needle || !haystack) {
 	return NULL;
+    }
     c = *needle++;
     if (nlen == 1)
 	return memchr(haystack, c, hlen);
@@ -331,6 +361,7 @@ int32_t cli_bcapi_file_find(struct cli_bc_ctx *ctx, const uint8_t* data, uint32_
     fmap_t *map = ctx->fmap;
     if (!map || len <= 0) {
 	cli_dbgmsg("bcapi_file_find preconditions not met\n");
+	API_MISUSE();
 	return -1;
     }
     return cli_bcapi_file_find_limit(ctx, data, len, map->len);
@@ -345,8 +376,12 @@ int32_t cli_bcapi_file_find_limit(struct cli_bc_ctx *ctx , const uint8_t* data,
 
     if (!map || len > sizeof(buf)/4 || len <= 0 || limit <= 0) {
 	cli_dbgmsg("bcapi_file_find_limit preconditions not met\n");
+	API_MISUSE();
 	return -1;
     }
+
+    cli_event_int(EV, BCEV_OFFSET, off);
+    cli_event_fastdata(EV, BCEV_FIND, data, len);
     for (;;) {
 	const char *p;
 	int32_t readlen = sizeof(buf);
@@ -373,6 +408,7 @@ int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx, uint32_t off)
 	cli_dbgmsg("bcapi_file_byteat: no fmap\n");
 	return -1;
     }
+    cli_event_int(EV, BCEV_OFFSET, off);
     if (fmap_readn(ctx->fmap, &c, off, 1) != 1) {
 	cli_dbgmsg("bcapi_file_byteat: fmap_readn failed at %u\n", off);
 	return -1;
@@ -382,20 +418,25 @@ int32_t cli_bcapi_file_byteat(struct cli_bc_ctx *ctx, uint32_t off)
 
 uint8_t* cli_bcapi_malloc(struct cli_bc_ctx *ctx, uint32_t size)
 {
+    void *v;
 #if USE_MPOOL
     if (!ctx->mpool) {
 	ctx->mpool = mpool_create();
 	if (!ctx->mpool) {
 	    cli_dbgmsg("bytecode: mpool_create failed!\n");
+	    cli_event_error_oom(EV, 0);
 	    return NULL;
 	}
     }
-    return mpool_malloc(ctx->mpool, size);
+    v = mpool_malloc(ctx->mpool, size);
 #else
     /* TODO: implement using a list of pointers we allocated! */
     cli_errmsg("cli_bcapi_malloc not implemented for systems without mmap yet!\n");
-    return cli_malloc(size);
+    v = cli_malloc(size);
 #endif
+    if (!v)
+	cli_event_error_oom(EV, size);
+    return v;
 }
 
 int32_t cli_bcapi_get_pe_section(struct cli_bc_ctx *ctx, struct cli_exe_section* section, uint32_t num)
@@ -414,16 +455,19 @@ int32_t cli_bcapi_fill_buffer(struct cli_bc_ctx *ctx, uint8_t* buf,
     int32_t res, remaining, tofill;
     if (!buf || !buflen || buflen > CLI_MAX_ALLOCATION || filled > buflen) {
 	cli_dbgmsg("fill_buffer1\n");
+	API_MISUSE();
 	return -1;
     }
     if (ctx->off >= ctx->file_size) {
 	cli_dbgmsg("fill_buffer2\n");
+	API_MISUSE();
 	return 0;
     }
     remaining = filled - pos;
     if (remaining) {
 	if (!CLI_ISCONTAINED(buf, buflen, buf+pos, remaining)) {
 	    cli_dbgmsg("fill_buffer3\n");
+	    API_MISUSE();
 	    return -1;
 	}
 	memmove(buf, buf+pos, remaining);
@@ -431,11 +475,13 @@ int32_t cli_bcapi_fill_buffer(struct cli_bc_ctx *ctx, uint8_t* buf,
     tofill = buflen - remaining;
     if (!CLI_ISCONTAINED(buf, buflen, buf+remaining, tofill)) {
 	cli_dbgmsg("fill_buffer4\n");
+	API_MISUSE();
 	return -1;
     }
     res = cli_bcapi_read(ctx, buf+remaining, tofill);
     if (res <= 0) {
 	cli_dbgmsg("fill_buffer5\n");
+	API_MISUSE();
 	return res;
     }
     return remaining + res;
@@ -445,6 +491,8 @@ int32_t cli_bcapi_extract_new(struct cli_bc_ctx *ctx, int32_t id)
 {
     cli_ctx *cctx;
     int res = -1;
+
+    cli_event_count(EV, BCEV_EXTRACTED);
     cli_dbgmsg("previous tempfile had %u bytes\n", ctx->written);
     if (!ctx->written)
 	return 0;
@@ -489,6 +537,7 @@ int32_t cli_bcapi_read_number(struct cli_bc_ctx *ctx, uint32_t radix)
 
     if ((radix != 10 && radix != 16) || !ctx->fmap)
 	return -1;
+    cli_event_int(EV, BCEV_OFFSET, ctx->off);
     while ((p = fmap_need_off_once(ctx->fmap, ctx->off, BUF))) {
 	for (i=0;i<BUF;i++) {
 	    if (p[i] >= '0' && p[i] <= '9') {
@@ -510,8 +559,10 @@ int32_t cli_bcapi_hashset_new(struct cli_bc_ctx *ctx )
 {
     unsigned  n = ctx->nhashsets+1;
     struct cli_hashset *s = cli_realloc(ctx->hashsets, sizeof(*ctx->hashsets)*n);
-    if (!s)
+    if (!s) {
+	cli_event_error_oom(EV, 0);
 	return -1;
+    }
     ctx->hashsets = s;
     ctx->nhashsets = n;
     s = &s[n-1];
@@ -521,8 +572,10 @@ int32_t cli_bcapi_hashset_new(struct cli_bc_ctx *ctx )
 
 static struct cli_hashset *get_hashset(struct cli_bc_ctx *ctx, int32_t id)
 {
-    if (id < 0 || id >= ctx->nhashsets || !ctx->hashsets)
+    if (id < 0 || id >= ctx->nhashsets || !ctx->hashsets) {
+	API_MISUSE();
 	return NULL;
+    }
     return &ctx->hashsets[id];
 }
 
@@ -991,8 +1044,12 @@ int32_t cli_bcapi_memstr(struct cli_bc_ctx *ctx, const uint8_t* h, int32_t hs,
 			 const uint8_t*n, int32_t ns)
 {
     const uint8_t *s;
-    if (!h || !n || hs < 0 || ns < 0)
+    if (!h || !n || hs < 0 || ns < 0) {
+	API_MISUSE();
 	return -1;
+    }
+    cli_event_fastdata(EV, BCEV_MEM_1, h, hs);
+    cli_event_fastdata(EV, BCEV_MEM_2, n, ns);
     s = (const uint8_t*) cli_memstr((const char*)h, hs, (const char*)n, ns);
     if (!s)
 	return -1;
@@ -1035,6 +1092,7 @@ uint32_t cli_bcapi_debug_print_str_start(struct cli_bc_ctx *ctx , const uint8_t*
 {
     if (!s || len <= 0)
 	return -1;
+    cli_event_fastdata(EV, BCEV_DBG_STR, s, len);
     cli_dbgmsg("bytecode debug: %.*s", len, s);
     return 0;
 }
@@ -1282,9 +1340,9 @@ int32_t cli_bcapi_version_compare(struct cli_bc_ctx *ctx , const uint8_t* lhs, u
 	if (!isdigit(lhs[i]) || !isdigit(rhs[j]))
 	    return lhs[i] < rhs[j] ? -1 : 1;
 	while (isdigit(lhs[i]) && i < lhs_len)
-	    li = 10*li + (lhs[i] - '0');
+	    li = 10*li + (lhs[i++] - '0');
 	while (isdigit(rhs[j]) && j < rhs_len)
-	    ri = 10*ri + (rhs[j] - '0');
+	    ri = 10*ri + (rhs[j++] - '0');
 	if (li < ri)
 	    return -1;
 	if (li > ri)
@@ -1444,3 +1502,14 @@ int32_t cli_bcapi_pdf_get_dumpedobjid(struct cli_bc_ctx *ctx)
     return ctx->pdf_dumpedid;
 }
 
+int32_t cli_bcapi_running_on_jit(struct cli_bc_ctx *ctx )
+{
+    ctx->no_diff = 1;
+    return ctx->on_jit;
+}
+
+int32_t cli_bcapi_get_file_reliability(struct cli_bc_ctx *ctx )
+{
+    cli_ctx *cctx = (cli_ctx*)ctx->ctx;
+    return cctx ? cctx->corrupted_input : 3;
+}
diff --git a/libclamav/bytecode_api.h b/libclamav/bytecode_api.h
index f2bb287..ca0ea0f 100644
--- a/libclamav/bytecode_api.h
+++ b/libclamav/bytecode_api.h
@@ -977,5 +977,19 @@ int32_t pdf_get_dumpedobjid(void);
 int32_t matchicon(const uint8_t* group1, int32_t group1_len,
                   const uint8_t* group2, int32_t group2_len);
 /* ---------------- END 0.96.2 APIs   ----------------------------------- */
+/* ----------------- BEGIN 0.96.4 APIs ---------------------------------- */
+/* Returns whether running on JIT. As side-effect it disables
+ * interp / JIT comparisons in test mode (errors are still checked) */
+int32_t running_on_jit(void);
+
+/* Get file reliability flag, higher value means less reliable 
+ * 0 - normal
+ * 1 - embedded PE
+ * 2 - unpacker created file (not impl. yet)
+ *
+ * when >0 import tables and such are not reliable */
+int32_t get_file_reliability(void);
+
+/* ----------------- END 0.96.4 APIs ---------------------------------- */
 #endif
 #endif
diff --git a/libclamav/bytecode_api_decl.c b/libclamav/bytecode_api_decl.c
index 3db106f..c25bdeb 100644
--- a/libclamav/bytecode_api_decl.c
+++ b/libclamav/bytecode_api_decl.c
@@ -122,6 +122,8 @@ int32_t cli_bcapi_pdf_get_offset(struct cli_bc_ctx *ctx , int32_t);
 int32_t cli_bcapi_pdf_get_phase(struct cli_bc_ctx *ctx );
 int32_t cli_bcapi_pdf_get_dumpedobjid(struct cli_bc_ctx *ctx );
 int32_t cli_bcapi_matchicon(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, const uint8_t*, int32_t);
+int32_t cli_bcapi_running_on_jit(struct cli_bc_ctx *ctx );
+int32_t cli_bcapi_get_file_reliability(struct cli_bc_ctx *ctx );
 
 const struct cli_apiglobal cli_globals[] = {
 /* Bytecode globals BEGIN */
@@ -146,8 +148,8 @@ static uint16_t cli_tmp4[]={16, 8, 8, 32, 32, 32, 32, 32, 32, 32, 32, 32, 16, 16
 static uint16_t cli_tmp5[]={32, 16, 16, 32, 32, 32, 16, 16};
 static uint16_t cli_tmp6[]={32};
 static uint16_t cli_tmp7[]={32};
-static uint16_t cli_tmp8[]={32, 65, 32, 65, 32};
-static uint16_t cli_tmp9[]={32};
+static uint16_t cli_tmp8[]={32};
+static uint16_t cli_tmp9[]={32, 65, 32, 65, 32};
 static uint16_t cli_tmp10[]={32, 32};
 static uint16_t cli_tmp11[]={32, 32, 32};
 static uint16_t cli_tmp12[]={65, 32, 32};
@@ -179,8 +181,8 @@ const struct cli_bc_type cli_apicall_types[]={
 	{DStructType, cli_tmp5, 8, 0, 0},
 	{DArrayType, cli_tmp6, 1, 0, 0},
 	{DArrayType, cli_tmp7, 64, 0, 0},
-	{DFunctionType, cli_tmp8, 5, 0, 0},
-	{DFunctionType, cli_tmp9, 1, 0, 0},
+	{DFunctionType, cli_tmp8, 1, 0, 0},
+	{DFunctionType, cli_tmp9, 5, 0, 0},
 	{DFunctionType, cli_tmp10, 2, 0, 0},
 	{DFunctionType, cli_tmp11, 3, 0, 0},
 	{DFunctionType, cli_tmp12, 3, 0, 0},
@@ -230,7 +232,7 @@ const struct cli_apicall cli_apicalls[]={
 	{"fill_buffer", 20, 0, 4},
 	{"extract_new", 10, 4, 2},
 	{"read_number", 10, 5, 2},
-	{"hashset_new", 9, 0, 5},
+	{"hashset_new", 8, 0, 5},
 	{"hashset_add", 11, 2, 0},
 	{"hashset_remove", 11, 3, 0},
 	{"hashset_contains", 11, 4, 0},
@@ -257,7 +259,7 @@ const struct cli_apicall cli_apicalls[]={
 	{"iexp", 13, 2, 7},
 	{"isin", 13, 3, 7},
 	{"icos", 13, 4, 7},
-	{"memstr", 8, 0, 8},
+	{"memstr", 9, 0, 8},
 	{"hex2ui", 11, 8, 0},
 	{"atoi", 19, 13, 1},
 	{"debug_print_str_start", 19, 14, 1},
@@ -272,19 +274,19 @@ const struct cli_apicall cli_apicalls[]={
 	{"map_getvalue", 12, 2, 6},
 	{"map_done", 10, 20, 2},
 	{"file_find_limit", 14, 4, 9},
-	{"engine_functionality_level", 9, 1, 5},
-	{"engine_dconf_level", 9, 2, 5},
-	{"engine_scan_options", 9, 3, 5},
-	{"engine_db_options", 9, 4, 5},
+	{"engine_functionality_level", 8, 1, 5},
+	{"engine_dconf_level", 8, 2, 5},
+	{"engine_scan_options", 8, 3, 5},
+	{"engine_db_options", 8, 4, 5},
 	{"extract_set_container", 10, 21, 2},
 	{"input_switch", 10, 22, 2},
 	{"get_environment", 15, 17, 1},
 	{"disable_bytecode_if", 14, 5, 9},
 	{"disable_jit_if", 14, 6, 9},
-	{"version_compare", 8, 1, 8},
+	{"version_compare", 9, 1, 8},
 	{"check_platform", 13, 5, 7},
-	{"pdf_get_obj_num", 9, 5, 5},
-	{"pdf_get_flags", 9, 6, 5},
+	{"pdf_get_obj_num", 8, 5, 5},
+	{"pdf_get_flags", 8, 6, 5},
 	{"pdf_set_flags", 10, 23, 2},
 	{"pdf_lookupobj", 10, 24, 2},
 	{"pdf_getobjsize", 10, 25, 2},
@@ -293,9 +295,11 @@ const struct cli_apicall cli_apicalls[]={
 	{"pdf_getobjflags", 10, 27, 2},
 	{"pdf_setobjflags", 11, 10, 0},
 	{"pdf_get_offset", 10, 28, 2},
-	{"pdf_get_phase", 9, 7, 5},
-	{"pdf_get_dumpedobjid", 9, 8, 5},
-	{"matchicon", 8, 2, 8}
+	{"pdf_get_phase", 8, 7, 5},
+	{"pdf_get_dumpedobjid", 8, 8, 5},
+	{"matchicon", 9, 2, 8},
+	{"running_on_jit", 8, 9, 5},
+	{"get_file_reliability", 8, 10, 5}
 /* Bytecode APIcalls END */
 };
 const cli_apicall_int2 cli_apicalls0[] = {
@@ -377,7 +381,9 @@ const cli_apicall_allocobj cli_apicalls5[] = {
 	(cli_apicall_allocobj)cli_bcapi_pdf_get_obj_num,
 	(cli_apicall_allocobj)cli_bcapi_pdf_get_flags,
 	(cli_apicall_allocobj)cli_bcapi_pdf_get_phase,
-	(cli_apicall_allocobj)cli_bcapi_pdf_get_dumpedobjid
+	(cli_apicall_allocobj)cli_bcapi_pdf_get_dumpedobjid,
+	(cli_apicall_allocobj)cli_bcapi_running_on_jit,
+	(cli_apicall_allocobj)cli_bcapi_get_file_reliability
 };
 const cli_apicall_bufget cli_apicalls6[] = {
 	(cli_apicall_bufget)cli_bcapi_buffer_pipe_read_get,
diff --git a/libclamav/bytecode_api_impl.h b/libclamav/bytecode_api_impl.h
index c6be9c8..4c85abd 100644
--- a/libclamav/bytecode_api_impl.h
+++ b/libclamav/bytecode_api_impl.h
@@ -120,5 +120,7 @@ int32_t cli_bcapi_pdf_get_offset(struct cli_bc_ctx *ctx , int32_t);
 int32_t cli_bcapi_pdf_get_phase(struct cli_bc_ctx *ctx );
 int32_t cli_bcapi_pdf_get_dumpedobjid(struct cli_bc_ctx *ctx );
 int32_t cli_bcapi_matchicon(struct cli_bc_ctx *ctx , const uint8_t*, int32_t, const uint8_t*, int32_t);
+int32_t cli_bcapi_running_on_jit(struct cli_bc_ctx *ctx );
+int32_t cli_bcapi_get_file_reliability(struct cli_bc_ctx *ctx );
 
 #endif
diff --git a/libclamav/bytecode_nojit.c b/libclamav/bytecode_nojit.c
index ec961a9..66d385d 100644
--- a/libclamav/bytecode_nojit.c
+++ b/libclamav/bytecode_nojit.c
@@ -34,8 +34,9 @@ int cli_bytecode_prepare_jit(struct cli_all_bc *bcs)
     for (i=0;i<bcs->count;i++) {
 	if (bcs->all_bcs[i].state == bc_skip)
 	    continue;
-	if (bcs->all_bcs[i].state != bc_loaded) {
-	    cli_warnmsg("Cannot prepare for JIT, because it has already been converted to interpreter");
+	if (bcs->all_bcs[i].state != bc_loaded &&
+	    bcs->all_bcs[i].kind != BC_STARTUP) {
+	    cli_warnmsg("Cannot prepare for JIT, because it has already been converted to interpreter\n");
 	    return CL_EBYTECODE;
 	}
     }
diff --git a/libclamav/bytecode_priv.h b/libclamav/bytecode_priv.h
index 8ac8d9d..8c2340d 100644
--- a/libclamav/bytecode_priv.h
+++ b/libclamav/bytecode_priv.h
@@ -31,6 +31,7 @@
 #include "fmap.h"
 #include "mpool.h"
 #include "hashtab.h"
+#include "events.h"
 
 typedef uint32_t operand_t;
 typedef uint16_t bbid_t;
@@ -137,6 +138,28 @@ struct bc_jsnorm {
     int32_t from;
 };
 
+enum bc_events {
+    BCEV_VIRUSNAME,
+    BCEV_EXEC_RETURNVALUE,
+    BCEV_WRITE,
+    BCEV_OFFSET,
+    BCEV_READ,
+    BCEV_DBG_STR,
+    BCEV_DBG_INT,
+    BCEV_MEM_1,
+    BCEV_MEM_2,
+    BCEV_FIND,
+    BCEV_EXTRACTED,
+    BCEV_EXEC_TIME,
+    /* API failures (that are not serious), count must be 0 for testmode */
+    BCEV_API_WARN_BEGIN,
+    BCEV_READ_ERR,
+    BCEV_DISASM_FAIL,
+    BCEV_API_WARN_END,
+    /* real errors (write failure) are reported via cli_event_error_str */
+    BCEV_LASTEVENT
+};
+
 struct cli_bc_ctx {
     uint8_t timeout;/* must be first byte in struct! */
     uint16_t funcid;
@@ -201,6 +224,9 @@ struct cli_bc_ctx {
     unsigned extracted_file_input;
     const struct cli_environment *env;
     unsigned bytecode_disable_status;
+    cli_events_t *bc_events;
+    int on_jit;
+    int no_diff;
 };
 struct cli_all_bc;
 int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct cli_bc_func *func, const struct cli_bc_inst *inst);
diff --git a/libclamav/bytecode_vm.c b/libclamav/bytecode_vm.c
index 33c16cd..1691563 100644
--- a/libclamav/bytecode_vm.c
+++ b/libclamav/bytecode_vm.c
@@ -32,11 +32,12 @@
 #ifndef _WIN32
 #include <sys/time.h>
 #endif
+#include "bytecode_api_impl.h"
+#include "disasm-common.h"
 
 /* Enable this to catch more bugs in the RC phase */
 #define CL_BYTECODE_SAFE
 
-
 #ifdef CL_BYTECODE_SAFE
 /* These checks will also be done by the bytecode verifier, but for
  * debugging purposes we have explicit checks, these should never fail! */
@@ -70,12 +71,14 @@ static inline int bcfail(const char *msg, long a, long b,
 #endif
 #ifdef CL_DEBUG
 #define CHECK_UNREACHABLE do { cli_dbgmsg("bytecode: unreachable executed!\n"); return CL_EBYTECODE; } while(0)
+#define TRACE_PTR(ptr, s) cli_dbgmsg("bytecode trace: ptr %llx, +%x\n", ptr, s);
 #define TRACE_R(x) cli_dbgmsg("bytecode trace: %u, read %llx\n", pc, (long long)x);
 #define TRACE_W(x, w, p) cli_dbgmsg("bytecode trace: %u, write%d @%u %llx\n", pc, p, w, (long long)(x));
 #define TRACE_EXEC(id, dest, ty, stack) cli_dbgmsg("bytecode trace: executing %d, -> %u (%u); %u\n", id, dest, ty, stack)
 #define TRACE_API(s, dest, ty, stack) cli_dbgmsg("bytecode trace: executing %s, -> %u (%u); %u\n", s, dest, ty, stack)
 #else
 #define CHECK_UNREACHABLE return CL_EBYTECODE
+#define TRACE_PTR(ptr, s)
 #define TRACE_R(x)
 #define TRACE_W(x, w, p)
 #define TRACE_EXEC(id, dest, ty, stack)
@@ -317,6 +320,7 @@ static always_inline struct stack_entry *pop_stack(struct stack *stack,
     if ((p)&0x40000000) {\
 	unsigned ptr__ = (p)&0xbfffffff;\
 	CHECK_GT(func->numBytes, ptr__);\
+	TRACE_PTR(ptr__, asize);\
 	x = (void*)&values[ptr__];\
     } else {\
 	READP(x, p, asize)\
@@ -468,6 +472,7 @@ static always_inline struct stack_entry *pop_stack(struct stack *stack,
 		    stop = CL_BREAK;\
 		    continue;\
 		}\
+		stackid = ptr_register_stack(&ptrinfos, values, 0, func->numBytes)>>32;\
 		inst = &bb->insts[bb_inst];\
 		break;\
 	    }
@@ -561,6 +566,7 @@ static inline void* ptr_torealptr(const struct ptr_infos *infos, int64_t ptr,
     struct ptr_info *info;
     int32_t ptrid = ptr >> 32;
     uint32_t ptroff = (uint32_t)ptr;
+    TRACE_PTR(ptr, read_size);
     if (UNLIKELY(!ptrid)) {
 	(void)bcfail("nullptr", ptrid, 0, __FILE__, __LINE__);
 	return NULL;
@@ -621,6 +627,15 @@ static unsigned globaltypesize(uint16_t id)
     }
 }
 
+/* TODO: fix the APIs too */
+static struct {
+    cli_apicall_pointer api;
+    uint32_t override_size;
+} apisize_override[] = {
+    {(void*)cli_bcapi_disasm_x86, sizeof(struct DISASM_RESULT)},
+    {(void*)cli_bcapi_get_pe_section, sizeof(struct cli_exe_section)},
+};
+
 int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct cli_bc_func *func, const struct cli_bc_inst *inst)
 {
     unsigned i, j, stack_depth=0, bb_inst=0, stop=0, pc=0;
@@ -803,11 +818,19 @@ int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct
 			break;
 		    }
 		    case 1: {
+			unsigned i;
 			void* arg1;
-			unsigned arg2;
-			/* check that arg2 is size of arg1 */
+			unsigned arg2, arg1size;
 			READ32(arg2, inst->u.ops.ops[1]);
-			READPOP(arg1, inst->u.ops.ops[0], arg2);
+			/* check that arg2 is size of arg1 */
+			arg1size = arg2;
+			for (i=0;i<sizeof(apisize_override)/sizeof(apisize_override[0]);i++) {
+			    if (cli_apicalls1[api->idx] == apisize_override[i].api) {
+				arg1size = apisize_override[i].override_size;
+				break;
+			    }
+			}
+			READPOP(arg1, inst->u.ops.ops[0], arg1size);
 			res32 = cli_apicalls1[api->idx](ctx, arg1, arg2);
 			WRITE32(inst->dest, res32);
 			break;
@@ -832,6 +855,7 @@ int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct
 			int32_t arg2, arg3, arg4, arg5;
 			void *arg1;
 			READ32(arg2, inst->u.ops.ops[1]);
+			/* check that arg2 is size of arg1 */
 			READP(arg1, inst->u.ops.ops[0], arg2);
 			READ32(arg3, inst->u.ops.ops[2]);
 			READ32(arg4, inst->u.ops.ops[3]);
@@ -869,9 +893,10 @@ int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct
 			void *arg1, *arg3;
 			int32_t resp;
 			READ32(arg2, inst->u.ops.ops[1]);
+			/* check that arg2 is size of arg1 */
 			READP(arg1, inst->u.ops.ops[0], arg2);
 			READ32(arg4, inst->u.ops.ops[3]);
-			READP(arg3, inst->u.ops.ops[0], arg4);
+			READP(arg3, inst->u.ops.ops[2], arg4);
 			resp = cli_apicalls8[api->idx](ctx, arg1, arg2, arg3, arg4);
 			WRITE32(inst->dest, resp);
 			break;
@@ -881,6 +906,7 @@ int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct
 			void *arg1;
 			int32_t resp;
 			READ32(arg2, inst->u.ops.ops[1]);
+			/* check that arg2 is size of arg1 */
 			READP(arg1, inst->u.ops.ops[0], arg2);
 			READ32(arg3, inst->u.ops.ops[2]);
 			resp = cli_apicalls9[api->idx](ctx, arg1, arg2, arg3);
@@ -1212,6 +1238,10 @@ int cli_vm_execute(const struct cli_bc *bc, struct cli_bc_ctx *ctx, const struct
 	cli_dbgmsg("intepreter bytecode run finished in %luus, after executing %u opcodes\n",
 		   tv1.tv_sec*1000000 + tv1.tv_usec, pc);
     }
+    if (stop == CL_EBYTECODE) {
+	cli_event_error_str(ctx->bc_events, "interpreter finished with error\n");
+	cli_dbgmsg("intepreter finished with error\n");
+    }
 
     cli_stack_destroy(&stack);
     free(ptrinfos.stack_infos);
diff --git a/libclamav/c++/ClamBCRTChecks.cpp b/libclamav/c++/ClamBCRTChecks.cpp
index 4faa57b..6243c0a 100644
--- a/libclamav/c++/ClamBCRTChecks.cpp
+++ b/libclamav/c++/ClamBCRTChecks.cpp
@@ -54,6 +54,11 @@
 #include "llvm/Transforms/Utils/BasicBlockUtils.h"
 #include "llvm/Support/Debug.h"
 
+#ifdef LLVM28
+#define DEFINEPASS(passname) passname() : FunctionPass(ID)
+#else
+#define DEFINEPASS(passname) passname() : FunctionPass(&ID)
+#endif
 using namespace llvm;
 namespace {
 
@@ -63,17 +68,10 @@ namespace {
     CallGraphNode *rootNode;
   public:
     static char ID;
-    PtrVerifier() : FunctionPass((intptr_t)&ID),rootNode(0) {}
+    DEFINEPASS(PtrVerifier), rootNode(0) {}
 
     virtual bool runOnFunction(Function &F) {
-#ifndef CLAMBC_COMPILER
-      // Bytecode was already verifier and had stack protector applied.
-      // We get called again because ALL bytecode functions loaded are part of
-      // the same module.
-      if (F.hasFnAttr(Attribute::StackProtect))
-	  return false;
-#endif
-
+      DEBUG(errs() << "Running on " << F.getName() << "\n");
       DEBUG(F.dump());
       Changed = false;
       BaseMap.clear();
@@ -157,9 +155,11 @@ namespace {
           Value *V = CI->getCalledValue()->stripPointerCasts();
           Function *F = cast<Function>(V);
           const FunctionType *FTy = F->getFunctionType();
+	  CallSite CS(CI);
+
           if (F->getName().equals("memcmp") && FTy->getNumParams() == 3) {
-            valid &= validateAccess(CI->getOperand(1), CI->getOperand(3), CI);
-            valid &= validateAccess(CI->getOperand(2), CI->getOperand(3), CI);
+            valid &= validateAccess(CS.getArgument(0), CS.getArgument(2), CI);
+            valid &= validateAccess(CS.getArgument(1), CS.getArgument(2), CI);
             continue;
           }
 	  unsigned i;
@@ -170,7 +170,7 @@ namespace {
 #endif
           for (;i<FTy->getNumParams();i++) {
             if (isa<PointerType>(FTy->getParamType(i))) {
-              Value *Ptr = CI->getOperand(i+1);
+              Value *Ptr = CS.getArgument(i);
               if (i+1 >= FTy->getNumParams()) {
                 printLocation(CI, false);
                 errs() << "Call to external function with pointer parameter last cannot be analyzed\n";
@@ -178,7 +178,7 @@ namespace {
                 valid = 0;
                 break;
               }
-              Value *Size = CI->getOperand(i+2);
+              Value *Size = CS.getArgument(i+1);
               if (!Size->getType()->isIntegerTy()) {
                 printLocation(CI, false);
                 errs() << "Pointer argument must be followed by integer argument representing its size\n";
@@ -381,8 +381,9 @@ namespace {
               const FunctionType *FTy = F->getFunctionType();
               // last operand is always size for this API call kind
               if (F->isDeclaration() && FTy->getNumParams() > 0) {
+		CallSite CS(CI);
                 if (FTy->getParamType(FTy->getNumParams()-1)->isIntegerTy())
-                  V = CI->getOperand(FTy->getNumParams());
+                  V = CS.getArgument(FTy->getNumParams()-1);
               }
 	  }
 	  if (!V)
@@ -550,14 +551,15 @@ namespace {
     {
       for (Value::use_iterator JU=ICI->use_begin(),JUE=ICI->use_end();
            JU != JUE; ++JU) {
-        if (BranchInst *BI = dyn_cast<BranchInst>(JU)) {
+	Value *JU_V = *JU;
+        if (BranchInst *BI = dyn_cast<BranchInst>(JU_V)) {
           if (!BI->isConditional())
             continue;
           BasicBlock *S = BI->getSuccessor(equal);
           if (DT->dominates(S, I->getParent()))
             return true;
         }
-        if (BinaryOperator *BI = dyn_cast<BinaryOperator>(JU)) {
+        if (BinaryOperator *BI = dyn_cast<BinaryOperator>(JU_V)) {
           if (BI->getOpcode() == Instruction::Or &&
               checkCond(BI, I, equal))
             return true;
@@ -573,7 +575,8 @@ namespace {
     {
       for (Value::use_iterator U=CI->use_begin(),UE=CI->use_end();
            U != UE; ++U) {
-        if (ICmpInst *ICI = dyn_cast<ICmpInst>(U)) {
+	Value *U_V = *U;
+        if (ICmpInst *ICI = dyn_cast<ICmpInst>(U_V)) {
           if (ICI->getOperand(0)->stripPointerCasts() == CI &&
               isa<ConstantPointerNull>(ICI->getOperand(1))) {
             if (checkCond(ICI, I, ICI->getPredicate() == ICmpInst::ICMP_EQ))
diff --git a/libclamav/c++/Makefile.am b/libclamav/c++/Makefile.am
index 9f7c8a4..c3a4a3a 100644
--- a/libclamav/c++/Makefile.am
+++ b/libclamav/c++/Makefile.am
@@ -18,25 +18,28 @@ LLVM_INCLUDES=-I$(top_srcdir)/llvm/include -I$(top_builddir)/llvm/include
 # keep it like this while I'm testing LLVM
 # TODO: HP-UX should have -D_REENTRANT -D_HPUX_SOURCE
 LLVM_DEFS=-D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_DEBUG -D_GNU_SOURCE
-AM_CPPFLAGS = -I$(top_srcdir)/../.. -I$(top_srcdir)/.. -I$(top_builddir)/../../ $(LLVM_INCLUDES) $(LLVM_DEFS)
+AM_CPPFLAGS = -I$(top_srcdir)/../.. -I$(top_srcdir)/.. -I$(top_builddir)/../../
+
 AM_CXXFLAGS = $(LLVM_CXXFLAGS) -fno-exceptions
 ACLOCAL_AMFLAGS=-I m4
-if DEBUG_BUILD
-LLVM_CONFIG=llvm/Debug/bin/llvm-config
-else
-LLVM_CONFIG=llvm/Release/bin/llvm-config
-endif
 
+libclamavcxx_la_SOURCES = bytecode2llvm.cpp\
+			  ClamBCRTChecks.cpp\
+			  ClamBCModule.h\
+			  ClamBCDiagnostics.h\
+			  detect.cpp
+if BUILD_EXTERNAL_LLVM
 #$(LLVM_CONFIG): build-llvm
 # we know this will be built with GNU make, so its safe to use GNU make specific
 # $(shell ...)
 #LLVM_DEPS=$(shell $(LLVM_CONFIG) --libfiles jit nativecodegen)
-#libclamavcxx_la_CPPFLAGS = $(AM_CPPFLAGS) `$(LLVM_CONFIG) --cppflags`
-#libclamavcxx_la_DEPENDENCIES = $(LLVM_DEPS)
-#libclamavcxx_la_LDFLAGS = `$(LLVM_CONFIG) --ldflags --libs jit nativecodegen`
-#libclamavcxx_la_CPPFLAGS = $(AM_CPPFLAGS) $(LLVM_INCLUDES) $(LLVM_DEFS)
-#libclamavcxx_la_DEPENDENCIES = $(LLVM_DEPS)
+libclamavcxx_la_CXXFLAGS = $(AM_CPPFLAGS) @LLVMCONFIG_CXXFLAGS@ -fexceptions -DLLVM28
+libclamavcxx_la_LDFLAGS = @LLVMCONFIG_LDFLAGS@ @LLVMCONFIG_LIBS@
+libclamavcxx_la_DEPENDENCIES = @LLVMCONFIG_LIBFILES@
+noinst_LTLIBRARIES = libclamavcxx.la
 
+else
+AM_CPPFLAGS += $(LLVM_INCLUDES) $(LLVM_DEFS)
 noinst_LTLIBRARIES = libclamavcxx.la libllvmsystem.la\
 		     libllvmcodegen.la libllvmjit.la
 lli_LDADD=libllvmbitreader.la libllvmfullcodegen.la libllvmjit.la
@@ -44,11 +47,8 @@ libclamavcxx_la_LIBADD=libllvmjit.la
 libclamavcxx_la_DEPENDENCIES=libllvmjit.la libllvmcodegen.la libllvmsystem.la
 libclamavcxx_la_LDFLAGS=-no-undefined
 libclamavcxx_la_CXXFLAGS = $(LLVM_CXXFLAGS)
-libclamavcxx_la_SOURCES = bytecode2llvm.cpp\
-			  ClamBCRTChecks.cpp\
-			  ClamBCModule.h\
-			  ClamBCDiagnostics.h\
-			  detect.cpp
+
+
 if BUILD_X86
 libclamavcxx_la_LIBADD+=libllvmx86codegen.la
 libclamavcxx_la_DEPENDENCIES+=libllvmx86codegen.la
@@ -71,7 +71,7 @@ endif
 libclamavcxx_la_LIBADD+=libllvmcodegen.la libllvmsystem.la
 
 LLVM_CXXFLAGS=-Woverloaded-virtual -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings
-unittest_CXXFLAGS=@NO_VARIADIC_MACROS@ @NO_MISSING_FIELD_INITIALIZERS@
+unittest_CXXFLAGS=@NO_VARIADIC_MACROS@ @NO_MISSING_FIELD_INITIALIZERS@ -DGTEST_HAS_TR1_TUPLE=0
 
 TBLGENFILES=llvm/include/llvm/Intrinsics.gen X86GenRegisterInfo.h.inc X86GenRegisterNames.inc X86GenRegisterInfo.inc X86GenInstrNames.inc X86GenInstrInfo.inc\
     X86GenAsmWriter.inc X86GenAsmWriter1.inc X86GenAsmMatcher.inc X86GenDAGISel.inc X86GenFastISel.inc X86GenCallingConv.inc\
@@ -538,7 +538,13 @@ libllvmjit_la_SOURCES=\
 	llvm/lib/Target/TargetLoweringObjectFile.cpp\
 	llvm/lib/Target/TargetMachine.cpp\
 	llvm/lib/Target/TargetRegisterInfo.cpp\
+	llvm/lib/Transforms/Scalar/ADCE.cpp\
 	llvm/lib/Transforms/Scalar/DCE.cpp\
+	llvm/lib/Transforms/Scalar/SCCP.cpp\
+	llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp\
+	llvm/lib/Transforms/IPO/ConstantMerge.cpp\
+	llvm/lib/Transforms/IPO/GlobalOpt.cpp\
+	llvm/lib/Transforms/IPO/GlobalDCE.cpp\
 	llvm/lib/VMCore/AsmWriter.cpp\
 	llvm/lib/VMCore/Attributes.cpp\
 	llvm/lib/VMCore/AutoUpgrade.cpp\
@@ -916,6 +922,7 @@ libllvmsystem_la_SOURCES += llvm/config.status
 $(top_builddir)/llvm/config.status: llvm/configure
 	(cd llvm; ./config.status --recheck; ./config.status)
 
+endif
 # rm configure generated files
 dist-hook:
 	make -C llvm dist-hook
diff --git a/libclamav/c++/Makefile.in b/libclamav/c++/Makefile.in
index f7000f4..0c7548b 100644
--- a/libclamav/c++/Makefile.in
+++ b/libclamav/c++/Makefile.in
@@ -51,40 +51,47 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 target_triplet = @target@
- at BUILD_X86_TRUE@am__append_1 = libllvmx86codegen.la
- at BUILD_X86_TRUE@am__append_2 = libllvmx86codegen.la
- at BUILD_X86_TRUE@am__append_3 = libllvmx86codegen.la
- at BUILD_X86_TRUE@am__append_4 = libllvmx86codegen.la
- at BUILD_PPC_TRUE@am__append_5 = libllvmpowerpccodegen.la
- at BUILD_PPC_TRUE@am__append_6 = libllvmpowerpccodegen.la
- at BUILD_PPC_TRUE@am__append_7 = libllvmpowerpccodegen.la
- at BUILD_PPC_TRUE@am__append_8 = libllvmpowerpccodegen.la
- at BUILD_ARM_TRUE@am__append_9 = libllvmarmcodegen.la
- at BUILD_ARM_TRUE@am__append_10 = libllvmarmcodegen.la
- at BUILD_ARM_TRUE@am__append_11 = libllvmarmcodegen.la
- at BUILD_ARM_TRUE@am__append_12 = libllvmarmcodegen.la
- at MAINTAINER_MODE_TRUE@am__append_13 = $(TBLGENFILES)
- at MAINTAINER_MODE_TRUE@noinst_PROGRAMS = tblgen$(EXEEXT)
-check_PROGRAMS = count$(EXEEXT) not$(EXEEXT) lli$(EXEEXT) llc$(EXEEXT) \
-	llvm-as$(EXEEXT) llvm-dis$(EXEEXT) llvmunittest_ADT$(EXEEXT) \
-	llvmunittest_Support$(EXEEXT) llvmunittest_VMCore$(EXEEXT) \
-	llvmunittest_ExecutionEngine$(EXEEXT) \
-	llvmunittest_JIT$(EXEEXT) FileCheck$(EXEEXT)
-TESTS = llvmunittest_ADT$(EXEEXT) llvmunittest_Support$(EXEEXT) \
-	llvmunittest_VMCore$(EXEEXT) \
-	llvmunittest_ExecutionEngine$(EXEEXT) \
-	llvmunittest_JIT$(EXEEXT)
- at BUILD_X86_TRUE@am__append_14 = llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp\
- at BUILD_X86_TRUE@    llvm/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp\
- at BUILD_X86_TRUE@    llvm/lib/Target/X86/AsmPrinter/X86IntelInstPrinter.cpp\
- at BUILD_X86_TRUE@    llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp\
- at BUILD_X86_TRUE@    llvm/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp\
- at BUILD_X86_TRUE@    llvm/lib/Target/X86/X86COFFMachineModuleInfo.cpp
-
- at BUILD_PPC_TRUE@am__append_15 = llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
- at BUILD_ARM_TRUE@am__append_16 = llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp \
- at BUILD_ARM_TRUE@    llvm/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp\
- at BUILD_ARM_TRUE@    llvm/lib/Target/ARM/AsmPrinter/ARMMCInstLower.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am__append_1 = $(LLVM_INCLUDES) $(LLVM_DEFS)
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at am__append_2 = libllvmx86codegen.la
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at am__append_3 = libllvmx86codegen.la
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at am__append_4 = libllvmx86codegen.la
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at am__append_5 = libllvmx86codegen.la
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at am__append_6 = libllvmpowerpccodegen.la
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at am__append_7 = libllvmpowerpccodegen.la
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at am__append_8 = libllvmpowerpccodegen.la
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at am__append_9 = libllvmpowerpccodegen.la
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at am__append_10 = libllvmarmcodegen.la
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at am__append_11 = libllvmarmcodegen.la
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at am__append_12 = libllvmarmcodegen.la
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at am__append_13 = libllvmarmcodegen.la
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at am__append_14 = $(TBLGENFILES)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at noinst_PROGRAMS = tblgen$(EXEEXT)
+ at BUILD_EXTERNAL_LLVM_FALSE@check_PROGRAMS = count$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	not$(EXEEXT) lli$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llc$(EXEEXT) llvm-as$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm-dis$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_Support$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_VMCore$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ExecutionEngine$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_JIT$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	FileCheck$(EXEEXT)
+ at BUILD_EXTERNAL_LLVM_FALSE@TESTS = llvmunittest_ADT$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_Support$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_VMCore$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ExecutionEngine$(EXEEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_JIT$(EXEEXT)
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at am__append_15 = llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@    llvm/lib/Target/X86/AsmPrinter/X86ATTInstPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@    llvm/lib/Target/X86/AsmPrinter/X86IntelInstPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@    llvm/lib/Target/X86/AsmPrinter/X86AsmPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@    llvm/lib/Target/X86/AsmPrinter/X86MCInstLower.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@    llvm/lib/Target/X86/X86COFFMachineModuleInfo.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at am__append_16 = llvm/lib/Target/PowerPC/AsmPrinter/PPCAsmPrinter.cpp
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at am__append_17 = llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/Target/ARM/AsmPrinter/ARMMCInstLower.cpp
 
 subdir = .
 DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
@@ -117,18 +124,30 @@ libclamavcxx_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libclamavcxx_la_CXXFLAGS) $(CXXFLAGS) \
 	$(libclamavcxx_la_LDFLAGS) $(LDFLAGS) -o $@
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libclamavcxx_la_rpath =
+ at BUILD_EXTERNAL_LLVM_TRUE@am_libclamavcxx_la_rpath =
 libgoogletest_la_LIBADD =
-am_libgoogletest_la_OBJECTS = libgoogletest_la-gtest-death-test.lo \
-	libgoogletest_la-gtest-filepath.lo \
-	libgoogletest_la-gtest-port.lo \
-	libgoogletest_la-gtest-test-part.lo \
-	libgoogletest_la-gtest-typed-test.lo libgoogletest_la-gtest.lo \
-	libgoogletest_la-TestMain.lo
+am__libgoogletest_la_SOURCES_DIST =  \
+	llvm/utils/unittest/googletest/gtest-death-test.cc \
+	llvm/utils/unittest/googletest/gtest-filepath.cc \
+	llvm/utils/unittest/googletest/gtest-port.cc \
+	llvm/utils/unittest/googletest/gtest-test-part.cc \
+	llvm/utils/unittest/googletest/gtest-typed-test.cc \
+	llvm/utils/unittest/googletest/gtest.cc \
+	llvm/utils/unittest/UnitTestMain/TestMain.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libgoogletest_la_OBJECTS = libgoogletest_la-gtest-death-test.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest_la-gtest-filepath.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest_la-gtest-port.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest_la-gtest-test-part.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest_la-gtest-typed-test.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest_la-gtest.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest_la-TestMain.lo
 libgoogletest_la_OBJECTS = $(am_libgoogletest_la_OBJECTS)
 libgoogletest_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(libgoogletest_la_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libgoogletest_la_rpath =
 libllvmarmcodegen_la_LIBADD =
 am__libllvmarmcodegen_la_SOURCES_DIST =  \
 	llvm/lib/CodeGen/IfConversion.cpp \
@@ -156,37 +175,40 @@ am__libllvmarmcodegen_la_SOURCES_DIST =  \
 	llvm/lib/Target/ARM/Thumb2InstrInfo.cpp \
 	llvm/lib/Target/ARM/Thumb2RegisterInfo.cpp \
 	llvm/lib/Target/ARM/Thumb2SizeReduction.cpp
- at BUILD_ARM_TRUE@am_libllvmarmcodegen_la_OBJECTS =  \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-IfConversion.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMBaseInstrInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMBaseRegisterInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMCodeEmitter.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMConstantIslandPass.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMConstantPoolValue.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMExpandPseudoInsts.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMISelDAGToDAG.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMISelLowering.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMInstrInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMJITInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMLoadStoreOptimizer.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMMCAsmInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMRegisterInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMSubtarget.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMTargetMachine.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-NEONMoveFix.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-NEONPreAllocPass.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-ARMTargetInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-Thumb1InstrInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-Thumb1RegisterInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-Thumb2ITBlockPass.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-Thumb2InstrInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-Thumb2RegisterInfo.lo \
- at BUILD_ARM_TRUE@	libllvmarmcodegen_la-Thumb2SizeReduction.lo
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at am_libllvmarmcodegen_la_OBJECTS = libllvmarmcodegen_la-IfConversion.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMBaseInstrInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMBaseRegisterInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMCodeEmitter.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMConstantIslandPass.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMConstantPoolValue.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMExpandPseudoInsts.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMISelDAGToDAG.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMISelLowering.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMInstrInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMJITInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMLoadStoreOptimizer.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMMCAsmInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMRegisterInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMSubtarget.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMTargetMachine.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-NEONMoveFix.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-NEONPreAllocPass.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-ARMTargetInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-Thumb1InstrInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-Thumb1RegisterInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-Thumb2ITBlockPass.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-Thumb2InstrInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-Thumb2RegisterInfo.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmarmcodegen_la-Thumb2SizeReduction.lo
 libllvmarmcodegen_la_OBJECTS = $(am_libllvmarmcodegen_la_OBJECTS)
- at BUILD_ARM_TRUE@am_libllvmarmcodegen_la_rpath =
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at am_libllvmarmcodegen_la_rpath =
 libllvmasmparser_la_LIBADD =
-am_libllvmasmparser_la_OBJECTS = LLLexer.lo LLParser.lo Parser.lo
+am__libllvmasmparser_la_SOURCES_DIST = llvm/lib/AsmParser/LLLexer.cpp \
+	llvm/lib/AsmParser/LLParser.cpp llvm/lib/AsmParser/Parser.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmasmparser_la_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LLLexer.lo LLParser.lo Parser.lo
 libllvmasmparser_la_OBJECTS = $(am_libllvmasmparser_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmasmparser_la_rpath =
 libllvmasmprinter_la_LIBADD =
 am__libllvmasmprinter_la_SOURCES_DIST =  \
 	llvm/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp \
@@ -201,117 +223,439 @@ am__libllvmasmprinter_la_SOURCES_DIST =  \
 	llvm/lib/Target/ARM/AsmPrinter/ARMAsmPrinter.cpp \
 	llvm/lib/Target/ARM/AsmPrinter/ARMInstPrinter.cpp \
 	llvm/lib/Target/ARM/AsmPrinter/ARMMCInstLower.cpp
- at BUILD_X86_TRUE@am__objects_1 = libllvmasmprinter_la-X86AsmPrinter.lo \
- at BUILD_X86_TRUE@	libllvmasmprinter_la-X86ATTInstPrinter.lo \
- at BUILD_X86_TRUE@	libllvmasmprinter_la-X86IntelInstPrinter.lo \
- at BUILD_X86_TRUE@	libllvmasmprinter_la-X86AsmPrinter.lo \
- at BUILD_X86_TRUE@	libllvmasmprinter_la-X86MCInstLower.lo \
- at BUILD_X86_TRUE@	libllvmasmprinter_la-X86COFFMachineModuleInfo.lo
- at BUILD_PPC_TRUE@am__objects_2 = libllvmasmprinter_la-PPCAsmPrinter.lo
- at BUILD_ARM_TRUE@am__objects_3 = libllvmasmprinter_la-ARMAsmPrinter.lo \
- at BUILD_ARM_TRUE@	libllvmasmprinter_la-ARMInstPrinter.lo \
- at BUILD_ARM_TRUE@	libllvmasmprinter_la-ARMMCInstLower.lo
-am_libllvmasmprinter_la_OBJECTS =  \
-	libllvmasmprinter_la-OcamlGCPrinter.lo \
-	libllvmasmprinter_la-ELFCodeEmitter.lo \
-	libllvmasmprinter_la-ELFWriter.lo $(am__objects_1) \
-	$(am__objects_2) $(am__objects_3)
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at am__objects_1 = libllvmasmprinter_la-X86AsmPrinter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmasmprinter_la-X86ATTInstPrinter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmasmprinter_la-X86IntelInstPrinter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmasmprinter_la-X86AsmPrinter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmasmprinter_la-X86MCInstLower.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmasmprinter_la-X86COFFMachineModuleInfo.lo
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at am__objects_2 = libllvmasmprinter_la-PPCAsmPrinter.lo
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at am__objects_3 = libllvmasmprinter_la-ARMAsmPrinter.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmasmprinter_la-ARMInstPrinter.lo \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	libllvmasmprinter_la-ARMMCInstLower.lo
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmasmprinter_la_OBJECTS = libllvmasmprinter_la-OcamlGCPrinter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmasmprinter_la-ELFCodeEmitter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmasmprinter_la-ELFWriter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__objects_1) $(am__objects_2) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__objects_3)
 libllvmasmprinter_la_OBJECTS = $(am_libllvmasmprinter_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmasmprinter_la_rpath =
 libllvmbitreader_la_LIBADD =
-am_libllvmbitreader_la_OBJECTS = BitReader.lo BitcodeReader.lo
+am__libllvmbitreader_la_SOURCES_DIST =  \
+	llvm/lib/Bitcode/Reader/BitReader.cpp \
+	llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmbitreader_la_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	BitReader.lo BitcodeReader.lo
 libllvmbitreader_la_OBJECTS = $(am_libllvmbitreader_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmbitreader_la_rpath =
 libllvmbitwriter_la_LIBADD =
-am_libllvmbitwriter_la_OBJECTS = BitWriter.lo BitcodeWriter.lo \
-	BitcodeWriterPass.lo ValueEnumerator.lo
+am__libllvmbitwriter_la_SOURCES_DIST =  \
+	llvm/lib/Bitcode/Writer/BitWriter.cpp \
+	llvm/lib/Bitcode/Writer/BitcodeWriter.cpp \
+	llvm/lib/Bitcode/Writer/BitcodeWriterPass.cpp \
+	llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmbitwriter_la_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	BitWriter.lo BitcodeWriter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	BitcodeWriterPass.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ValueEnumerator.lo
 libllvmbitwriter_la_OBJECTS = $(am_libllvmbitwriter_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmbitwriter_la_rpath =
 libllvmcodegen_la_LIBADD =
-am_libllvmcodegen_la_OBJECTS = AliasSetTracker.lo ConstantFolding.lo \
-	IVUsers.lo InstructionSimplify.lo LoopInfo.lo LoopPass.lo \
-	MemoryDependenceAnalysis.lo PHITransAddr.lo ProfileInfo.lo \
-	ScalarEvolution.lo ScalarEvolutionExpander.lo \
-	AggressiveAntiDepBreaker.lo AsmPrinter.lo DIE.lo DwarfDebug.lo \
-	DwarfException.lo DwarfLabel.lo DwarfPrinter.lo DwarfWriter.lo \
-	BranchFolding.lo CalcSpillWeights.lo CodePlacementOpt.lo \
-	CriticalAntiDepBreaker.lo DeadMachineInstructionElim.lo \
-	DwarfEHPrepare.lo ExactHazardRecognizer.lo GCMetadata.lo \
-	GCStrategy.lo LLVMTargetMachine.lo LatencyPriorityQueue.lo \
-	LiveInterval.lo LiveIntervalAnalysis.lo LiveStackAnalysis.lo \
-	LiveVariables.lo LowerSubregs.lo MachineCSE.lo \
-	MachineDominators.lo MachineLICM.lo MachineLoopInfo.lo \
-	MachineModuleInfoImpls.lo MachinePassRegistry.lo \
-	MachineSSAUpdater.lo MachineSink.lo MachineVerifier.lo \
-	OptimizeExts.lo OptimizePHIs.lo PHIElimination.lo Passes.lo \
-	PostRASchedulerList.lo PreAllocSplitting.lo \
-	ProcessImplicitDefs.lo PrologEpilogInserter.lo \
-	RegAllocLinearScan.lo RegisterCoalescer.lo \
-	RegisterScavenging.lo ScheduleDAG.lo ScheduleDAGEmit.lo \
-	ScheduleDAGInstrs.lo ScheduleDAGPrinter.lo CallingConvLower.lo \
-	DAGCombiner.lo FastISel.lo FunctionLoweringInfo.lo \
-	InstrEmitter.lo LegalizeDAG.lo LegalizeFloatTypes.lo \
-	LegalizeIntegerTypes.lo LegalizeTypes.lo \
-	LegalizeTypesGeneric.lo LegalizeVectorOps.lo \
-	LegalizeVectorTypes.lo ScheduleDAGFast.lo ScheduleDAGList.lo \
-	ScheduleDAGRRList.lo ScheduleDAGSDNodes.lo SelectionDAG.lo \
-	SelectionDAGBuilder.lo SelectionDAGISel.lo \
-	SelectionDAGPrinter.lo TargetLowering.lo ShrinkWrapping.lo \
-	SimpleRegisterCoalescing.lo SjLjEHPrepare.lo SlotIndexes.lo \
-	Spiller.lo StackProtector.lo StackSlotColoring.lo \
-	StrongPHIElimination.lo TailDuplication.lo \
-	TargetLoweringObjectFileImpl.lo TwoAddressInstructionPass.lo \
-	UnreachableBlockElim.lo VirtRegMap.lo VirtRegRewriter.lo \
-	MCAsmInfoDarwin.lo MCAsmStreamer.lo MCAssembler.lo MCInst.lo \
-	MCMachOStreamer.lo MCNullStreamer.lo MCSectionMachO.lo \
-	MCStreamer.lo TargetFrameInfo.lo TargetSubtarget.lo \
-	CodeGenPrepare.lo GEPSplitter.lo GVN.lo LoopStrengthReduce.lo \
-	AddrModeMatcher.lo BasicBlockUtils.lo BreakCriticalEdges.lo \
-	DemoteRegToStack.lo LCSSA.lo Local.lo LoopSimplify.lo \
-	LowerInvoke.lo LowerSwitch.lo Mem2Reg.lo \
-	PromoteMemoryToRegister.lo SSAUpdater.lo SimplifyCFG.lo \
-	UnifyFunctionExitNodes.lo
+am__libllvmcodegen_la_SOURCES_DIST =  \
+	llvm/lib/Analysis/AliasSetTracker.cpp \
+	llvm/lib/Analysis/ConstantFolding.cpp \
+	llvm/lib/Analysis/IVUsers.cpp \
+	llvm/lib/Analysis/InstructionSimplify.cpp \
+	llvm/lib/Analysis/LoopInfo.cpp llvm/lib/Analysis/LoopPass.cpp \
+	llvm/lib/Analysis/MemoryDependenceAnalysis.cpp \
+	llvm/lib/Analysis/PHITransAddr.cpp \
+	llvm/lib/Analysis/ProfileInfo.cpp \
+	llvm/lib/Analysis/ScalarEvolution.cpp \
+	llvm/lib/Analysis/ScalarEvolutionExpander.cpp \
+	llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp \
+	llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp \
+	llvm/lib/CodeGen/AsmPrinter/DIE.cpp \
+	llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp \
+	llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp \
+	llvm/lib/CodeGen/AsmPrinter/DwarfLabel.cpp \
+	llvm/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp \
+	llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp \
+	llvm/lib/CodeGen/BranchFolding.cpp \
+	llvm/lib/CodeGen/CalcSpillWeights.cpp \
+	llvm/lib/CodeGen/CodePlacementOpt.cpp \
+	llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp \
+	llvm/lib/CodeGen/DeadMachineInstructionElim.cpp \
+	llvm/lib/CodeGen/DwarfEHPrepare.cpp \
+	llvm/lib/CodeGen/ExactHazardRecognizer.cpp \
+	llvm/lib/CodeGen/GCMetadata.cpp \
+	llvm/lib/CodeGen/GCStrategy.cpp \
+	llvm/lib/CodeGen/LLVMTargetMachine.cpp \
+	llvm/lib/CodeGen/LatencyPriorityQueue.cpp \
+	llvm/lib/CodeGen/LiveInterval.cpp \
+	llvm/lib/CodeGen/LiveIntervalAnalysis.cpp \
+	llvm/lib/CodeGen/LiveStackAnalysis.cpp \
+	llvm/lib/CodeGen/LiveVariables.cpp \
+	llvm/lib/CodeGen/LowerSubregs.cpp \
+	llvm/lib/CodeGen/MachineCSE.cpp \
+	llvm/lib/CodeGen/MachineDominators.cpp \
+	llvm/lib/CodeGen/MachineLICM.cpp \
+	llvm/lib/CodeGen/MachineLoopInfo.cpp \
+	llvm/lib/CodeGen/MachineModuleInfoImpls.cpp \
+	llvm/lib/CodeGen/MachinePassRegistry.cpp \
+	llvm/lib/CodeGen/MachineSSAUpdater.cpp \
+	llvm/lib/CodeGen/MachineSink.cpp \
+	llvm/lib/CodeGen/MachineVerifier.cpp \
+	llvm/lib/CodeGen/OptimizeExts.cpp \
+	llvm/lib/CodeGen/OptimizePHIs.cpp \
+	llvm/lib/CodeGen/PHIElimination.cpp \
+	llvm/lib/CodeGen/Passes.cpp \
+	llvm/lib/CodeGen/PostRASchedulerList.cpp \
+	llvm/lib/CodeGen/PreAllocSplitting.cpp \
+	llvm/lib/CodeGen/ProcessImplicitDefs.cpp \
+	llvm/lib/CodeGen/PrologEpilogInserter.cpp \
+	llvm/lib/CodeGen/RegAllocLinearScan.cpp \
+	llvm/lib/CodeGen/RegisterCoalescer.cpp \
+	llvm/lib/CodeGen/RegisterScavenging.cpp \
+	llvm/lib/CodeGen/ScheduleDAG.cpp \
+	llvm/lib/CodeGen/ScheduleDAGEmit.cpp \
+	llvm/lib/CodeGen/ScheduleDAGInstrs.cpp \
+	llvm/lib/CodeGen/ScheduleDAGPrinter.cpp \
+	llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp \
+	llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp \
+	llvm/lib/CodeGen/SelectionDAG/FastISel.cpp \
+	llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp \
+	llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp \
+	llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp \
+	llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp \
+	llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp \
+	llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp \
+	llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp \
+	llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp \
+	llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp \
+	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp \
+	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp \
+	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp \
+	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp \
+	llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp \
+	llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp \
+	llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp \
+	llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp \
+	llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp \
+	llvm/lib/CodeGen/ShrinkWrapping.cpp \
+	llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp \
+	llvm/lib/CodeGen/SjLjEHPrepare.cpp \
+	llvm/lib/CodeGen/SlotIndexes.cpp llvm/lib/CodeGen/Spiller.cpp \
+	llvm/lib/CodeGen/StackProtector.cpp \
+	llvm/lib/CodeGen/StackSlotColoring.cpp \
+	llvm/lib/CodeGen/StrongPHIElimination.cpp \
+	llvm/lib/CodeGen/TailDuplication.cpp \
+	llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp \
+	llvm/lib/CodeGen/TwoAddressInstructionPass.cpp \
+	llvm/lib/CodeGen/UnreachableBlockElim.cpp \
+	llvm/lib/CodeGen/VirtRegMap.cpp \
+	llvm/lib/CodeGen/VirtRegRewriter.cpp \
+	llvm/lib/MC/MCAsmInfoDarwin.cpp llvm/lib/MC/MCAsmStreamer.cpp \
+	llvm/lib/MC/MCAssembler.cpp llvm/lib/MC/MCInst.cpp \
+	llvm/lib/MC/MCMachOStreamer.cpp llvm/lib/MC/MCNullStreamer.cpp \
+	llvm/lib/MC/MCSectionMachO.cpp llvm/lib/MC/MCStreamer.cpp \
+	llvm/lib/Target/TargetFrameInfo.cpp \
+	llvm/lib/Target/TargetSubtarget.cpp \
+	llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp \
+	llvm/lib/Transforms/Scalar/GEPSplitter.cpp \
+	llvm/lib/Transforms/Scalar/GVN.cpp \
+	llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp \
+	llvm/lib/Transforms/Utils/AddrModeMatcher.cpp \
+	llvm/lib/Transforms/Utils/BasicBlockUtils.cpp \
+	llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp \
+	llvm/lib/Transforms/Utils/DemoteRegToStack.cpp \
+	llvm/lib/Transforms/Utils/LCSSA.cpp \
+	llvm/lib/Transforms/Utils/Local.cpp \
+	llvm/lib/Transforms/Utils/LoopSimplify.cpp \
+	llvm/lib/Transforms/Utils/LowerInvoke.cpp \
+	llvm/lib/Transforms/Utils/LowerSwitch.cpp \
+	llvm/lib/Transforms/Utils/Mem2Reg.cpp \
+	llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp \
+	llvm/lib/Transforms/Utils/SSAUpdater.cpp \
+	llvm/lib/Transforms/Utils/SimplifyCFG.cpp \
+	llvm/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmcodegen_la_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	AliasSetTracker.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ConstantFolding.lo IVUsers.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	InstructionSimplify.lo LoopInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LoopPass.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MemoryDependenceAnalysis.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	PHITransAddr.lo ProfileInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ScalarEvolution.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ScalarEvolutionExpander.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	AggressiveAntiDepBreaker.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	AsmPrinter.lo DIE.lo DwarfDebug.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	DwarfException.lo DwarfLabel.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	DwarfPrinter.lo DwarfWriter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	BranchFolding.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	CalcSpillWeights.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	CodePlacementOpt.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	CriticalAntiDepBreaker.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	DeadMachineInstructionElim.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	DwarfEHPrepare.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ExactHazardRecognizer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	GCMetadata.lo GCStrategy.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LLVMTargetMachine.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LatencyPriorityQueue.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LiveInterval.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LiveIntervalAnalysis.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LiveStackAnalysis.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LiveVariables.lo LowerSubregs.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineCSE.lo MachineDominators.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineLICM.lo MachineLoopInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineModuleInfoImpls.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachinePassRegistry.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineSSAUpdater.lo MachineSink.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineVerifier.lo OptimizeExts.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	OptimizePHIs.lo PHIElimination.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Passes.lo PostRASchedulerList.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	PreAllocSplitting.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ProcessImplicitDefs.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	PrologEpilogInserter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	RegAllocLinearScan.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	RegisterCoalescer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	RegisterScavenging.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ScheduleDAG.lo ScheduleDAGEmit.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ScheduleDAGInstrs.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ScheduleDAGPrinter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	CallingConvLower.lo DAGCombiner.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	FastISel.lo FunctionLoweringInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	InstrEmitter.lo LegalizeDAG.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LegalizeFloatTypes.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LegalizeIntegerTypes.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LegalizeTypes.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LegalizeTypesGeneric.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LegalizeVectorOps.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LegalizeVectorTypes.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ScheduleDAGFast.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ScheduleDAGList.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ScheduleDAGRRList.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ScheduleDAGSDNodes.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SelectionDAG.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SelectionDAGBuilder.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SelectionDAGISel.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SelectionDAGPrinter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetLowering.lo ShrinkWrapping.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SimpleRegisterCoalescing.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SjLjEHPrepare.lo SlotIndexes.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Spiller.lo StackProtector.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	StackSlotColoring.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	StrongPHIElimination.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TailDuplication.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetLoweringObjectFileImpl.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TwoAddressInstructionPass.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	UnreachableBlockElim.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	VirtRegMap.lo VirtRegRewriter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MCAsmInfoDarwin.lo MCAsmStreamer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MCAssembler.lo MCInst.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MCMachOStreamer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MCNullStreamer.lo MCSectionMachO.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MCStreamer.lo TargetFrameInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetSubtarget.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	CodeGenPrepare.lo GEPSplitter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	GVN.lo LoopStrengthReduce.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	AddrModeMatcher.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	BasicBlockUtils.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	BreakCriticalEdges.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	DemoteRegToStack.lo LCSSA.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Local.lo LoopSimplify.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LowerInvoke.lo LowerSwitch.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Mem2Reg.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	PromoteMemoryToRegister.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SSAUpdater.lo SimplifyCFG.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	UnifyFunctionExitNodes.lo
 libllvmcodegen_la_OBJECTS = $(am_libllvmcodegen_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmcodegen_la_rpath =
 libllvmfullcodegen_la_LIBADD =
-am_libllvmfullcodegen_la_OBJECTS = GCMetadataPrinter.lo \
-	IfConversion.lo IntrinsicLowering.lo OcamlGC.lo \
-	RegAllocLocal.lo RegAllocPBQP.lo ShadowStackGC.lo Execution.lo \
-	ExternalFunctions.lo Interpreter.lo Target.lo \
-	TargetAsmLexer.lo TargetELFWriterInfo.lo \
-	TargetIntrinsicInfo.lo
+am__libllvmfullcodegen_la_SOURCES_DIST =  \
+	llvm/lib/CodeGen/GCMetadataPrinter.cpp \
+	llvm/lib/CodeGen/IfConversion.cpp \
+	llvm/lib/CodeGen/IntrinsicLowering.cpp \
+	llvm/lib/CodeGen/OcamlGC.cpp \
+	llvm/lib/CodeGen/RegAllocLocal.cpp \
+	llvm/lib/CodeGen/RegAllocPBQP.cpp \
+	llvm/lib/CodeGen/ShadowStackGC.cpp \
+	llvm/lib/ExecutionEngine/Interpreter/Execution.cpp \
+	llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp \
+	llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp \
+	llvm/lib/Target/Target.cpp llvm/lib/Target/TargetAsmLexer.cpp \
+	llvm/lib/Target/TargetELFWriterInfo.cpp \
+	llvm/lib/Target/TargetIntrinsicInfo.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmfullcodegen_la_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	GCMetadataPrinter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	IfConversion.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	IntrinsicLowering.lo OcamlGC.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	RegAllocLocal.lo RegAllocPBQP.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ShadowStackGC.lo Execution.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ExternalFunctions.lo Interpreter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Target.lo TargetAsmLexer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetELFWriterInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetIntrinsicInfo.lo
 libllvmfullcodegen_la_OBJECTS = $(am_libllvmfullcodegen_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmfullcodegen_la_rpath =
 libllvminterpreter_la_LIBADD =
-am_libllvminterpreter_la_OBJECTS = Execution.lo ExternalFunctions.lo \
-	Interpreter.lo
+am__libllvminterpreter_la_SOURCES_DIST =  \
+	llvm/lib/ExecutionEngine/Interpreter/Execution.cpp \
+	llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp \
+	llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvminterpreter_la_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Execution.lo ExternalFunctions.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Interpreter.lo
 libllvminterpreter_la_OBJECTS = $(am_libllvminterpreter_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvminterpreter_la_rpath =
 libllvmjit_la_LIBADD =
-am_libllvmjit_la_OBJECTS = CallGraph.lo AliasAnalysis.lo \
-	BasicAliasAnalysis.lo CaptureTracking.lo DebugInfo.lo \
-	MemoryBuiltins.lo PointerTracking.lo ValueTracking.lo \
-	ELFCodeEmitter.lo ELFWriter.lo MachineBasicBlock.lo \
-	MachineFunction.lo MachineFunctionAnalysis.lo \
-	MachineFunctionPass.lo MachineInstr.lo MachineModuleInfo.lo \
-	MachineRegisterInfo.lo ObjectCodeEmitter.lo \
-	PseudoSourceValue.lo TargetInstrInfoImpl.lo ExecutionEngine.lo \
-	Intercept.lo JIT.lo JITDebugRegisterer.lo JITDwarfEmitter.lo \
-	JITEmitter.lo JITMemoryManager.lo OProfileJITEventListener.lo \
-	TargetSelect.lo MCAsmInfo.lo MCContext.lo MCExpr.lo \
-	MCSection.lo MCSectionELF.lo MCSymbol.lo APFloat.lo APInt.lo \
-	Allocator.lo CommandLine.lo ConstantRange.lo Debug.lo Dwarf.lo \
-	ErrorHandling.lo FoldingSet.lo FormattedStream.lo \
-	GraphWriter.lo ManagedStatic.lo MemoryBuffer.lo \
-	PrettyStackTrace.lo SmallPtrSet.lo SmallVector.lo SourceMgr.lo \
-	Statistic.lo StringExtras.lo StringMap.lo StringPool.lo \
-	StringRef.lo TargetRegistry.lo Timer.lo Triple.lo Twine.lo \
-	circular_raw_ostream.lo raw_ostream.lo Mangler.lo \
-	SubtargetFeature.lo TargetData.lo TargetInstrInfo.lo \
-	TargetLoweringObjectFile.lo TargetMachine.lo \
-	TargetRegisterInfo.lo DCE.lo AsmWriter.lo Attributes.lo \
-	AutoUpgrade.lo BasicBlock.lo ConstantFold.lo Constants.lo \
-	Core.lo Dominators.lo Function.lo GVMaterializer.lo Globals.lo \
-	IRBuilder.lo InlineAsm.lo Instruction.lo Instructions.lo \
-	IntrinsicInst.lo LLVMContext.lo LLVMContextImpl.lo \
-	LeakDetector.lo Metadata.lo Module.lo Pass.lo PassManager.lo \
-	PrintModulePass.lo Type.lo TypeSymbolTable.lo Use.lo Value.lo \
-	ValueSymbolTable.lo ValueTypes.lo Verifier.lo
+am__libllvmjit_la_SOURCES_DIST = llvm/lib/Analysis/IPA/CallGraph.cpp \
+	llvm/lib/Analysis/AliasAnalysis.cpp \
+	llvm/lib/Analysis/BasicAliasAnalysis.cpp \
+	llvm/lib/Analysis/CaptureTracking.cpp \
+	llvm/lib/Analysis/DebugInfo.cpp \
+	llvm/lib/Analysis/MemoryBuiltins.cpp \
+	llvm/lib/Analysis/PointerTracking.cpp \
+	llvm/lib/Analysis/ValueTracking.cpp \
+	llvm/lib/CodeGen/ELFCodeEmitter.cpp \
+	llvm/lib/CodeGen/ELFWriter.cpp \
+	llvm/lib/CodeGen/MachineBasicBlock.cpp \
+	llvm/lib/CodeGen/MachineFunction.cpp \
+	llvm/lib/CodeGen/MachineFunctionAnalysis.cpp \
+	llvm/lib/CodeGen/MachineFunctionPass.cpp \
+	llvm/lib/CodeGen/MachineInstr.cpp \
+	llvm/lib/CodeGen/MachineModuleInfo.cpp \
+	llvm/lib/CodeGen/MachineRegisterInfo.cpp \
+	llvm/lib/CodeGen/ObjectCodeEmitter.cpp \
+	llvm/lib/CodeGen/PseudoSourceValue.cpp \
+	llvm/lib/CodeGen/TargetInstrInfoImpl.cpp \
+	llvm/lib/ExecutionEngine/ExecutionEngine.cpp \
+	llvm/lib/ExecutionEngine/JIT/Intercept.cpp \
+	llvm/lib/ExecutionEngine/JIT/JIT.cpp \
+	llvm/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp \
+	llvm/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp \
+	llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp \
+	llvm/lib/ExecutionEngine/JIT/JITMemoryManager.cpp \
+	llvm/lib/ExecutionEngine/JIT/OProfileJITEventListener.cpp \
+	llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp \
+	llvm/lib/MC/MCAsmInfo.cpp llvm/lib/MC/MCContext.cpp \
+	llvm/lib/MC/MCExpr.cpp llvm/lib/MC/MCSection.cpp \
+	llvm/lib/MC/MCSectionELF.cpp llvm/lib/MC/MCSymbol.cpp \
+	llvm/lib/Support/APFloat.cpp llvm/lib/Support/APInt.cpp \
+	llvm/lib/Support/Allocator.cpp \
+	llvm/lib/Support/CommandLine.cpp \
+	llvm/lib/Support/ConstantRange.cpp llvm/lib/Support/Debug.cpp \
+	llvm/lib/Support/Dwarf.cpp llvm/lib/Support/ErrorHandling.cpp \
+	llvm/lib/Support/FoldingSet.cpp \
+	llvm/lib/Support/FormattedStream.cpp \
+	llvm/lib/Support/GraphWriter.cpp \
+	llvm/lib/Support/ManagedStatic.cpp \
+	llvm/lib/Support/MemoryBuffer.cpp \
+	llvm/lib/Support/PrettyStackTrace.cpp \
+	llvm/lib/Support/SmallPtrSet.cpp \
+	llvm/lib/Support/SmallVector.cpp \
+	llvm/lib/Support/SourceMgr.cpp llvm/lib/Support/Statistic.cpp \
+	llvm/lib/Support/StringExtras.cpp \
+	llvm/lib/Support/StringMap.cpp llvm/lib/Support/StringPool.cpp \
+	llvm/lib/Support/StringRef.cpp \
+	llvm/lib/Support/TargetRegistry.cpp llvm/lib/Support/Timer.cpp \
+	llvm/lib/Support/Triple.cpp llvm/lib/Support/Twine.cpp \
+	llvm/lib/Support/circular_raw_ostream.cpp \
+	llvm/lib/Support/raw_ostream.cpp llvm/lib/Target/Mangler.cpp \
+	llvm/lib/Target/SubtargetFeature.cpp \
+	llvm/lib/Target/TargetData.cpp \
+	llvm/lib/Target/TargetInstrInfo.cpp \
+	llvm/lib/Target/TargetLoweringObjectFile.cpp \
+	llvm/lib/Target/TargetMachine.cpp \
+	llvm/lib/Target/TargetRegisterInfo.cpp \
+	llvm/lib/Transforms/Scalar/ADCE.cpp \
+	llvm/lib/Transforms/Scalar/DCE.cpp \
+	llvm/lib/Transforms/Scalar/SCCP.cpp \
+	llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp \
+	llvm/lib/Transforms/IPO/ConstantMerge.cpp \
+	llvm/lib/Transforms/IPO/GlobalOpt.cpp \
+	llvm/lib/Transforms/IPO/GlobalDCE.cpp \
+	llvm/lib/VMCore/AsmWriter.cpp llvm/lib/VMCore/Attributes.cpp \
+	llvm/lib/VMCore/AutoUpgrade.cpp llvm/lib/VMCore/BasicBlock.cpp \
+	llvm/lib/VMCore/ConstantFold.cpp llvm/lib/VMCore/Constants.cpp \
+	llvm/lib/VMCore/Core.cpp llvm/lib/VMCore/Dominators.cpp \
+	llvm/lib/VMCore/Function.cpp \
+	llvm/lib/VMCore/GVMaterializer.cpp llvm/lib/VMCore/Globals.cpp \
+	llvm/lib/VMCore/IRBuilder.cpp llvm/lib/VMCore/InlineAsm.cpp \
+	llvm/lib/VMCore/Instruction.cpp \
+	llvm/lib/VMCore/Instructions.cpp \
+	llvm/lib/VMCore/IntrinsicInst.cpp \
+	llvm/lib/VMCore/LLVMContext.cpp \
+	llvm/lib/VMCore/LLVMContextImpl.cpp \
+	llvm/lib/VMCore/LeakDetector.cpp llvm/lib/VMCore/Metadata.cpp \
+	llvm/lib/VMCore/Module.cpp llvm/lib/VMCore/Pass.cpp \
+	llvm/lib/VMCore/PassManager.cpp \
+	llvm/lib/VMCore/PrintModulePass.cpp llvm/lib/VMCore/Type.cpp \
+	llvm/lib/VMCore/TypeSymbolTable.cpp llvm/lib/VMCore/Use.cpp \
+	llvm/lib/VMCore/Value.cpp llvm/lib/VMCore/ValueSymbolTable.cpp \
+	llvm/lib/VMCore/ValueTypes.cpp llvm/lib/VMCore/Verifier.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmjit_la_OBJECTS = CallGraph.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	AliasAnalysis.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	BasicAliasAnalysis.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	CaptureTracking.lo DebugInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MemoryBuiltins.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	PointerTracking.lo ValueTracking.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ELFCodeEmitter.lo ELFWriter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineBasicBlock.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineFunction.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineFunctionAnalysis.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineFunctionPass.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineInstr.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineModuleInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MachineRegisterInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ObjectCodeEmitter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	PseudoSourceValue.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetInstrInfoImpl.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ExecutionEngine.lo Intercept.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	JIT.lo JITDebugRegisterer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	JITDwarfEmitter.lo JITEmitter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	JITMemoryManager.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	OProfileJITEventListener.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetSelect.lo MCAsmInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MCContext.lo MCExpr.lo MCSection.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MCSectionELF.lo MCSymbol.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	APFloat.lo APInt.lo Allocator.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	CommandLine.lo ConstantRange.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Debug.lo Dwarf.lo ErrorHandling.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	FoldingSet.lo FormattedStream.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	GraphWriter.lo ManagedStatic.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MemoryBuffer.lo PrettyStackTrace.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SmallPtrSet.lo SmallVector.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SourceMgr.lo Statistic.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	StringExtras.lo StringMap.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	StringPool.lo StringRef.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetRegistry.lo Timer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Triple.lo Twine.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	circular_raw_ostream.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	raw_ostream.lo Mangler.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SubtargetFeature.lo TargetData.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetInstrInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetLoweringObjectFile.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetMachine.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TargetRegisterInfo.lo ADCE.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	DCE.lo SCCP.lo SimplifyCFGPass.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ConstantMerge.lo GlobalOpt.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	GlobalDCE.lo AsmWriter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Attributes.lo AutoUpgrade.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	BasicBlock.lo ConstantFold.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Constants.lo Core.lo Dominators.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Function.lo GVMaterializer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Globals.lo IRBuilder.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	InlineAsm.lo Instruction.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Instructions.lo IntrinsicInst.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LLVMContext.lo LLVMContextImpl.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	LeakDetector.lo Metadata.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Module.lo Pass.lo PassManager.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	PrintModulePass.lo Type.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TypeSymbolTable.lo Use.lo Value.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ValueSymbolTable.lo ValueTypes.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Verifier.lo
 libllvmjit_la_OBJECTS = $(am_libllvmjit_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmjit_la_rpath =
 libllvmpowerpccodegen_la_LIBADD =
 am__libllvmpowerpccodegen_la_SOURCES_DIST =  \
 	llvm/lib/Target/PowerPC/PPCBranchSelector.cpp \
@@ -327,55 +671,126 @@ am__libllvmpowerpccodegen_la_SOURCES_DIST =  \
 	llvm/lib/Target/PowerPC/PPCSubtarget.cpp \
 	llvm/lib/Target/PowerPC/PPCTargetMachine.cpp \
 	llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp
- at BUILD_PPC_TRUE@am_libllvmpowerpccodegen_la_OBJECTS =  \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCBranchSelector.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCCodeEmitter.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCHazardRecognizers.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCISelDAGToDAG.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCISelLowering.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCInstrInfo.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCJITInfo.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCMCAsmInfo.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCPredicates.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCRegisterInfo.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCSubtarget.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCTargetMachine.lo \
- at BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PowerPCTargetInfo.lo
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at am_libllvmpowerpccodegen_la_OBJECTS = libllvmpowerpccodegen_la-PPCBranchSelector.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCCodeEmitter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCHazardRecognizers.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCISelDAGToDAG.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCISelLowering.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCInstrInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCJITInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCMCAsmInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCPredicates.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCRegisterInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCSubtarget.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PPCTargetMachine.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	libllvmpowerpccodegen_la-PowerPCTargetInfo.lo
 libllvmpowerpccodegen_la_OBJECTS =  \
 	$(am_libllvmpowerpccodegen_la_OBJECTS)
- at BUILD_PPC_TRUE@am_libllvmpowerpccodegen_la_rpath =
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at am_libllvmpowerpccodegen_la_rpath =
 libllvmsupport_la_LIBADD =
-am_libllvmsupport_la_OBJECTS = APFloat.lo APInt.lo APSInt.lo \
-	Allocator.lo CommandLine.lo ConstantRange.lo Debug.lo \
-	DeltaAlgorithm.lo Dwarf.lo ErrorHandling.lo FileUtilities.lo \
-	FoldingSet.lo FormattedStream.lo GraphWriter.lo IsInf.lo \
-	IsNAN.lo ManagedStatic.lo MemoryBuffer.lo MemoryObject.lo \
-	PluginLoader.lo PrettyStackTrace.lo Regex.lo \
-	SlowOperationInformer.lo SmallPtrSet.lo SmallVector.lo \
-	SourceMgr.lo Statistic.lo StringExtras.lo StringMap.lo \
-	StringPool.lo StringRef.lo SystemUtils.lo TargetRegistry.lo \
-	Timer.lo Triple.lo Twine.lo circular_raw_ostream.lo \
-	raw_os_ostream.lo raw_ostream.lo regcomp.lo regerror.lo \
-	regexec.lo regfree.lo regstrlcpy.lo
+am__libllvmsupport_la_SOURCES_DIST = llvm/lib/Support/APFloat.cpp \
+	llvm/lib/Support/APInt.cpp llvm/lib/Support/APSInt.cpp \
+	llvm/lib/Support/Allocator.cpp \
+	llvm/lib/Support/CommandLine.cpp \
+	llvm/lib/Support/ConstantRange.cpp llvm/lib/Support/Debug.cpp \
+	llvm/lib/Support/DeltaAlgorithm.cpp llvm/lib/Support/Dwarf.cpp \
+	llvm/lib/Support/ErrorHandling.cpp \
+	llvm/lib/Support/FileUtilities.cpp \
+	llvm/lib/Support/FoldingSet.cpp \
+	llvm/lib/Support/FormattedStream.cpp \
+	llvm/lib/Support/GraphWriter.cpp llvm/lib/Support/IsInf.cpp \
+	llvm/lib/Support/IsNAN.cpp llvm/lib/Support/ManagedStatic.cpp \
+	llvm/lib/Support/MemoryBuffer.cpp \
+	llvm/lib/Support/MemoryObject.cpp \
+	llvm/lib/Support/PluginLoader.cpp \
+	llvm/lib/Support/PrettyStackTrace.cpp \
+	llvm/lib/Support/Regex.cpp \
+	llvm/lib/Support/SlowOperationInformer.cpp \
+	llvm/lib/Support/SmallPtrSet.cpp \
+	llvm/lib/Support/SmallVector.cpp \
+	llvm/lib/Support/SourceMgr.cpp llvm/lib/Support/Statistic.cpp \
+	llvm/lib/Support/StringExtras.cpp \
+	llvm/lib/Support/StringMap.cpp llvm/lib/Support/StringPool.cpp \
+	llvm/lib/Support/StringRef.cpp \
+	llvm/lib/Support/SystemUtils.cpp \
+	llvm/lib/Support/TargetRegistry.cpp llvm/lib/Support/Timer.cpp \
+	llvm/lib/Support/Triple.cpp llvm/lib/Support/Twine.cpp \
+	llvm/lib/Support/circular_raw_ostream.cpp \
+	llvm/lib/Support/raw_os_ostream.cpp \
+	llvm/lib/Support/raw_ostream.cpp llvm/lib/Support/regcomp.c \
+	llvm/lib/Support/regerror.c llvm/lib/Support/regexec.c \
+	llvm/lib/Support/regfree.c llvm/lib/Support/regstrlcpy.c
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmsupport_la_OBJECTS = APFloat.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	APInt.lo APSInt.lo Allocator.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	CommandLine.lo ConstantRange.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Debug.lo DeltaAlgorithm.lo Dwarf.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ErrorHandling.lo FileUtilities.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	FoldingSet.lo FormattedStream.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	GraphWriter.lo IsInf.lo IsNAN.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ManagedStatic.lo MemoryBuffer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MemoryObject.lo PluginLoader.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	PrettyStackTrace.lo Regex.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SlowOperationInformer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SmallPtrSet.lo SmallVector.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SourceMgr.lo Statistic.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	StringExtras.lo StringMap.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	StringPool.lo StringRef.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SystemUtils.lo TargetRegistry.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Timer.lo Triple.lo Twine.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	circular_raw_ostream.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	raw_os_ostream.lo raw_ostream.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	regcomp.lo regerror.lo regexec.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	regfree.lo regstrlcpy.lo
 libllvmsupport_la_OBJECTS = $(am_libllvmsupport_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmsupport_la_rpath =
 libllvmsupport_nodups_la_LIBADD =
-am_libllvmsupport_nodups_la_OBJECTS = APSInt.lo DeltaAlgorithm.lo \
-	FileUtilities.lo IsInf.lo IsNAN.lo MemoryObject.lo \
-	PluginLoader.lo Regex.lo SlowOperationInformer.lo \
-	SystemUtils.lo raw_os_ostream.lo regcomp.lo regerror.lo \
-	regexec.lo regfree.lo regstrlcpy.lo
+am__libllvmsupport_nodups_la_SOURCES_DIST =  \
+	llvm/lib/Support/APSInt.cpp \
+	llvm/lib/Support/DeltaAlgorithm.cpp \
+	llvm/lib/Support/FileUtilities.cpp llvm/lib/Support/IsInf.cpp \
+	llvm/lib/Support/IsNAN.cpp llvm/lib/Support/MemoryObject.cpp \
+	llvm/lib/Support/PluginLoader.cpp llvm/lib/Support/Regex.cpp \
+	llvm/lib/Support/SlowOperationInformer.cpp \
+	llvm/lib/Support/SystemUtils.cpp \
+	llvm/lib/Support/raw_os_ostream.cpp llvm/lib/Support/regcomp.c \
+	llvm/lib/Support/regerror.c llvm/lib/Support/regexec.c \
+	llvm/lib/Support/regfree.c llvm/lib/Support/regstrlcpy.c
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmsupport_nodups_la_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	APSInt.lo DeltaAlgorithm.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	FileUtilities.lo IsInf.lo IsNAN.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	MemoryObject.lo PluginLoader.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Regex.lo SlowOperationInformer.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	SystemUtils.lo raw_os_ostream.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	regcomp.lo regerror.lo regexec.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	regfree.lo regstrlcpy.lo
 libllvmsupport_nodups_la_OBJECTS =  \
 	$(am_libllvmsupport_nodups_la_OBJECTS)
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmsupport_nodups_la_rpath =
 libllvmsystem_la_DEPENDENCIES =
-am_libllvmsystem_la_OBJECTS = Alarm.lo Atomic.lo Disassembler.lo \
-	DynamicLibrary.lo Errno.lo Host.lo IncludeFile.lo Memory.lo \
-	Mutex.lo Path.lo Process.lo Program.lo RWMutex.lo Signals.lo \
-	ThreadLocal.lo Threading.lo TimeValue.lo
+am__libllvmsystem_la_SOURCES_DIST = llvm/lib/System/Alarm.cpp \
+	llvm/lib/System/Atomic.cpp llvm/lib/System/Disassembler.cpp \
+	llvm/lib/System/DynamicLibrary.cpp llvm/lib/System/Errno.cpp \
+	llvm/lib/System/Host.cpp llvm/lib/System/IncludeFile.cpp \
+	llvm/lib/System/Memory.cpp llvm/lib/System/Mutex.cpp \
+	llvm/lib/System/Path.cpp llvm/lib/System/Process.cpp \
+	llvm/lib/System/Program.cpp llvm/lib/System/RWMutex.cpp \
+	llvm/lib/System/Signals.cpp llvm/lib/System/ThreadLocal.cpp \
+	llvm/lib/System/Threading.cpp llvm/lib/System/TimeValue.cpp \
+	llvm/config.status
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmsystem_la_OBJECTS = Alarm.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Atomic.lo Disassembler.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	DynamicLibrary.lo Errno.lo Host.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	IncludeFile.lo Memory.lo Mutex.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	Path.lo Process.lo Program.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	RWMutex.lo Signals.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	ThreadLocal.lo Threading.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@	TimeValue.lo
 libllvmsystem_la_OBJECTS = $(am_libllvmsystem_la_OBJECTS)
 libllvmsystem_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(AM_CXXFLAGS) $(CXXFLAGS) $(libllvmsystem_la_LDFLAGS) \
 	$(LDFLAGS) -o $@
+ at BUILD_EXTERNAL_LLVM_FALSE@am_libllvmsystem_la_rpath =
 libllvmx86codegen_la_LIBADD =
 am__libllvmx86codegen_la_SOURCES_DIST = llvm/lib/MC/MCAsmInfoCOFF.cpp \
 	llvm/lib/MC/MCCodeEmitter.cpp llvm/lib/MC/TargetAsmBackend.cpp \
@@ -399,143 +814,206 @@ am__libllvmx86codegen_la_SOURCES_DIST = llvm/lib/MC/MCAsmInfoCOFF.cpp \
 	llvm/lib/Target/X86/X86Subtarget.cpp \
 	llvm/lib/Target/X86/X86TargetMachine.cpp \
 	llvm/lib/Target/X86/X86TargetObjectFile.cpp
- at BUILD_X86_TRUE@am_libllvmx86codegen_la_OBJECTS =  \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-MCAsmInfoCOFF.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-MCCodeEmitter.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-TargetAsmBackend.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-TargetELFWriterInfo.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86TargetInfo.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86AsmBackend.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86COFFMachineModuleInfo.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86CodeEmitter.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86ELFWriterInfo.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86FastISel.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86FloatingPoint.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86FloatingPointRegKill.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86ISelDAGToDAG.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86ISelLowering.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86InstrInfo.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86JITInfo.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86MCAsmInfo.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86MCCodeEmitter.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86MCTargetExpr.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86RegisterInfo.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86Subtarget.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86TargetMachine.lo \
- at BUILD_X86_TRUE@	libllvmx86codegen_la-X86TargetObjectFile.lo
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at am_libllvmx86codegen_la_OBJECTS = libllvmx86codegen_la-MCAsmInfoCOFF.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-MCCodeEmitter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-TargetAsmBackend.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-TargetELFWriterInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86TargetInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86AsmBackend.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86COFFMachineModuleInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86CodeEmitter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86ELFWriterInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86FastISel.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86FloatingPoint.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86FloatingPointRegKill.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86ISelDAGToDAG.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86ISelLowering.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86InstrInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86JITInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86MCAsmInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86MCCodeEmitter.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86MCTargetExpr.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86RegisterInfo.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86Subtarget.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86TargetMachine.lo \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	libllvmx86codegen_la-X86TargetObjectFile.lo
 libllvmx86codegen_la_OBJECTS = $(am_libllvmx86codegen_la_OBJECTS)
- at BUILD_X86_TRUE@am_libllvmx86codegen_la_rpath =
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at am_libllvmx86codegen_la_rpath =
 PROGRAMS = $(noinst_PROGRAMS)
-am_FileCheck_OBJECTS = FileCheck-FileCheck.$(OBJEXT)
+am__FileCheck_SOURCES_DIST = llvm/utils/FileCheck/FileCheck.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_FileCheck_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	FileCheck-FileCheck.$(OBJEXT)
 FileCheck_OBJECTS = $(am_FileCheck_OBJECTS)
-FileCheck_DEPENDENCIES = libllvmsupport.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@FileCheck_DEPENDENCIES = libllvmsupport.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsystem.la
 FileCheck_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(FileCheck_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_count_OBJECTS = count-count.$(OBJEXT)
+am__count_SOURCES_DIST = llvm/utils/count/count.c
+ at BUILD_EXTERNAL_LLVM_FALSE@am_count_OBJECTS = count-count.$(OBJEXT)
 count_OBJECTS = $(am_count_OBJECTS)
-count_DEPENDENCIES = libllvmsystem.la
-am_llc_OBJECTS = llc-MCInstPrinter.$(OBJEXT) llc-llc.$(OBJEXT)
+ at BUILD_EXTERNAL_LLVM_FALSE@count_DEPENDENCIES = libllvmsystem.la
+am__llc_SOURCES_DIST = llvm/lib/MC/MCInstPrinter.cpp \
+	llvm/tools/llc/llc.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_llc_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llc-MCInstPrinter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llc-llc.$(OBJEXT)
 llc_OBJECTS = $(am_llc_OBJECTS)
-llc_DEPENDENCIES = libllvmbitreader.la libllvmasmprinter.la \
-	libllvmasmparser.la $(lli_LDADD)
+ at BUILD_EXTERNAL_LLVM_FALSE@llc_DEPENDENCIES = libllvmbitreader.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmasmprinter.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmasmparser.la $(lli_LDADD)
 llc_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(llc_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_lli_OBJECTS = lli.$(OBJEXT)
+am__lli_SOURCES_DIST = llvm/tools/lli/lli.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_lli_OBJECTS = lli.$(OBJEXT)
 lli_OBJECTS = $(am_lli_OBJECTS)
-lli_DEPENDENCIES = libllvmbitreader.la libllvmfullcodegen.la \
-	libllvmjit.la $(am__append_3) $(am__append_7) $(am__append_11) \
-	libllvmfullcodegen.la libllvmcodegen.la \
-	libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
-am_llvm_as_OBJECTS = llvm_as-llvm-as.$(OBJEXT)
+ at BUILD_EXTERNAL_LLVM_FALSE@lli_DEPENDENCIES = libllvmbitreader.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmfullcodegen.la libllvmjit.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_4) $(am__append_8) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_12) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmfullcodegen.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmcodegen.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsupport_nodups.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmjit.la libllvmsystem.la
+am__llvm_as_SOURCES_DIST = llvm/tools/llvm-as/llvm-as.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_llvm_as_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm_as-llvm-as.$(OBJEXT)
 llvm_as_OBJECTS = $(am_llvm_as_OBJECTS)
-llvm_as_DEPENDENCIES = libllvmasmparser.la libllvmbitwriter.la \
-	libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_as_DEPENDENCIES = libllvmasmparser.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmbitwriter.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsupport_nodups.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmjit.la libllvmsystem.la
 llvm_as_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(llvm_as_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_llvm_dis_OBJECTS = llvm_dis-llvm-dis.$(OBJEXT)
+am__llvm_dis_SOURCES_DIST = llvm/tools/llvm-dis/llvm-dis.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_llvm_dis_OBJECTS =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm_dis-llvm-dis.$(OBJEXT)
 llvm_dis_OBJECTS = $(am_llvm_dis_OBJECTS)
-llvm_dis_DEPENDENCIES = libllvmasmparser.la libllvmbitreader.la \
-	libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_dis_DEPENDENCIES =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmasmparser.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmbitreader.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsupport_nodups.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmjit.la libllvmsystem.la
 llvm_dis_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(llvm_dis_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_llvmunittest_ADT_OBJECTS = llvmunittest_ADT-APFloatTest.$(OBJEXT) \
-	llvmunittest_ADT-APIntTest.$(OBJEXT) \
-	llvmunittest_ADT-DenseMapTest.$(OBJEXT) \
-	llvmunittest_ADT-DenseSetTest.$(OBJEXT) \
-	llvmunittest_ADT-ImmutableSetTest.$(OBJEXT) \
-	llvmunittest_ADT-SmallStringTest.$(OBJEXT) \
-	llvmunittest_ADT-SmallVectorTest.$(OBJEXT) \
-	llvmunittest_ADT-SparseBitVectorTest.$(OBJEXT) \
-	llvmunittest_ADT-StringMapTest.$(OBJEXT) \
-	llvmunittest_ADT-StringRefTest.$(OBJEXT) \
-	llvmunittest_ADT-TripleTest.$(OBJEXT) \
-	llvmunittest_ADT-TwineTest.$(OBJEXT)
+am__llvmunittest_ADT_SOURCES_DIST =  \
+	llvm/unittests/ADT/APFloatTest.cpp \
+	llvm/unittests/ADT/APIntTest.cpp \
+	llvm/unittests/ADT/DenseMapTest.cpp \
+	llvm/unittests/ADT/DenseSetTest.cpp \
+	llvm/unittests/ADT/ImmutableSetTest.cpp \
+	llvm/unittests/ADT/SmallStringTest.cpp \
+	llvm/unittests/ADT/SmallVectorTest.cpp \
+	llvm/unittests/ADT/SparseBitVectorTest.cpp \
+	llvm/unittests/ADT/StringMapTest.cpp \
+	llvm/unittests/ADT/StringRefTest.cpp \
+	llvm/unittests/ADT/TripleTest.cpp \
+	llvm/unittests/ADT/TwineTest.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_llvmunittest_ADT_OBJECTS = llvmunittest_ADT-APFloatTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-APIntTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-DenseMapTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-DenseSetTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-ImmutableSetTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-SmallStringTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-SmallVectorTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-SparseBitVectorTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-StringMapTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-StringRefTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-TripleTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ADT-TwineTest.$(OBJEXT)
 llvmunittest_ADT_OBJECTS = $(am_llvmunittest_ADT_OBJECTS)
-llvmunittest_ADT_DEPENDENCIES = libgoogletest.la \
-	libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ADT_DEPENDENCIES =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsupport_nodups.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmjit.la libllvmsystem.la
 llvmunittest_ADT_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(llvmunittest_ADT_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_llvmunittest_ExecutionEngine_OBJECTS =  \
-	llvmunittest_ExecutionEngine-IntrinsicLowering.$(OBJEXT) \
-	llvmunittest_ExecutionEngine-ExecutionEngineTest.$(OBJEXT)
+am__llvmunittest_ExecutionEngine_SOURCES_DIST =  \
+	llvm/lib/CodeGen/IntrinsicLowering.cpp \
+	llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_llvmunittest_ExecutionEngine_OBJECTS = llvmunittest_ExecutionEngine-IntrinsicLowering.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_ExecutionEngine-ExecutionEngineTest.$(OBJEXT)
 llvmunittest_ExecutionEngine_OBJECTS =  \
 	$(am_llvmunittest_ExecutionEngine_OBJECTS)
-llvmunittest_ExecutionEngine_DEPENDENCIES = libgoogletest.la \
-	libllvminterpreter.la libllvmsupport_nodups.la \
-	$(libclamavcxx_la_LIBADD) libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ExecutionEngine_DEPENDENCIES =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvminterpreter.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsupport_nodups.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(libclamavcxx_la_LIBADD) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsystem.la
 llvmunittest_ExecutionEngine_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(llvmunittest_ExecutionEngine_CXXFLAGS) $(CXXFLAGS) \
 	$(AM_LDFLAGS) $(LDFLAGS) -o $@
-am_llvmunittest_JIT_OBJECTS =  \
-	llvmunittest_JIT-JITEventListenerTest.$(OBJEXT) \
-	llvmunittest_JIT-JITMemoryManagerTest.$(OBJEXT) \
-	llvmunittest_JIT-JITTest.$(OBJEXT)
+am__llvmunittest_JIT_SOURCES_DIST =  \
+	llvm/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp \
+	llvm/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp \
+	llvm/unittests/ExecutionEngine/JIT/JITTest.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_llvmunittest_JIT_OBJECTS = llvmunittest_JIT-JITEventListenerTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_JIT-JITMemoryManagerTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_JIT-JITTest.$(OBJEXT)
 llvmunittest_JIT_OBJECTS = $(am_llvmunittest_JIT_OBJECTS)
-llvmunittest_JIT_DEPENDENCIES = libgoogletest.la libllvmasmparser.la \
-	$(lli_LDADD)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_JIT_DEPENDENCIES =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmasmparser.la $(lli_LDADD)
 llvmunittest_JIT_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(llvmunittest_JIT_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_llvmunittest_Support_OBJECTS =  \
-	llvmunittest_Support-AllocatorTest.$(OBJEXT) \
-	llvmunittest_Support-ConstantRangeTest.$(OBJEXT) \
-	llvmunittest_Support-MathExtrasTest.$(OBJEXT) \
-	llvmunittest_Support-RegexTest.$(OBJEXT) \
-	llvmunittest_Support-TypeBuilderTest.$(OBJEXT) \
-	llvmunittest_Support-ValueHandleTest.$(OBJEXT) \
-	llvmunittest_Support-raw_ostream_test.$(OBJEXT)
+am__llvmunittest_Support_SOURCES_DIST =  \
+	llvm/unittests/Support/AllocatorTest.cpp \
+	llvm/unittests/Support/ConstantRangeTest.cpp \
+	llvm/unittests/Support/MathExtrasTest.cpp \
+	llvm/unittests/Support/RegexTest.cpp \
+	llvm/unittests/Support/TypeBuilderTest.cpp \
+	llvm/unittests/Support/ValueHandleTest.cpp \
+	llvm/unittests/Support/raw_ostream_test.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_llvmunittest_Support_OBJECTS = llvmunittest_Support-AllocatorTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_Support-ConstantRangeTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_Support-MathExtrasTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_Support-RegexTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_Support-TypeBuilderTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_Support-ValueHandleTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_Support-raw_ostream_test.$(OBJEXT)
 llvmunittest_Support_OBJECTS = $(am_llvmunittest_Support_OBJECTS)
-llvmunittest_Support_DEPENDENCIES = libgoogletest.la \
-	libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_Support_DEPENDENCIES =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsupport_nodups.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmjit.la libllvmsystem.la
 llvmunittest_Support_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(llvmunittest_Support_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_llvmunittest_VMCore_OBJECTS =  \
-	llvmunittest_VMCore-CallGraphSCCPass.$(OBJEXT) \
-	llvmunittest_VMCore-LoopInfo.$(OBJEXT) \
-	llvmunittest_VMCore-LoopPass.$(OBJEXT) \
-	llvmunittest_VMCore-ConstantsTest.$(OBJEXT) \
-	llvmunittest_VMCore-MetadataTest.$(OBJEXT) \
-	llvmunittest_VMCore-PassManagerTest.$(OBJEXT)
+am__llvmunittest_VMCore_SOURCES_DIST =  \
+	llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp \
+	llvm/lib/Analysis/LoopInfo.cpp llvm/lib/Analysis/LoopPass.cpp \
+	llvm/unittests/VMCore/ConstantsTest.cpp \
+	llvm/unittests/VMCore/MetadataTest.cpp \
+	llvm/unittests/VMCore/PassManagerTest.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_llvmunittest_VMCore_OBJECTS = llvmunittest_VMCore-CallGraphSCCPass.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_VMCore-LoopInfo.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_VMCore-LoopPass.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_VMCore-ConstantsTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_VMCore-MetadataTest.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvmunittest_VMCore-PassManagerTest.$(OBJEXT)
 llvmunittest_VMCore_OBJECTS = $(am_llvmunittest_VMCore_OBJECTS)
-llvmunittest_VMCore_DEPENDENCIES = libgoogletest.la \
-	libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_VMCore_DEPENDENCIES =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libgoogletest.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsupport_nodups.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmjit.la libllvmsystem.la
 llvmunittest_VMCore_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
 	$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
 	$(llvmunittest_VMCore_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
 	$(LDFLAGS) -o $@
-am_not_OBJECTS = not-not.$(OBJEXT)
+am__not_SOURCES_DIST = llvm/utils/not/not.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@am_not_OBJECTS = not-not.$(OBJEXT)
 not_OBJECTS = $(am_not_OBJECTS)
-not_DEPENDENCIES = libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@not_DEPENDENCIES = libllvmsystem.la
 not_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
 	$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(not_CXXFLAGS) \
 	$(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
@@ -611,100 +1089,99 @@ am__tblgen_SOURCES_DIST = llvm/utils/TableGen/AsmMatcherEmitter.cpp \
 	llvm/lib/Support/raw_ostream.cpp llvm/lib/Support/regcomp.c \
 	llvm/lib/Support/regerror.c llvm/lib/Support/regexec.c \
 	llvm/lib/Support/regfree.c llvm/lib/Support/regstrlcpy.c
- at MAINTAINER_MODE_TRUE@am_tblgen_OBJECTS =  \
- at MAINTAINER_MODE_TRUE@	tblgen-AsmMatcherEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-AsmWriterEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-AsmWriterInst.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-CallingConvEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-ClangDiagnosticsEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-CodeEmitterGen.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-CodeGenDAGPatterns.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-CodeGenInstruction.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-CodeGenTarget.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-DAGISelEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-DAGISelMatcher.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-DAGISelMatcherEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-DAGISelMatcherGen.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-DAGISelMatcherOpt.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-DisassemblerEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-EDEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-FastISelEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-InstrEnumEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-InstrInfoEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-IntrinsicEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-LLVMCConfigurationEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-OptParserEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Record.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-RegisterInfoEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-SubtargetEmitter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-TGLexer.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-TGParser.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-TGValueTypes.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-TableGen.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-TableGenBackend.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-X86DisassemblerTables.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-X86RecognizableInstr.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Alarm.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Atomic.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Disassembler.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-DynamicLibrary.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Errno.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Host.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-IncludeFile.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Memory.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Mutex.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Path.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Process.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Program.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-RWMutex.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Signals.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-ThreadLocal.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Threading.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-TimeValue.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-APFloat.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-APInt.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-APSInt.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Allocator.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-CommandLine.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-ConstantRange.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Debug.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-DeltaAlgorithm.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Dwarf.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-ErrorHandling.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-FileUtilities.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-FoldingSet.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-FormattedStream.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-GraphWriter.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-IsInf.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-IsNAN.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-ManagedStatic.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-MemoryBuffer.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-MemoryObject.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-PluginLoader.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-PrettyStackTrace.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Regex.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-SlowOperationInformer.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-SmallPtrSet.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-SmallVector.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-SourceMgr.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Statistic.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-StringExtras.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-StringMap.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-StringPool.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-StringRef.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-SystemUtils.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-TargetRegistry.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Timer.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Triple.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-Twine.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-circular_raw_ostream.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-raw_os_ostream.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-raw_ostream.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-regcomp.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-regerror.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-regexec.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-regfree.$(OBJEXT) \
- at MAINTAINER_MODE_TRUE@	tblgen-regstrlcpy.$(OBJEXT)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at am_tblgen_OBJECTS = tblgen-AsmMatcherEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-AsmWriterEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-AsmWriterInst.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-CallingConvEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-ClangDiagnosticsEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-CodeEmitterGen.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-CodeGenDAGPatterns.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-CodeGenInstruction.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-CodeGenTarget.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-DAGISelEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-DAGISelMatcher.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-DAGISelMatcherEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-DAGISelMatcherGen.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-DAGISelMatcherOpt.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-DisassemblerEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-EDEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-FastISelEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-InstrEnumEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-InstrInfoEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-IntrinsicEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-LLVMCConfigurationEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-OptParserEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Record.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-RegisterInfoEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-SubtargetEmitter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-TGLexer.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-TGParser.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-TGValueTypes.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-TableGen.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-TableGenBackend.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-X86DisassemblerTables.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-X86RecognizableInstr.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Alarm.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Atomic.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Disassembler.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-DynamicLibrary.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Errno.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Host.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-IncludeFile.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Memory.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Mutex.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Path.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Process.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Program.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-RWMutex.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Signals.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-ThreadLocal.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Threading.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-TimeValue.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-APFloat.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-APInt.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-APSInt.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Allocator.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-CommandLine.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-ConstantRange.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Debug.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-DeltaAlgorithm.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Dwarf.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-ErrorHandling.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-FileUtilities.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-FoldingSet.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-FormattedStream.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-GraphWriter.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-IsInf.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-IsNAN.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-ManagedStatic.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-MemoryBuffer.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-MemoryObject.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-PluginLoader.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-PrettyStackTrace.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Regex.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-SlowOperationInformer.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-SmallPtrSet.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-SmallVector.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-SourceMgr.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Statistic.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-StringExtras.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-StringMap.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-StringPool.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-StringRef.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-SystemUtils.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-TargetRegistry.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Timer.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Triple.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-Twine.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-circular_raw_ostream.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-raw_os_ostream.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-raw_ostream.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-regcomp.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-regerror.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-regexec.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-regfree.$(OBJEXT) \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	tblgen-regstrlcpy.$(OBJEXT)
 tblgen_OBJECTS = $(am_tblgen_OBJECTS)
 tblgen_LDADD = $(LDADD)
 tblgen_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
@@ -769,25 +1246,31 @@ SOURCES = $(libclamavcxx_la_SOURCES) $(libgoogletest_la_SOURCES) \
 	$(llvmunittest_JIT_SOURCES) $(llvmunittest_Support_SOURCES) \
 	$(llvmunittest_VMCore_SOURCES) $(not_SOURCES) \
 	$(tblgen_SOURCES)
-DIST_SOURCES = $(libclamavcxx_la_SOURCES) $(libgoogletest_la_SOURCES) \
+DIST_SOURCES = $(libclamavcxx_la_SOURCES) \
+	$(am__libgoogletest_la_SOURCES_DIST) \
 	$(am__libllvmarmcodegen_la_SOURCES_DIST) \
-	$(libllvmasmparser_la_SOURCES) \
+	$(am__libllvmasmparser_la_SOURCES_DIST) \
 	$(am__libllvmasmprinter_la_SOURCES_DIST) \
-	$(libllvmbitreader_la_SOURCES) $(libllvmbitwriter_la_SOURCES) \
-	$(libllvmcodegen_la_SOURCES) $(libllvmfullcodegen_la_SOURCES) \
-	$(libllvminterpreter_la_SOURCES) $(libllvmjit_la_SOURCES) \
+	$(am__libllvmbitreader_la_SOURCES_DIST) \
+	$(am__libllvmbitwriter_la_SOURCES_DIST) \
+	$(am__libllvmcodegen_la_SOURCES_DIST) \
+	$(am__libllvmfullcodegen_la_SOURCES_DIST) \
+	$(am__libllvminterpreter_la_SOURCES_DIST) \
+	$(am__libllvmjit_la_SOURCES_DIST) \
 	$(am__libllvmpowerpccodegen_la_SOURCES_DIST) \
-	$(libllvmsupport_la_SOURCES) \
-	$(libllvmsupport_nodups_la_SOURCES) \
-	$(libllvmsystem_la_SOURCES) \
-	$(am__libllvmx86codegen_la_SOURCES_DIST) $(FileCheck_SOURCES) \
-	$(count_SOURCES) $(llc_SOURCES) $(lli_SOURCES) \
-	$(llvm_as_SOURCES) $(llvm_dis_SOURCES) \
-	$(llvmunittest_ADT_SOURCES) \
-	$(llvmunittest_ExecutionEngine_SOURCES) \
-	$(llvmunittest_JIT_SOURCES) $(llvmunittest_Support_SOURCES) \
-	$(llvmunittest_VMCore_SOURCES) $(not_SOURCES) \
-	$(am__tblgen_SOURCES_DIST)
+	$(am__libllvmsupport_la_SOURCES_DIST) \
+	$(am__libllvmsupport_nodups_la_SOURCES_DIST) \
+	$(am__libllvmsystem_la_SOURCES_DIST) \
+	$(am__libllvmx86codegen_la_SOURCES_DIST) \
+	$(am__FileCheck_SOURCES_DIST) $(am__count_SOURCES_DIST) \
+	$(am__llc_SOURCES_DIST) $(am__lli_SOURCES_DIST) \
+	$(am__llvm_as_SOURCES_DIST) $(am__llvm_dis_SOURCES_DIST) \
+	$(am__llvmunittest_ADT_SOURCES_DIST) \
+	$(am__llvmunittest_ExecutionEngine_SOURCES_DIST) \
+	$(am__llvmunittest_JIT_SOURCES_DIST) \
+	$(am__llvmunittest_Support_SOURCES_DIST) \
+	$(am__llvmunittest_VMCore_SOURCES_DIST) \
+	$(am__not_SOURCES_DIST) $(am__tblgen_SOURCES_DIST)
 ETAGS = etags
 CTAGS = ctags
 # If stdout is a non-dumb tty, use colors.  If test -t is not supported,
@@ -857,6 +1340,10 @@ LIBOBJS = @LIBOBJS@
 LIBS = @LIBS@
 LIBTOOL = @LIBTOOL@
 LIPO = @LIPO@
+LLVMCONFIG_CXXFLAGS = @LLVMCONFIG_CXXFLAGS@
+LLVMCONFIG_LDFLAGS = @LLVMCONFIG_LDFLAGS@
+LLVMCONFIG_LIBFILES = @LLVMCONFIG_LIBFILES@
+LLVMCONFIG_LIBS = @LLVMCONFIG_LIBS@
 LN_S = @LN_S@
 LTLIBOBJS = @LTLIBOBJS@
 MAINT = @MAINT@
@@ -949,695 +1436,721 @@ LLVM_INCLUDES = -I$(top_srcdir)/llvm/include -I$(top_builddir)/llvm/include
 # keep it like this while I'm testing LLVM
 # TODO: HP-UX should have -D_REENTRANT -D_HPUX_SOURCE
 LLVM_DEFS = -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -D_DEBUG -D_GNU_SOURCE
-AM_CPPFLAGS = -I$(top_srcdir)/../.. -I$(top_srcdir)/.. -I$(top_builddir)/../../ $(LLVM_INCLUDES) $(LLVM_DEFS)
+AM_CPPFLAGS = -I$(top_srcdir)/../.. -I$(top_srcdir)/.. \
+	-I$(top_builddir)/../../ $(am__append_1)
 AM_CXXFLAGS = $(LLVM_CXXFLAGS) -fno-exceptions
 ACLOCAL_AMFLAGS = -I m4
- at DEBUG_BUILD_FALSE@LLVM_CONFIG = llvm/Release/bin/llvm-config
- at DEBUG_BUILD_TRUE@LLVM_CONFIG = llvm/Debug/bin/llvm-config
-
-#$(LLVM_CONFIG): build-llvm
-# we know this will be built with GNU make, so its safe to use GNU make specific
-# $(shell ...)
-#LLVM_DEPS=$(shell $(LLVM_CONFIG) --libfiles jit nativecodegen)
-#libclamavcxx_la_CPPFLAGS = $(AM_CPPFLAGS) `$(LLVM_CONFIG) --cppflags`
-#libclamavcxx_la_DEPENDENCIES = $(LLVM_DEPS)
-#libclamavcxx_la_LDFLAGS = `$(LLVM_CONFIG) --ldflags --libs jit nativecodegen`
-#libclamavcxx_la_CPPFLAGS = $(AM_CPPFLAGS) $(LLVM_INCLUDES) $(LLVM_DEFS)
-#libclamavcxx_la_DEPENDENCIES = $(LLVM_DEPS)
-noinst_LTLIBRARIES = libclamavcxx.la libllvmsystem.la \
-	libllvmcodegen.la libllvmjit.la $(am__append_4) \
-	$(am__append_8) $(am__append_12)
-lli_LDADD = libllvmbitreader.la libllvmfullcodegen.la libllvmjit.la \
-	$(am__append_3) $(am__append_7) $(am__append_11) \
-	libllvmfullcodegen.la libllvmcodegen.la \
-	libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
-libclamavcxx_la_LIBADD = libllvmjit.la $(am__append_1) $(am__append_5) \
-	$(am__append_9) libllvmcodegen.la libllvmsystem.la
-libclamavcxx_la_DEPENDENCIES = libllvmjit.la libllvmcodegen.la \
-	libllvmsystem.la $(am__append_2) $(am__append_6) \
-	$(am__append_10)
-libclamavcxx_la_LDFLAGS = -no-undefined
-libclamavcxx_la_CXXFLAGS = $(LLVM_CXXFLAGS)
 libclamavcxx_la_SOURCES = bytecode2llvm.cpp\
 			  ClamBCRTChecks.cpp\
 			  ClamBCModule.h\
 			  ClamBCDiagnostics.h\
 			  detect.cpp
 
-LLVM_CXXFLAGS = -Woverloaded-virtual -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings
-unittest_CXXFLAGS = @NO_VARIADIC_MACROS@ @NO_MISSING_FIELD_INITIALIZERS@
-TBLGENFILES = llvm/include/llvm/Intrinsics.gen X86GenRegisterInfo.h.inc X86GenRegisterNames.inc X86GenRegisterInfo.inc X86GenInstrNames.inc X86GenInstrInfo.inc\
-    X86GenAsmWriter.inc X86GenAsmWriter1.inc X86GenAsmMatcher.inc X86GenDAGISel.inc X86GenFastISel.inc X86GenCallingConv.inc\
-    X86GenSubtarget.inc PPCGenInstrNames.inc PPCGenRegisterNames.inc PPCGenAsmWriter.inc PPCGenCodeEmitter.inc PPCGenRegisterInfo.h.inc PPCGenRegisterInfo.inc\
-    PPCGenInstrInfo.inc PPCGenDAGISel.inc PPCGenCallingConv.inc PPCGenSubtarget.inc ARMGenRegisterInfo.h.inc ARMGenRegisterNames.inc ARMGenRegisterInfo.inc ARMGenInstrNames.inc ARMGenInstrInfo.inc ARMGenCodeEmitter.inc\
-    ARMGenAsmWriter.inc ARMGenDAGISel.inc ARMGenCallingConv.inc ARMGenSubtarget.inc
+ at BUILD_EXTERNAL_LLVM_FALSE@libclamavcxx_la_CXXFLAGS = $(LLVM_CXXFLAGS)
+#$(LLVM_CONFIG): build-llvm
+# we know this will be built with GNU make, so its safe to use GNU make specific
+# $(shell ...)
+#LLVM_DEPS=$(shell $(LLVM_CONFIG) --libfiles jit nativecodegen)
+ at BUILD_EXTERNAL_LLVM_TRUE@libclamavcxx_la_CXXFLAGS = $(AM_CPPFLAGS) @LLVMCONFIG_CXXFLAGS@ -fexceptions -DLLVM28
+ at BUILD_EXTERNAL_LLVM_FALSE@libclamavcxx_la_LDFLAGS = -no-undefined
+ at BUILD_EXTERNAL_LLVM_TRUE@libclamavcxx_la_LDFLAGS = @LLVMCONFIG_LDFLAGS@ @LLVMCONFIG_LIBS@
+ at BUILD_EXTERNAL_LLVM_FALSE@libclamavcxx_la_DEPENDENCIES =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmjit.la libllvmcodegen.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsystem.la $(am__append_3) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_7) $(am__append_11)
+ at BUILD_EXTERNAL_LLVM_TRUE@libclamavcxx_la_DEPENDENCIES =  \
+ at BUILD_EXTERNAL_LLVM_TRUE@	@LLVMCONFIG_LIBFILES@ \
+ at BUILD_EXTERNAL_LLVM_TRUE@	$(am__append_3) $(am__append_7) \
+ at BUILD_EXTERNAL_LLVM_TRUE@	$(am__append_11)
+ at BUILD_EXTERNAL_LLVM_FALSE@noinst_LTLIBRARIES = libclamavcxx.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsystem.la libllvmcodegen.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmjit.la $(am__append_5) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_9) $(am__append_13)
+ at BUILD_EXTERNAL_LLVM_TRUE@noinst_LTLIBRARIES = libclamavcxx.la \
+ at BUILD_EXTERNAL_LLVM_TRUE@	$(am__append_5) $(am__append_9) \
+ at BUILD_EXTERNAL_LLVM_TRUE@	$(am__append_13)
+ at BUILD_EXTERNAL_LLVM_FALSE@lli_LDADD = libllvmbitreader.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmfullcodegen.la libllvmjit.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_4) $(am__append_8) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_12) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmfullcodegen.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmcodegen.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsupport_nodups.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@libclamavcxx_la_LIBADD = libllvmjit.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_2) $(am__append_6) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_10) libllvmcodegen.la \
+ at BUILD_EXTERNAL_LLVM_FALSE@	libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@LLVM_CXXFLAGS = -Woverloaded-virtual -pedantic -Wno-long-long -Wall -W -Wno-unused-parameter -Wwrite-strings
+ at BUILD_EXTERNAL_LLVM_FALSE@unittest_CXXFLAGS = @NO_VARIADIC_MACROS@ @NO_MISSING_FIELD_INITIALIZERS@ -DGTEST_HAS_TR1_TUPLE=0
+ at BUILD_EXTERNAL_LLVM_FALSE@TBLGENFILES = llvm/include/llvm/Intrinsics.gen X86GenRegisterInfo.h.inc X86GenRegisterNames.inc X86GenRegisterInfo.inc X86GenInstrNames.inc X86GenInstrInfo.inc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    X86GenAsmWriter.inc X86GenAsmWriter1.inc X86GenAsmMatcher.inc X86GenDAGISel.inc X86GenFastISel.inc X86GenCallingConv.inc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    X86GenSubtarget.inc PPCGenInstrNames.inc PPCGenRegisterNames.inc PPCGenAsmWriter.inc PPCGenCodeEmitter.inc PPCGenRegisterInfo.h.inc PPCGenRegisterInfo.inc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    PPCGenInstrInfo.inc PPCGenDAGISel.inc PPCGenCallingConv.inc PPCGenSubtarget.inc ARMGenRegisterInfo.h.inc ARMGenRegisterNames.inc ARMGenRegisterInfo.inc ARMGenInstrNames.inc ARMGenInstrInfo.inc ARMGenCodeEmitter.inc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    ARMGenAsmWriter.inc ARMGenDAGISel.inc ARMGenCallingConv.inc ARMGenSubtarget.inc
 
 
 # Rule to rerun LLVM's configure if it changed, before building anything else
 # LLVM
-BUILT_SOURCES = $(am__append_13) llvm/config.status
-EXTRA_DIST = $(top_srcdir)/llvm llvmcheck.sh $(TBLGENFILES)
-libllvmsystem_la_LDFLAGS = @THREAD_LIBS@
-libllvmsystem_la_LIBADD = 
-libllvmsystem_la_SOURCES = llvm/lib/System/Alarm.cpp \
-	llvm/lib/System/Atomic.cpp llvm/lib/System/Disassembler.cpp \
-	llvm/lib/System/DynamicLibrary.cpp llvm/lib/System/Errno.cpp \
-	llvm/lib/System/Host.cpp llvm/lib/System/IncludeFile.cpp \
-	llvm/lib/System/Memory.cpp llvm/lib/System/Mutex.cpp \
-	llvm/lib/System/Path.cpp llvm/lib/System/Process.cpp \
-	llvm/lib/System/Program.cpp llvm/lib/System/RWMutex.cpp \
-	llvm/lib/System/Signals.cpp llvm/lib/System/ThreadLocal.cpp \
-	llvm/lib/System/Threading.cpp llvm/lib/System/TimeValue.cpp \
-	llvm/config.status
+ at BUILD_EXTERNAL_LLVM_FALSE@BUILT_SOURCES = $(am__append_14) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/config.status
+ at BUILD_EXTERNAL_LLVM_FALSE@EXTRA_DIST = $(top_srcdir)/llvm llvmcheck.sh $(TBLGENFILES)
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmsystem_la_LDFLAGS = @THREAD_LIBS@
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmsystem_la_LIBADD = 
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmsystem_la_SOURCES =  \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Alarm.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Atomic.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Disassembler.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/DynamicLibrary.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Errno.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Host.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/IncludeFile.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Memory.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Mutex.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Path.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Process.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Program.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/RWMutex.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Signals.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/ThreadLocal.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/Threading.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/System/TimeValue.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/config.status
 
 # support is split into 2:
 # a full llvmsupport, and another that contains only objs
 # that aren't already contained in llvmjit
-libllvmsupport_la_SOURCES = \
-	llvm/lib/Support/APFloat.cpp\
-	llvm/lib/Support/APInt.cpp\
-	llvm/lib/Support/APSInt.cpp\
-	llvm/lib/Support/Allocator.cpp\
-	llvm/lib/Support/CommandLine.cpp\
-	llvm/lib/Support/ConstantRange.cpp\
-	llvm/lib/Support/Debug.cpp\
-	llvm/lib/Support/DeltaAlgorithm.cpp\
-	llvm/lib/Support/Dwarf.cpp\
-	llvm/lib/Support/ErrorHandling.cpp\
-	llvm/lib/Support/FileUtilities.cpp\
-	llvm/lib/Support/FoldingSet.cpp\
-	llvm/lib/Support/FormattedStream.cpp\
-	llvm/lib/Support/GraphWriter.cpp\
-	llvm/lib/Support/IsInf.cpp\
-	llvm/lib/Support/IsNAN.cpp\
-	llvm/lib/Support/ManagedStatic.cpp\
-	llvm/lib/Support/MemoryBuffer.cpp\
-	llvm/lib/Support/MemoryObject.cpp\
-	llvm/lib/Support/PluginLoader.cpp\
-	llvm/lib/Support/PrettyStackTrace.cpp\
-	llvm/lib/Support/Regex.cpp\
-	llvm/lib/Support/SlowOperationInformer.cpp\
-	llvm/lib/Support/SmallPtrSet.cpp\
-	llvm/lib/Support/SmallVector.cpp\
-	llvm/lib/Support/SourceMgr.cpp\
-	llvm/lib/Support/Statistic.cpp\
-	llvm/lib/Support/StringExtras.cpp\
-	llvm/lib/Support/StringMap.cpp\
-	llvm/lib/Support/StringPool.cpp\
-	llvm/lib/Support/StringRef.cpp\
-	llvm/lib/Support/SystemUtils.cpp\
-	llvm/lib/Support/TargetRegistry.cpp\
-	llvm/lib/Support/Timer.cpp\
-	llvm/lib/Support/Triple.cpp\
-	llvm/lib/Support/Twine.cpp\
-	llvm/lib/Support/circular_raw_ostream.cpp\
-	llvm/lib/Support/raw_os_ostream.cpp\
-	llvm/lib/Support/raw_ostream.cpp\
-	llvm/lib/Support/regcomp.c\
-	llvm/lib/Support/regerror.c\
-	llvm/lib/Support/regexec.c\
-	llvm/lib/Support/regfree.c\
-	llvm/lib/Support/regstrlcpy.c
-
-libllvmsupport_nodups_la_SOURCES = \
-	llvm/lib/Support/APSInt.cpp\
-	llvm/lib/Support/DeltaAlgorithm.cpp\
-	llvm/lib/Support/FileUtilities.cpp\
-	llvm/lib/Support/IsInf.cpp\
-	llvm/lib/Support/IsNAN.cpp\
-	llvm/lib/Support/MemoryObject.cpp\
-	llvm/lib/Support/PluginLoader.cpp\
-	llvm/lib/Support/Regex.cpp\
-	llvm/lib/Support/SlowOperationInformer.cpp\
-	llvm/lib/Support/SystemUtils.cpp\
-	llvm/lib/Support/raw_os_ostream.cpp\
-	llvm/lib/Support/regcomp.c\
-	llvm/lib/Support/regerror.c\
-	llvm/lib/Support/regexec.c\
-	llvm/lib/Support/regfree.c\
-	llvm/lib/Support/regstrlcpy.c
-
- at MAINTAINER_MODE_TRUE@tblgen_CXXFLAGS = $(LLVM_CXXFLAGS)
- at MAINTAINER_MODE_TRUE@tblgen_CFLAGS = 
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmsupport_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/APFloat.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/APInt.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/APSInt.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Allocator.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/CommandLine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/ConstantRange.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Debug.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/DeltaAlgorithm.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Dwarf.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/ErrorHandling.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/FileUtilities.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/FoldingSet.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/FormattedStream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/GraphWriter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/IsInf.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/IsNAN.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/ManagedStatic.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/MemoryBuffer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/MemoryObject.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/PluginLoader.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/PrettyStackTrace.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Regex.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SlowOperationInformer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SmallPtrSet.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SmallVector.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SourceMgr.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Statistic.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/StringExtras.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/StringMap.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/StringPool.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/StringRef.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SystemUtils.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/TargetRegistry.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Timer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Triple.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Twine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/circular_raw_ostream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/raw_os_ostream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/raw_ostream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regcomp.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regerror.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regexec.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regfree.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regstrlcpy.c
+
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmsupport_nodups_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/APSInt.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/DeltaAlgorithm.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/FileUtilities.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/IsInf.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/IsNAN.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/MemoryObject.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/PluginLoader.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Regex.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SlowOperationInformer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SystemUtils.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/raw_os_ostream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regcomp.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regerror.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regexec.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regfree.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/regstrlcpy.c
+
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at tblgen_CXXFLAGS = $(LLVM_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at tblgen_CFLAGS = 
 #TODO: if VERSIONSCRIPT
- at MAINTAINER_MODE_TRUE@tblgen_LDFLAGS = @THREAD_LIBS@ -Wl,--version-script, at top_srcdir@/llvm/autoconf/ExportMap.map
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at tblgen_LDFLAGS = @THREAD_LIBS@ -Wl,--version-script, at top_srcdir@/llvm/autoconf/ExportMap.map
 # tblgen needs rtti (for now), and we build everything else with -fno-rtti
 # since tblgen is only a maintainer-mode tool, build these files twice (once for
 # libllvmsupport.la -fno-rtti, and once here, with defaults (rtti)).
- at MAINTAINER_MODE_TRUE@tblgen_SOURCES = \
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/AsmMatcherEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/AsmWriterEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/AsmWriterInst.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CallingConvEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CodeEmitterGen.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CodeGenDAGPatterns.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CodeGenInstruction.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CodeGenTarget.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelMatcher.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelMatcherEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelMatcherGen.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelMatcherOpt.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DisassemblerEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/EDEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/FastISelEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/InstrEnumEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/InstrInfoEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/IntrinsicEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/LLVMCConfigurationEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/OptParserEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/Record.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/RegisterInfoEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/SubtargetEmitter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TGLexer.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TGParser.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TGValueTypes.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TableGen.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TableGenBackend.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/X86DisassemblerTables.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/X86RecognizableInstr.cpp \
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Alarm.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Atomic.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Disassembler.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/DynamicLibrary.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Errno.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Host.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/IncludeFile.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Memory.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Mutex.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Path.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Process.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Program.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/RWMutex.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Signals.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/ThreadLocal.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/Threading.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/System/TimeValue.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/APFloat.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/APInt.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/APSInt.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/Allocator.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/CommandLine.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/ConstantRange.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/Debug.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/DeltaAlgorithm.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/Dwarf.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/ErrorHandling.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/FileUtilities.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/FoldingSet.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/FormattedStream.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/GraphWriter.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/IsInf.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/IsNAN.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/ManagedStatic.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/MemoryBuffer.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/MemoryObject.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/PluginLoader.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/PrettyStackTrace.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/Regex.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/SlowOperationInformer.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/SmallPtrSet.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/SmallVector.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/SourceMgr.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/Statistic.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/StringExtras.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/StringMap.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/StringPool.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/StringRef.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/SystemUtils.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/TargetRegistry.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/Timer.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/Triple.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/Twine.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/circular_raw_ostream.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/raw_os_ostream.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/raw_ostream.cpp\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/regcomp.c\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/regerror.c\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/regexec.c\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/regfree.c\
- at MAINTAINER_MODE_TRUE@  llvm/lib/Support/regstrlcpy.c
-
- at MAINTAINER_MODE_TRUE@TBLGEN = $(top_builddir)/tblgen
- at MAINTAINER_MODE_TRUE@TBLGEN_V = $(AM_V_GEN)$(TBLGEN)
- at MAINTAINER_MODE_TRUE@TBLGEN_FLAGS = -I$(top_srcdir)/llvm/include -I$(top_srcdir)/llvm/lib/Target -omit-comments
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at tblgen_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/AsmMatcherEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/AsmWriterEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/AsmWriterInst.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CallingConvEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/ClangDiagnosticsEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CodeEmitterGen.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CodeGenDAGPatterns.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CodeGenInstruction.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/CodeGenTarget.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelMatcher.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelMatcherEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelMatcherGen.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DAGISelMatcherOpt.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/DisassemblerEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/EDEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/FastISelEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/InstrEnumEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/InstrInfoEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/IntrinsicEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/LLVMCConfigurationEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/OptParserEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/Record.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/RegisterInfoEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/SubtargetEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TGLexer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TGParser.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TGValueTypes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TableGen.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/TableGenBackend.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/X86DisassemblerTables.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/utils/TableGen/X86RecognizableInstr.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Alarm.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Atomic.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Disassembler.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/DynamicLibrary.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Errno.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Host.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/IncludeFile.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Memory.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Mutex.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Path.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Process.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Program.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/RWMutex.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Signals.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/ThreadLocal.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/Threading.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/System/TimeValue.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/APFloat.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/APInt.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/APSInt.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/Allocator.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/CommandLine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/ConstantRange.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/Debug.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/DeltaAlgorithm.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/Dwarf.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/ErrorHandling.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/FileUtilities.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/FoldingSet.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/FormattedStream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/GraphWriter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/IsInf.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/IsNAN.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/ManagedStatic.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/MemoryBuffer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/MemoryObject.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/PluginLoader.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/PrettyStackTrace.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/Regex.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/SlowOperationInformer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/SmallPtrSet.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/SmallVector.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/SourceMgr.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/Statistic.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/StringExtras.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/StringMap.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/StringPool.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/StringRef.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/SystemUtils.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/TargetRegistry.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/Timer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/Triple.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/Twine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/circular_raw_ostream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/raw_os_ostream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/raw_ostream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/regcomp.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/regerror.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/regexec.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/regfree.c\
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@  llvm/lib/Support/regstrlcpy.c
+
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at TBLGEN = $(top_builddir)/tblgen
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at TBLGEN_V = $(AM_V_GEN)$(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at TBLGEN_FLAGS = -I$(top_srcdir)/llvm/include -I$(top_srcdir)/llvm/lib/Target -omit-comments
 
 # X86 Target
- at MAINTAINER_MODE_TRUE@TBLGEN_FLAGS_X86 = $(TBLGEN_FLAGS) -I$(top_srcdir)/llvm/lib/Target/X86
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at TBLGEN_FLAGS_X86 = $(TBLGEN_FLAGS) -I$(top_srcdir)/llvm/lib/Target/X86
 
 # PPC Target
- at MAINTAINER_MODE_TRUE@TBLGEN_FLAGS_PPC = $(TBLGEN_FLAGS) -I$(top_srcdir)/llvm/lib/Target/PowerPC
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at TBLGEN_FLAGS_PPC = $(TBLGEN_FLAGS) -I$(top_srcdir)/llvm/lib/Target/PowerPC
 
 # ARM Target
- at MAINTAINER_MODE_TRUE@TBLGEN_FLAGS_ARM = $(TBLGEN_FLAGS) -I$(top_srcdir)/llvm/lib/Target/ARM
- at BUILD_X86_TRUE@libllvmx86codegen_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_builddir) -I$(top_srcdir)/llvm/lib/Target/X86
- at BUILD_X86_TRUE@libllvmx86codegen_la_SOURCES = \
- at BUILD_X86_TRUE@	llvm/lib/MC/MCAsmInfoCOFF.cpp\
- at BUILD_X86_TRUE@	llvm/lib/MC/MCCodeEmitter.cpp\
- at BUILD_X86_TRUE@	llvm/lib/MC/TargetAsmBackend.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/TargetELFWriterInfo.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/TargetInfo/X86TargetInfo.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86AsmBackend.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86COFFMachineModuleInfo.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86CodeEmitter.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86ELFWriterInfo.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86FastISel.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86FloatingPoint.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86FloatingPointRegKill.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86ISelDAGToDAG.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86ISelLowering.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86InstrInfo.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86JITInfo.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86MCAsmInfo.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86MCCodeEmitter.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86MCTargetExpr.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86RegisterInfo.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86Subtarget.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86TargetMachine.cpp\
- at BUILD_X86_TRUE@	llvm/lib/Target/X86/X86TargetObjectFile.cpp
-
- at BUILD_PPC_TRUE@libllvmpowerpccodegen_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_builddir) -I$(top_srcdir)/llvm/lib/Target/PowerPC
- at BUILD_PPC_TRUE@libllvmpowerpccodegen_la_SOURCES = \
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCBranchSelector.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCHazardRecognizers.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCISelLowering.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCInstrInfo.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCJITInfo.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCMCAsmInfo.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCPredicates.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCSubtarget.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCTargetMachine.cpp\
- at BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp
-
- at BUILD_ARM_TRUE@libllvmarmcodegen_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_builddir) -I$(top_srcdir)/llvm/lib/Target/ARM
- at BUILD_ARM_TRUE@libllvmarmcodegen_la_SOURCES = \
- at BUILD_ARM_TRUE@	llvm/lib/CodeGen/IfConversion.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMCodeEmitter.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMConstantIslandPass.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMConstantPoolValue.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMISelLowering.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMInstrInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMJITInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMMCAsmInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMRegisterInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMSubtarget.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/ARMTargetMachine.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/NEONMoveFix.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/NEONPreAllocPass.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/Thumb1InstrInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/Thumb1RegisterInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/Thumb2ITBlockPass.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/Thumb2InstrInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/Thumb2RegisterInfo.cpp\
- at BUILD_ARM_TRUE@	llvm/lib/Target/ARM/Thumb2SizeReduction.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at TBLGEN_FLAGS_ARM = $(TBLGEN_FLAGS) -I$(top_srcdir)/llvm/lib/Target/ARM
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at libllvmx86codegen_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_builddir) -I$(top_srcdir)/llvm/lib/Target/X86
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE at libllvmx86codegen_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/MC/MCAsmInfoCOFF.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/MC/MCCodeEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/MC/TargetAsmBackend.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/TargetELFWriterInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/TargetInfo/X86TargetInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86AsmBackend.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86COFFMachineModuleInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86CodeEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86ELFWriterInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86FastISel.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86FloatingPoint.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86FloatingPointRegKill.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86ISelDAGToDAG.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86ISelLowering.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86InstrInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86JITInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86MCAsmInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86MCCodeEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86MCTargetExpr.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86RegisterInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86Subtarget.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86TargetMachine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_X86_TRUE@	llvm/lib/Target/X86/X86TargetObjectFile.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at libllvmpowerpccodegen_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_builddir) -I$(top_srcdir)/llvm/lib/Target/PowerPC
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE at libllvmpowerpccodegen_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCBranchSelector.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCCodeEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCHazardRecognizers.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCISelLowering.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCInstrInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCJITInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCMCAsmInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCPredicates.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCRegisterInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCSubtarget.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/PPCTargetMachine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@@BUILD_PPC_TRUE@	llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp
+
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at libllvmarmcodegen_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_builddir) -I$(top_srcdir)/llvm/lib/Target/ARM
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE at libllvmarmcodegen_la_SOURCES = \
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/IfConversion.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMBaseInstrInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMBaseRegisterInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMCodeEmitter.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMConstantIslandPass.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMConstantPoolValue.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMExpandPseudoInsts.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMISelDAGToDAG.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMISelLowering.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMInstrInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMJITInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMLoadStoreOptimizer.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMMCAsmInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMRegisterInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMSubtarget.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/ARMTargetMachine.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/NEONMoveFix.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/NEONPreAllocPass.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/TargetInfo/ARMTargetInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/Thumb1InstrInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/Thumb1RegisterInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/Thumb2ITBlockPass.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/Thumb2InstrInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/Thumb2RegisterInfo.cpp\
+ at BUILD_ARM_TRUE@@BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/ARM/Thumb2SizeReduction.cpp
 
 
 # End of Targets
-libllvmjit_la_SOURCES = \
-	llvm/lib/Analysis/IPA/CallGraph.cpp\
-	llvm/lib/Analysis/AliasAnalysis.cpp\
-	llvm/lib/Analysis/BasicAliasAnalysis.cpp\
-	llvm/lib/Analysis/CaptureTracking.cpp\
-	llvm/lib/Analysis/DebugInfo.cpp\
-	llvm/lib/Analysis/MemoryBuiltins.cpp\
-	llvm/lib/Analysis/PointerTracking.cpp\
-	llvm/lib/Analysis/ValueTracking.cpp\
-	llvm/lib/CodeGen/ELFCodeEmitter.cpp\
-	llvm/lib/CodeGen/ELFWriter.cpp\
-	llvm/lib/CodeGen/MachineBasicBlock.cpp\
-	llvm/lib/CodeGen/MachineFunction.cpp\
-	llvm/lib/CodeGen/MachineFunctionAnalysis.cpp\
-	llvm/lib/CodeGen/MachineFunctionPass.cpp\
-	llvm/lib/CodeGen/MachineInstr.cpp\
-	llvm/lib/CodeGen/MachineModuleInfo.cpp\
-	llvm/lib/CodeGen/MachineRegisterInfo.cpp\
-	llvm/lib/CodeGen/ObjectCodeEmitter.cpp\
-	llvm/lib/CodeGen/PseudoSourceValue.cpp\
-	llvm/lib/CodeGen/TargetInstrInfoImpl.cpp\
-	llvm/lib/ExecutionEngine/ExecutionEngine.cpp\
-	llvm/lib/ExecutionEngine/JIT/Intercept.cpp\
-	llvm/lib/ExecutionEngine/JIT/JIT.cpp\
-	llvm/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp\
-	llvm/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp\
-	llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp\
-	llvm/lib/ExecutionEngine/JIT/JITMemoryManager.cpp\
-	llvm/lib/ExecutionEngine/JIT/OProfileJITEventListener.cpp\
-	llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp\
-	llvm/lib/MC/MCAsmInfo.cpp\
-	llvm/lib/MC/MCContext.cpp\
-	llvm/lib/MC/MCExpr.cpp\
-	llvm/lib/MC/MCSection.cpp\
-	llvm/lib/MC/MCSectionELF.cpp\
-	llvm/lib/MC/MCSymbol.cpp\
-	llvm/lib/Support/APFloat.cpp\
-	llvm/lib/Support/APInt.cpp\
-	llvm/lib/Support/Allocator.cpp\
-	llvm/lib/Support/CommandLine.cpp\
-	llvm/lib/Support/ConstantRange.cpp\
-	llvm/lib/Support/Debug.cpp\
-	llvm/lib/Support/Dwarf.cpp\
-	llvm/lib/Support/ErrorHandling.cpp\
-	llvm/lib/Support/FoldingSet.cpp\
-	llvm/lib/Support/FormattedStream.cpp\
-	llvm/lib/Support/GraphWriter.cpp\
-	llvm/lib/Support/ManagedStatic.cpp\
-	llvm/lib/Support/MemoryBuffer.cpp\
-	llvm/lib/Support/PrettyStackTrace.cpp\
-	llvm/lib/Support/SmallPtrSet.cpp\
-	llvm/lib/Support/SmallVector.cpp\
-	llvm/lib/Support/SourceMgr.cpp\
-	llvm/lib/Support/Statistic.cpp\
-	llvm/lib/Support/StringExtras.cpp\
-	llvm/lib/Support/StringMap.cpp\
-	llvm/lib/Support/StringPool.cpp\
-	llvm/lib/Support/StringRef.cpp\
-	llvm/lib/Support/TargetRegistry.cpp\
-	llvm/lib/Support/Timer.cpp\
-	llvm/lib/Support/Triple.cpp\
-	llvm/lib/Support/Twine.cpp\
-	llvm/lib/Support/circular_raw_ostream.cpp\
-	llvm/lib/Support/raw_ostream.cpp\
-	llvm/lib/Target/Mangler.cpp\
-	llvm/lib/Target/SubtargetFeature.cpp\
-	llvm/lib/Target/TargetData.cpp\
-	llvm/lib/Target/TargetInstrInfo.cpp\
-	llvm/lib/Target/TargetLoweringObjectFile.cpp\
-	llvm/lib/Target/TargetMachine.cpp\
-	llvm/lib/Target/TargetRegisterInfo.cpp\
-	llvm/lib/Transforms/Scalar/DCE.cpp\
-	llvm/lib/VMCore/AsmWriter.cpp\
-	llvm/lib/VMCore/Attributes.cpp\
-	llvm/lib/VMCore/AutoUpgrade.cpp\
-	llvm/lib/VMCore/BasicBlock.cpp\
-	llvm/lib/VMCore/ConstantFold.cpp\
-	llvm/lib/VMCore/Constants.cpp\
-	llvm/lib/VMCore/Core.cpp\
-	llvm/lib/VMCore/Dominators.cpp\
-	llvm/lib/VMCore/Function.cpp\
-	llvm/lib/VMCore/GVMaterializer.cpp\
-	llvm/lib/VMCore/Globals.cpp\
-	llvm/lib/VMCore/IRBuilder.cpp\
-	llvm/lib/VMCore/InlineAsm.cpp\
-	llvm/lib/VMCore/Instruction.cpp\
-	llvm/lib/VMCore/Instructions.cpp\
-	llvm/lib/VMCore/IntrinsicInst.cpp\
-	llvm/lib/VMCore/LLVMContext.cpp\
-	llvm/lib/VMCore/LLVMContextImpl.cpp\
-	llvm/lib/VMCore/LeakDetector.cpp\
-	llvm/lib/VMCore/Metadata.cpp\
-	llvm/lib/VMCore/Module.cpp\
-	llvm/lib/VMCore/Pass.cpp\
-	llvm/lib/VMCore/PassManager.cpp\
-	llvm/lib/VMCore/PrintModulePass.cpp\
-	llvm/lib/VMCore/Type.cpp\
-	llvm/lib/VMCore/TypeSymbolTable.cpp\
-	llvm/lib/VMCore/Use.cpp\
-	llvm/lib/VMCore/Value.cpp\
-	llvm/lib/VMCore/ValueSymbolTable.cpp\
-	llvm/lib/VMCore/ValueTypes.cpp\
-	llvm/lib/VMCore/Verifier.cpp
-
-libllvmcodegen_la_SOURCES = \
-	llvm/lib/Analysis/AliasSetTracker.cpp\
-	llvm/lib/Analysis/ConstantFolding.cpp\
-	llvm/lib/Analysis/IVUsers.cpp\
-	llvm/lib/Analysis/InstructionSimplify.cpp\
-	llvm/lib/Analysis/LoopInfo.cpp\
-	llvm/lib/Analysis/LoopPass.cpp\
-	llvm/lib/Analysis/MemoryDependenceAnalysis.cpp\
-	llvm/lib/Analysis/PHITransAddr.cpp\
-	llvm/lib/Analysis/ProfileInfo.cpp\
-	llvm/lib/Analysis/ScalarEvolution.cpp\
-	llvm/lib/Analysis/ScalarEvolutionExpander.cpp\
-	llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp\
-	llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp\
-	llvm/lib/CodeGen/AsmPrinter/DIE.cpp\
-	llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp\
-	llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp\
-	llvm/lib/CodeGen/AsmPrinter/DwarfLabel.cpp\
-	llvm/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp\
-	llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp\
-	llvm/lib/CodeGen/BranchFolding.cpp\
-	llvm/lib/CodeGen/CalcSpillWeights.cpp\
-	llvm/lib/CodeGen/CodePlacementOpt.cpp\
-	llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp\
-	llvm/lib/CodeGen/DeadMachineInstructionElim.cpp\
-	llvm/lib/CodeGen/DwarfEHPrepare.cpp\
-	llvm/lib/CodeGen/ExactHazardRecognizer.cpp\
-	llvm/lib/CodeGen/GCMetadata.cpp\
-	llvm/lib/CodeGen/GCStrategy.cpp\
-	llvm/lib/CodeGen/LLVMTargetMachine.cpp\
-	llvm/lib/CodeGen/LatencyPriorityQueue.cpp\
-	llvm/lib/CodeGen/LiveInterval.cpp\
-	llvm/lib/CodeGen/LiveIntervalAnalysis.cpp\
-	llvm/lib/CodeGen/LiveStackAnalysis.cpp\
-	llvm/lib/CodeGen/LiveVariables.cpp\
-	llvm/lib/CodeGen/LowerSubregs.cpp\
-	llvm/lib/CodeGen/MachineCSE.cpp\
-	llvm/lib/CodeGen/MachineDominators.cpp\
-	llvm/lib/CodeGen/MachineLICM.cpp\
-	llvm/lib/CodeGen/MachineLoopInfo.cpp\
-	llvm/lib/CodeGen/MachineModuleInfoImpls.cpp\
-	llvm/lib/CodeGen/MachinePassRegistry.cpp\
-	llvm/lib/CodeGen/MachineSSAUpdater.cpp\
-	llvm/lib/CodeGen/MachineSink.cpp\
-	llvm/lib/CodeGen/MachineVerifier.cpp\
-	llvm/lib/CodeGen/OptimizeExts.cpp\
-	llvm/lib/CodeGen/OptimizePHIs.cpp\
-	llvm/lib/CodeGen/PHIElimination.cpp\
-	llvm/lib/CodeGen/Passes.cpp\
-	llvm/lib/CodeGen/PostRASchedulerList.cpp\
-	llvm/lib/CodeGen/PreAllocSplitting.cpp\
-	llvm/lib/CodeGen/ProcessImplicitDefs.cpp\
-	llvm/lib/CodeGen/PrologEpilogInserter.cpp\
-	llvm/lib/CodeGen/RegAllocLinearScan.cpp\
-	llvm/lib/CodeGen/RegisterCoalescer.cpp\
-	llvm/lib/CodeGen/RegisterScavenging.cpp\
-	llvm/lib/CodeGen/ScheduleDAG.cpp\
-	llvm/lib/CodeGen/ScheduleDAGEmit.cpp\
-	llvm/lib/CodeGen/ScheduleDAGInstrs.cpp\
-	llvm/lib/CodeGen/ScheduleDAGPrinter.cpp\
-	llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp\
-	llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp\
-	llvm/lib/CodeGen/SelectionDAG/FastISel.cpp\
-	llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp\
-	llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp\
-	llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp\
-	llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp\
-	llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp\
-	llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp\
-	llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp\
-	llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp\
-	llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp\
-	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp\
-	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp\
-	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp\
-	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp\
-	llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp\
-	llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp\
-	llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp\
-	llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp\
-	llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp\
-	llvm/lib/CodeGen/ShrinkWrapping.cpp\
-	llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp\
-	llvm/lib/CodeGen/SjLjEHPrepare.cpp\
-	llvm/lib/CodeGen/SlotIndexes.cpp\
-	llvm/lib/CodeGen/Spiller.cpp\
-	llvm/lib/CodeGen/StackProtector.cpp\
-	llvm/lib/CodeGen/StackSlotColoring.cpp\
-	llvm/lib/CodeGen/StrongPHIElimination.cpp\
-	llvm/lib/CodeGen/TailDuplication.cpp\
-	llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp\
-	llvm/lib/CodeGen/TwoAddressInstructionPass.cpp\
-	llvm/lib/CodeGen/UnreachableBlockElim.cpp\
-	llvm/lib/CodeGen/VirtRegMap.cpp\
-	llvm/lib/CodeGen/VirtRegRewriter.cpp\
-	llvm/lib/MC/MCAsmInfoDarwin.cpp\
-	llvm/lib/MC/MCAsmStreamer.cpp\
-	llvm/lib/MC/MCAssembler.cpp\
-	llvm/lib/MC/MCInst.cpp\
-	llvm/lib/MC/MCMachOStreamer.cpp\
-	llvm/lib/MC/MCNullStreamer.cpp\
-	llvm/lib/MC/MCSectionMachO.cpp\
-	llvm/lib/MC/MCStreamer.cpp\
-	llvm/lib/Target/TargetFrameInfo.cpp\
-	llvm/lib/Target/TargetSubtarget.cpp\
-	llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp\
-	llvm/lib/Transforms/Scalar/GEPSplitter.cpp\
-	llvm/lib/Transforms/Scalar/GVN.cpp\
-	llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp\
-	llvm/lib/Transforms/Utils/AddrModeMatcher.cpp\
-	llvm/lib/Transforms/Utils/BasicBlockUtils.cpp\
-	llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp\
-	llvm/lib/Transforms/Utils/DemoteRegToStack.cpp\
-	llvm/lib/Transforms/Utils/LCSSA.cpp\
-	llvm/lib/Transforms/Utils/Local.cpp\
-	llvm/lib/Transforms/Utils/LoopSimplify.cpp\
-	llvm/lib/Transforms/Utils/LowerInvoke.cpp\
-	llvm/lib/Transforms/Utils/LowerSwitch.cpp\
-	llvm/lib/Transforms/Utils/Mem2Reg.cpp\
-	llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp\
-	llvm/lib/Transforms/Utils/SSAUpdater.cpp\
-	llvm/lib/Transforms/Utils/SimplifyCFG.cpp\
-	llvm/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmjit_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/IPA/CallGraph.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/AliasAnalysis.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/BasicAliasAnalysis.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/CaptureTracking.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/DebugInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/MemoryBuiltins.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/PointerTracking.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/ValueTracking.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ELFCodeEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ELFWriter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineBasicBlock.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineFunction.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineFunctionAnalysis.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineFunctionPass.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineInstr.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineModuleInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineRegisterInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ObjectCodeEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/PseudoSourceValue.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/TargetInstrInfoImpl.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/ExecutionEngine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/JIT/Intercept.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/JIT/JIT.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/JIT/JITDebugRegisterer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/JIT/JITDwarfEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/JIT/JITEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/JIT/JITMemoryManager.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/JIT/OProfileJITEventListener.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/JIT/TargetSelect.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCAsmInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCContext.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCExpr.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCSection.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCSectionELF.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCSymbol.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/APFloat.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/APInt.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Allocator.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/CommandLine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/ConstantRange.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Debug.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Dwarf.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/ErrorHandling.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/FoldingSet.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/FormattedStream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/GraphWriter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/ManagedStatic.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/MemoryBuffer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/PrettyStackTrace.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SmallPtrSet.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SmallVector.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/SourceMgr.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Statistic.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/StringExtras.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/StringMap.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/StringPool.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/StringRef.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/TargetRegistry.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Timer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Triple.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/Twine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/circular_raw_ostream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Support/raw_ostream.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/Mangler.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/SubtargetFeature.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetData.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetInstrInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetLoweringObjectFile.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetMachine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetRegisterInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Scalar/ADCE.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Scalar/DCE.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Scalar/SCCP.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/IPO/ConstantMerge.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/IPO/GlobalOpt.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/IPO/GlobalDCE.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/AsmWriter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Attributes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/AutoUpgrade.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/BasicBlock.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/ConstantFold.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Constants.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Core.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Dominators.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Function.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/GVMaterializer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Globals.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/IRBuilder.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/InlineAsm.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Instruction.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Instructions.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/IntrinsicInst.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/LLVMContext.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/LLVMContextImpl.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/LeakDetector.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Metadata.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Module.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Pass.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/PassManager.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/PrintModulePass.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Type.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/TypeSymbolTable.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Use.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Value.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/ValueSymbolTable.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/ValueTypes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/VMCore/Verifier.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmcodegen_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/AliasSetTracker.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/ConstantFolding.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/IVUsers.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/InstructionSimplify.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/LoopInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/LoopPass.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/MemoryDependenceAnalysis.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/PHITransAddr.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/ProfileInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/ScalarEvolution.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Analysis/ScalarEvolutionExpander.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/AggressiveAntiDepBreaker.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/AsmPrinter/DIE.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/AsmPrinter/DwarfDebug.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/AsmPrinter/DwarfException.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/AsmPrinter/DwarfLabel.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/AsmPrinter/DwarfPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/AsmPrinter/DwarfWriter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/BranchFolding.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/CalcSpillWeights.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/CodePlacementOpt.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/CriticalAntiDepBreaker.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/DeadMachineInstructionElim.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/DwarfEHPrepare.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ExactHazardRecognizer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/GCMetadata.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/GCStrategy.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/LLVMTargetMachine.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/LatencyPriorityQueue.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/LiveInterval.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/LiveIntervalAnalysis.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/LiveStackAnalysis.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/LiveVariables.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/LowerSubregs.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineCSE.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineDominators.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineLICM.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineLoopInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineModuleInfoImpls.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachinePassRegistry.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineSSAUpdater.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineSink.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/MachineVerifier.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/OptimizeExts.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/OptimizePHIs.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/PHIElimination.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/Passes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/PostRASchedulerList.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/PreAllocSplitting.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ProcessImplicitDefs.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/PrologEpilogInserter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/RegAllocLinearScan.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/RegisterCoalescer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/RegisterScavenging.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ScheduleDAG.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ScheduleDAGEmit.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ScheduleDAGInstrs.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ScheduleDAGPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/CallingConvLower.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/FastISel.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/FunctionLoweringInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/InstrEmitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/LegalizeFloatTypes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/LegalizeIntegerTypes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/LegalizeVectorOps.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGFast.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGList.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/ScheduleDAGSDNodes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/SelectionDAGBuilder.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/SelectionDAGPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SelectionDAG/TargetLowering.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ShrinkWrapping.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SimpleRegisterCoalescing.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SjLjEHPrepare.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/SlotIndexes.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/Spiller.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/StackProtector.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/StackSlotColoring.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/StrongPHIElimination.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/TailDuplication.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/TargetLoweringObjectFileImpl.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/TwoAddressInstructionPass.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/UnreachableBlockElim.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/VirtRegMap.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/VirtRegRewriter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCAsmInfoDarwin.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCAsmStreamer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCAssembler.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCInst.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCMachOStreamer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCNullStreamer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCSectionMachO.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/MC/MCStreamer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetFrameInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetSubtarget.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Scalar/CodeGenPrepare.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Scalar/GEPSplitter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Scalar/GVN.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/AddrModeMatcher.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/BasicBlockUtils.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/BreakCriticalEdges.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/DemoteRegToStack.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/LCSSA.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/Local.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/LoopSimplify.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/LowerInvoke.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/LowerSwitch.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/Mem2Reg.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/SSAUpdater.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/SimplifyCFG.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Transforms/Utils/UnifyFunctionExitNodes.cpp
 
 
 # Used only by make check
-libllvmbitreader_la_SOURCES = \
- llvm/lib/Bitcode/Reader/BitReader.cpp\
- llvm/lib/Bitcode/Reader/BitcodeReader.cpp
-
-libllvmbitwriter_la_SOURCES = \
- llvm/lib/Bitcode/Writer/BitWriter.cpp\
- llvm/lib/Bitcode/Writer/BitcodeWriter.cpp\
- llvm/lib/Bitcode/Writer/BitcodeWriterPass.cpp\
- llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
-
-libllvmasmparser_la_SOURCES = \
- llvm/lib/AsmParser/LLLexer.cpp\
- llvm/lib/AsmParser/LLParser.cpp\
- llvm/lib/AsmParser/Parser.cpp
-
-libllvminterpreter_la_SOURCES = \
-    llvm/lib/ExecutionEngine/Interpreter/Execution.cpp\
-    llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp\
-    llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp
-
-libgoogletest_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
-libgoogletest_la_CXXFLAGS = $(unittest_CXXFLAGS)
-libgoogletest_la_SOURCES = \
-    llvm/utils/unittest/googletest/gtest-death-test.cc\
-    llvm/utils/unittest/googletest/gtest-filepath.cc\
-    llvm/utils/unittest/googletest/gtest-port.cc\
-    llvm/utils/unittest/googletest/gtest-test-part.cc\
-    llvm/utils/unittest/googletest/gtest-typed-test.cc\
-    llvm/utils/unittest/googletest/gtest.cc\
-    llvm/utils/unittest/UnitTestMain/TestMain.cpp
-
-llvmunittest_ADT_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
-llvmunittest_ADT_CXXFLAGS = $(unittest_CXXFLAGS)
-llvmunittest_ADT_LDADD = libgoogletest.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
-llvmunittest_ADT_SOURCES = \
-    llvm/unittests/ADT/APFloatTest.cpp\
-    llvm/unittests/ADT/APIntTest.cpp\
-    llvm/unittests/ADT/DenseMapTest.cpp\
-    llvm/unittests/ADT/DenseSetTest.cpp\
-    llvm/unittests/ADT/ImmutableSetTest.cpp\
-    llvm/unittests/ADT/SmallStringTest.cpp\
-    llvm/unittests/ADT/SmallVectorTest.cpp\
-    llvm/unittests/ADT/SparseBitVectorTest.cpp\
-    llvm/unittests/ADT/StringMapTest.cpp\
-    llvm/unittests/ADT/StringRefTest.cpp\
-    llvm/unittests/ADT/TripleTest.cpp\
-    llvm/unittests/ADT/TwineTest.cpp
-
-llvmunittest_Support_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
-llvmunittest_Support_CXXFLAGS = $(unittest_CXXFLAGS)
-llvmunittest_Support_LDADD = libgoogletest.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
-llvmunittest_Support_SOURCES = \
-    llvm/unittests/Support/AllocatorTest.cpp\
-    llvm/unittests/Support/ConstantRangeTest.cpp\
-    llvm/unittests/Support/MathExtrasTest.cpp\
-    llvm/unittests/Support/RegexTest.cpp\
-    llvm/unittests/Support/TypeBuilderTest.cpp\
-    llvm/unittests/Support/ValueHandleTest.cpp\
-    llvm/unittests/Support/raw_ostream_test.cpp
-
-llvmunittest_VMCore_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
-llvmunittest_VMCore_CXXFLAGS = $(unittest_CXXFLAGS)
-llvmunittest_VMCore_LDADD = libgoogletest.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
-llvmunittest_VMCore_SOURCES = \
-    llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp\
-    llvm/lib/Analysis/LoopInfo.cpp\
-    llvm/lib/Analysis/LoopPass.cpp\
-    llvm/unittests/VMCore/ConstantsTest.cpp\
-    llvm/unittests/VMCore/MetadataTest.cpp\
-    llvm/unittests/VMCore/PassManagerTest.cpp
-
-llvmunittest_JIT_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
-llvmunittest_JIT_CXXFLAGS = $(unittest_CXXFLAGS)
-llvmunittest_JIT_LDADD = libgoogletest.la libllvmasmparser.la $(lli_LDADD)
-llvmunittest_JIT_SOURCES = \
-    llvm/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp\
-    llvm/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp\
-    llvm/unittests/ExecutionEngine/JIT/JITTest.cpp
-
-llvmunittest_ExecutionEngine_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
-llvmunittest_ExecutionEngine_CXXFLAGS = $(unittest_CXXFLAGS)
-llvmunittest_ExecutionEngine_LDADD = libgoogletest.la libllvminterpreter.la libllvmsupport_nodups.la $(libclamavcxx_la_LIBADD) libllvmsystem.la
-llvmunittest_ExecutionEngine_SOURCES = \
-    llvm/lib/CodeGen/IntrinsicLowering.cpp\
-    llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp
-
-count_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
-count_SOURCES = llvm/utils/count/count.c
-count_LDADD = libllvmsystem.la
-not_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
-not_CXXFLAGS = $(LLVM_CXXFLAGS)
-not_SOURCES = llvm/utils/not/not.cpp
-not_LDADD = libllvmsystem.la
-FileCheck_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
-FileCheck_CXXFLAGS = $(LLVM_CXXFLAGS)
-FileCheck_LDADD = libllvmsupport.la libllvmsystem.la
-FileCheck_SOURCES = llvm/utils/FileCheck/FileCheck.cpp
-check_LTLIBRARIES = libllvmbitreader.la libllvmsupport_nodups.la libllvmsupport.la libllvmfullcodegen.la libllvmasmprinter.la libllvmbitwriter.la libllvmasmparser.la libgoogletest.la libllvminterpreter.la
-check_SCRIPTS = llvmcheck.sh
-TESTS_ENVIRONMENT = export GMAKE=@GMAKE@;
-libllvmasmprinter_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/lib/Target/X86 \
-			      -I$(top_srcdir)/llvm/lib/Target/PowerPC -I$(top_srcdir)/llvm/lib/Target/ARM
-
-libllvmasmprinter_la_SOURCES =  \
-	llvm/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp \
-	llvm/lib/CodeGen/ELFCodeEmitter.cpp \
-	llvm/lib/CodeGen/ELFWriter.cpp $(am__append_14) \
-	$(am__append_15) $(am__append_16)
-libllvmfullcodegen_la_SOURCES = \
-	llvm/lib/CodeGen/GCMetadataPrinter.cpp\
-	llvm/lib/CodeGen/IfConversion.cpp\
-	llvm/lib/CodeGen/IntrinsicLowering.cpp\
-	llvm/lib/CodeGen/OcamlGC.cpp\
-	llvm/lib/CodeGen/RegAllocLocal.cpp\
-	llvm/lib/CodeGen/RegAllocPBQP.cpp\
-	llvm/lib/CodeGen/ShadowStackGC.cpp\
-	llvm/lib/ExecutionEngine/Interpreter/Execution.cpp\
-	llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp\
-	llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp\
-	llvm/lib/Target/Target.cpp\
-	llvm/lib/Target/TargetAsmLexer.cpp\
-	llvm/lib/Target/TargetELFWriterInfo.cpp\
-	llvm/lib/Target/TargetIntrinsicInfo.cpp
-
-lli_SOURCES = \
-    llvm/tools/lli/lli.cpp
-
-llc_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
-llc_CXXFLAGS = $(LLVM_CXXFLAGS)
-llc_LDADD = libllvmbitreader.la libllvmasmprinter.la libllvmasmparser.la $(lli_LDADD)
-llc_SOURCES = \
-    llvm/lib/MC/MCInstPrinter.cpp\
-    llvm/tools/llc/llc.cpp
-
-llvm_as_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
-llvm_as_CXXFLAGS = $(LLVM_CXXFLAGS)
-llvm_as_LDADD = libllvmasmparser.la libllvmbitwriter.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
-llvm_as_SOURCES = \
-    llvm/tools/llvm-as/llvm-as.cpp
-
-llvm_dis_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
-llvm_dis_CXXFLAGS = $(LLVM_CXXFLAGS)
-llvm_dis_LDADD = libllvmasmparser.la libllvmbitreader.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
-llvm_dis_SOURCES = \
-    llvm/tools/llvm-dis/llvm-dis.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmbitreader_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@ llvm/lib/Bitcode/Reader/BitReader.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@ llvm/lib/Bitcode/Reader/BitcodeReader.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmbitwriter_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@ llvm/lib/Bitcode/Writer/BitWriter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@ llvm/lib/Bitcode/Writer/BitcodeWriter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@ llvm/lib/Bitcode/Writer/BitcodeWriterPass.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@ llvm/lib/Bitcode/Writer/ValueEnumerator.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmasmparser_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@ llvm/lib/AsmParser/LLLexer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@ llvm/lib/AsmParser/LLParser.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@ llvm/lib/AsmParser/Parser.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvminterpreter_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/ExecutionEngine/Interpreter/Execution.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@libgoogletest_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
+ at BUILD_EXTERNAL_LLVM_FALSE@libgoogletest_la_CXXFLAGS = $(unittest_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@libgoogletest_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/utils/unittest/googletest/gtest-death-test.cc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/utils/unittest/googletest/gtest-filepath.cc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/utils/unittest/googletest/gtest-port.cc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/utils/unittest/googletest/gtest-test-part.cc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/utils/unittest/googletest/gtest-typed-test.cc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/utils/unittest/googletest/gtest.cc\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/utils/unittest/UnitTestMain/TestMain.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ADT_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ADT_CXXFLAGS = $(unittest_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ADT_LDADD = libgoogletest.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ADT_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/APFloatTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/APIntTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/DenseMapTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/DenseSetTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/ImmutableSetTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/SmallStringTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/SmallVectorTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/SparseBitVectorTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/StringMapTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/StringRefTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/TripleTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ADT/TwineTest.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_Support_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_Support_CXXFLAGS = $(unittest_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_Support_LDADD = libgoogletest.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_Support_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/Support/AllocatorTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/Support/ConstantRangeTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/Support/MathExtrasTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/Support/RegexTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/Support/TypeBuilderTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/Support/ValueHandleTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/Support/raw_ostream_test.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_VMCore_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_VMCore_CXXFLAGS = $(unittest_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_VMCore_LDADD = libgoogletest.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_VMCore_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/Analysis/IPA/CallGraphSCCPass.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/Analysis/LoopInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/Analysis/LoopPass.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/VMCore/ConstantsTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/VMCore/MetadataTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/VMCore/PassManagerTest.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_JIT_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_JIT_CXXFLAGS = $(unittest_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_JIT_LDADD = libgoogletest.la libllvmasmparser.la $(lli_LDADD)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_JIT_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ExecutionEngine/JIT/JITEventListenerTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ExecutionEngine/JIT/JITMemoryManagerTest.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ExecutionEngine/JIT/JITTest.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ExecutionEngine_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/utils/unittest/googletest/include
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ExecutionEngine_CXXFLAGS = $(unittest_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ExecutionEngine_LDADD = libgoogletest.la libllvminterpreter.la libllvmsupport_nodups.la $(libclamavcxx_la_LIBADD) libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvmunittest_ExecutionEngine_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/CodeGen/IntrinsicLowering.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/unittests/ExecutionEngine/ExecutionEngineTest.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@count_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
+ at BUILD_EXTERNAL_LLVM_FALSE@count_SOURCES = llvm/utils/count/count.c
+ at BUILD_EXTERNAL_LLVM_FALSE@count_LDADD = libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@not_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
+ at BUILD_EXTERNAL_LLVM_FALSE@not_CXXFLAGS = $(LLVM_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@not_SOURCES = llvm/utils/not/not.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@not_LDADD = libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@FileCheck_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
+ at BUILD_EXTERNAL_LLVM_FALSE@FileCheck_CXXFLAGS = $(LLVM_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@FileCheck_LDADD = libllvmsupport.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@FileCheck_SOURCES = llvm/utils/FileCheck/FileCheck.cpp
+ at BUILD_EXTERNAL_LLVM_FALSE@check_LTLIBRARIES = libllvmbitreader.la libllvmsupport_nodups.la libllvmsupport.la libllvmfullcodegen.la libllvmasmprinter.la libllvmbitwriter.la libllvmasmparser.la libgoogletest.la libllvminterpreter.la
+ at BUILD_EXTERNAL_LLVM_FALSE@check_SCRIPTS = llvmcheck.sh
+ at BUILD_EXTERNAL_LLVM_FALSE@TESTS_ENVIRONMENT = export GMAKE=@GMAKE@;
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmasmprinter_la_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS) -I$(top_srcdir)/llvm/lib/Target/X86 \
+ at BUILD_EXTERNAL_LLVM_FALSE@			      -I$(top_srcdir)/llvm/lib/Target/PowerPC -I$(top_srcdir)/llvm/lib/Target/ARM
+
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmasmprinter_la_SOURCES = llvm/lib/CodeGen/AsmPrinter/OcamlGCPrinter.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ELFCodeEmitter.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ELFWriter.cpp \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_15) $(am__append_16) \
+ at BUILD_EXTERNAL_LLVM_FALSE@	$(am__append_17)
+ at BUILD_EXTERNAL_LLVM_FALSE@libllvmfullcodegen_la_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/GCMetadataPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/IfConversion.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/IntrinsicLowering.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/OcamlGC.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/RegAllocLocal.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/RegAllocPBQP.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/CodeGen/ShadowStackGC.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/Interpreter/Execution.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/Interpreter/ExternalFunctions.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/ExecutionEngine/Interpreter/Interpreter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/Target.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetAsmLexer.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetELFWriterInfo.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@	llvm/lib/Target/TargetIntrinsicInfo.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@lli_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/tools/lli/lli.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@llc_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llc_CXXFLAGS = $(LLVM_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llc_LDADD = libllvmbitreader.la libllvmasmprinter.la libllvmasmparser.la $(lli_LDADD)
+ at BUILD_EXTERNAL_LLVM_FALSE@llc_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/lib/MC/MCInstPrinter.cpp\
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/tools/llc/llc.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_as_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_as_CXXFLAGS = $(LLVM_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_as_LDADD = libllvmasmparser.la libllvmbitwriter.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_as_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/tools/llvm-as/llvm-as.cpp
+
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_dis_CPPFLAGS = $(LLVM_INCLUDES) $(LLVM_DEFS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_dis_CXXFLAGS = $(LLVM_CXXFLAGS)
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_dis_LDADD = libllvmasmparser.la libllvmbitreader.la libllvmsupport_nodups.la libllvmjit.la libllvmsystem.la
+ at BUILD_EXTERNAL_LLVM_FALSE@llvm_dis_SOURCES = \
+ at BUILD_EXTERNAL_LLVM_FALSE@    llvm/tools/llvm-dis/llvm-dis.cpp
 
 all: $(BUILT_SOURCES) clamavcxx-config.h
 	$(MAKE) $(AM_MAKEFLAGS) all-am
@@ -1714,35 +2227,35 @@ clean-noinstLTLIBRARIES:
 	  rm -f "$${dir}/so_locations"; \
 	done
 libclamavcxx.la: $(libclamavcxx_la_OBJECTS) $(libclamavcxx_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libclamavcxx_la_LINK)  $(libclamavcxx_la_OBJECTS) $(libclamavcxx_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libclamavcxx_la_LINK) $(am_libclamavcxx_la_rpath) $(libclamavcxx_la_OBJECTS) $(libclamavcxx_la_LIBADD) $(LIBS)
 libgoogletest.la: $(libgoogletest_la_OBJECTS) $(libgoogletest_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libgoogletest_la_LINK)  $(libgoogletest_la_OBJECTS) $(libgoogletest_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libgoogletest_la_LINK) $(am_libgoogletest_la_rpath) $(libgoogletest_la_OBJECTS) $(libgoogletest_la_LIBADD) $(LIBS)
 libllvmarmcodegen.la: $(libllvmarmcodegen_la_OBJECTS) $(libllvmarmcodegen_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmarmcodegen_la_rpath) $(libllvmarmcodegen_la_OBJECTS) $(libllvmarmcodegen_la_LIBADD) $(LIBS)
 libllvmasmparser.la: $(libllvmasmparser_la_OBJECTS) $(libllvmasmparser_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvmasmparser_la_OBJECTS) $(libllvmasmparser_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmasmparser_la_rpath) $(libllvmasmparser_la_OBJECTS) $(libllvmasmparser_la_LIBADD) $(LIBS)
 libllvmasmprinter.la: $(libllvmasmprinter_la_OBJECTS) $(libllvmasmprinter_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvmasmprinter_la_OBJECTS) $(libllvmasmprinter_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmasmprinter_la_rpath) $(libllvmasmprinter_la_OBJECTS) $(libllvmasmprinter_la_LIBADD) $(LIBS)
 libllvmbitreader.la: $(libllvmbitreader_la_OBJECTS) $(libllvmbitreader_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvmbitreader_la_OBJECTS) $(libllvmbitreader_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmbitreader_la_rpath) $(libllvmbitreader_la_OBJECTS) $(libllvmbitreader_la_LIBADD) $(LIBS)
 libllvmbitwriter.la: $(libllvmbitwriter_la_OBJECTS) $(libllvmbitwriter_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvmbitwriter_la_OBJECTS) $(libllvmbitwriter_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmbitwriter_la_rpath) $(libllvmbitwriter_la_OBJECTS) $(libllvmbitwriter_la_LIBADD) $(LIBS)
 libllvmcodegen.la: $(libllvmcodegen_la_OBJECTS) $(libllvmcodegen_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvmcodegen_la_OBJECTS) $(libllvmcodegen_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmcodegen_la_rpath) $(libllvmcodegen_la_OBJECTS) $(libllvmcodegen_la_LIBADD) $(LIBS)
 libllvmfullcodegen.la: $(libllvmfullcodegen_la_OBJECTS) $(libllvmfullcodegen_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvmfullcodegen_la_OBJECTS) $(libllvmfullcodegen_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmfullcodegen_la_rpath) $(libllvmfullcodegen_la_OBJECTS) $(libllvmfullcodegen_la_LIBADD) $(LIBS)
 libllvminterpreter.la: $(libllvminterpreter_la_OBJECTS) $(libllvminterpreter_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvminterpreter_la_OBJECTS) $(libllvminterpreter_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvminterpreter_la_rpath) $(libllvminterpreter_la_OBJECTS) $(libllvminterpreter_la_LIBADD) $(LIBS)
 libllvmjit.la: $(libllvmjit_la_OBJECTS) $(libllvmjit_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvmjit_la_OBJECTS) $(libllvmjit_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmjit_la_rpath) $(libllvmjit_la_OBJECTS) $(libllvmjit_la_LIBADD) $(LIBS)
 libllvmpowerpccodegen.la: $(libllvmpowerpccodegen_la_OBJECTS) $(libllvmpowerpccodegen_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmpowerpccodegen_la_rpath) $(libllvmpowerpccodegen_la_OBJECTS) $(libllvmpowerpccodegen_la_LIBADD) $(LIBS)
 libllvmsupport.la: $(libllvmsupport_la_OBJECTS) $(libllvmsupport_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvmsupport_la_OBJECTS) $(libllvmsupport_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmsupport_la_rpath) $(libllvmsupport_la_OBJECTS) $(libllvmsupport_la_LIBADD) $(LIBS)
 libllvmsupport_nodups.la: $(libllvmsupport_nodups_la_OBJECTS) $(libllvmsupport_nodups_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(CXXLINK)  $(libllvmsupport_nodups_la_OBJECTS) $(libllvmsupport_nodups_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmsupport_nodups_la_rpath) $(libllvmsupport_nodups_la_OBJECTS) $(libllvmsupport_nodups_la_LIBADD) $(LIBS)
 libllvmsystem.la: $(libllvmsystem_la_OBJECTS) $(libllvmsystem_la_DEPENDENCIES) 
-	$(AM_V_CXXLD)$(libllvmsystem_la_LINK)  $(libllvmsystem_la_OBJECTS) $(libllvmsystem_la_LIBADD) $(LIBS)
+	$(AM_V_CXXLD)$(libllvmsystem_la_LINK) $(am_libllvmsystem_la_rpath) $(libllvmsystem_la_OBJECTS) $(libllvmsystem_la_LIBADD) $(LIBS)
 libllvmx86codegen.la: $(libllvmx86codegen_la_OBJECTS) $(libllvmx86codegen_la_DEPENDENCIES) 
 	$(AM_V_CXXLD)$(CXXLINK) $(am_libllvmx86codegen_la_rpath) $(libllvmx86codegen_la_OBJECTS) $(libllvmx86codegen_la_LIBADD) $(LIBS)
 
@@ -1809,6 +2322,7 @@ mostlyclean-compile:
 distclean-compile:
 	-rm -f *.tab.c
 
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ADCE.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/APFloat.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/APInt.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/APSInt.Plo at am__quote@
@@ -1842,6 +2356,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/CommandLine.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ConstantFold.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ConstantFolding.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ConstantMerge.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ConstantRange.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Constants.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Core.Plo at am__quote@
@@ -1885,6 +2400,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GEPSplitter.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GVMaterializer.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GVN.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GlobalDCE.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GlobalOpt.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Globals.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/GraphWriter.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Host.Plo at am__quote@
@@ -2008,6 +2525,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Regex.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/RegisterCoalescer.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/RegisterScavenging.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SCCP.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SSAUpdater.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ScalarEvolution.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/ScalarEvolutionExpander.Plo at am__quote@
@@ -2028,6 +2546,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/Signals.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SimpleRegisterCoalescing.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SimplifyCFG.Plo at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SimplifyCFGPass.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SjLjEHPrepare.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SlotIndexes.Plo at am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SlowOperationInformer.Plo at am__quote@
@@ -4584,6 +5103,14 @@ TargetRegisterInfo.lo: llvm/lib/Target/TargetRegisterInfo.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o TargetRegisterInfo.lo `test -f 'llvm/lib/Target/TargetRegisterInfo.cpp' || echo '$(srcdir)/'`llvm/lib/Target/TargetRegisterInfo.cpp
 
+ADCE.lo: llvm/lib/Transforms/Scalar/ADCE.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ADCE.lo -MD -MP -MF $(DEPDIR)/ADCE.Tpo -c -o ADCE.lo `test -f 'llvm/lib/Transforms/Scalar/ADCE.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/Scalar/ADCE.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ADCE.Tpo $(DEPDIR)/ADCE.Plo
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='llvm/lib/Transforms/Scalar/ADCE.cpp' object='ADCE.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ADCE.lo `test -f 'llvm/lib/Transforms/Scalar/ADCE.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/Scalar/ADCE.cpp
+
 DCE.lo: llvm/lib/Transforms/Scalar/DCE.cpp
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT DCE.lo -MD -MP -MF $(DEPDIR)/DCE.Tpo -c -o DCE.lo `test -f 'llvm/lib/Transforms/Scalar/DCE.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/Scalar/DCE.cpp
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/DCE.Tpo $(DEPDIR)/DCE.Plo
@@ -4592,6 +5119,46 @@ DCE.lo: llvm/lib/Transforms/Scalar/DCE.cpp
 @AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o DCE.lo `test -f 'llvm/lib/Transforms/Scalar/DCE.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/Scalar/DCE.cpp
 
+SCCP.lo: llvm/lib/Transforms/Scalar/SCCP.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SCCP.lo -MD -MP -MF $(DEPDIR)/SCCP.Tpo -c -o SCCP.lo `test -f 'llvm/lib/Transforms/Scalar/SCCP.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/Scalar/SCCP.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/SCCP.Tpo $(DEPDIR)/SCCP.Plo
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='llvm/lib/Transforms/Scalar/SCCP.cpp' object='SCCP.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SCCP.lo `test -f 'llvm/lib/Transforms/Scalar/SCCP.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/Scalar/SCCP.cpp
+
+SimplifyCFGPass.lo: llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT SimplifyCFGPass.lo -MD -MP -MF $(DEPDIR)/SimplifyCFGPass.Tpo -c -o SimplifyCFGPass.lo `test -f 'llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/SimplifyCFGPass.Tpo $(DEPDIR)/SimplifyCFGPass.Plo
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp' object='SimplifyCFGPass.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o SimplifyCFGPass.lo `test -f 'llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/Scalar/SimplifyCFGPass.cpp
+
+ConstantMerge.lo: llvm/lib/Transforms/IPO/ConstantMerge.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT ConstantMerge.lo -MD -MP -MF $(DEPDIR)/ConstantMerge.Tpo -c -o ConstantMerge.lo `test -f 'llvm/lib/Transforms/IPO/ConstantMerge.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/IPO/ConstantMerge.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/ConstantMerge.Tpo $(DEPDIR)/ConstantMerge.Plo
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='llvm/lib/Transforms/IPO/ConstantMerge.cpp' object='ConstantMerge.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o ConstantMerge.lo `test -f 'llvm/lib/Transforms/IPO/ConstantMerge.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/IPO/ConstantMerge.cpp
+
+GlobalOpt.lo: llvm/lib/Transforms/IPO/GlobalOpt.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GlobalOpt.lo -MD -MP -MF $(DEPDIR)/GlobalOpt.Tpo -c -o GlobalOpt.lo `test -f 'llvm/lib/Transforms/IPO/GlobalOpt.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/IPO/GlobalOpt.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/GlobalOpt.Tpo $(DEPDIR)/GlobalOpt.Plo
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='llvm/lib/Transforms/IPO/GlobalOpt.cpp' object='GlobalOpt.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GlobalOpt.lo `test -f 'llvm/lib/Transforms/IPO/GlobalOpt.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/IPO/GlobalOpt.cpp
+
+GlobalDCE.lo: llvm/lib/Transforms/IPO/GlobalDCE.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT GlobalDCE.lo -MD -MP -MF $(DEPDIR)/GlobalDCE.Tpo -c -o GlobalDCE.lo `test -f 'llvm/lib/Transforms/IPO/GlobalDCE.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/IPO/GlobalDCE.cpp
+ at am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/GlobalDCE.Tpo $(DEPDIR)/GlobalDCE.Plo
+ at am__fastdepCXX_FALSE@	$(AM_V_CXX) @AM_BACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	source='llvm/lib/Transforms/IPO/GlobalDCE.cpp' object='GlobalDCE.lo' libtool=yes @AMDEPBACKSLASH@
+ at AMDEP_TRUE@@am__fastdepCXX_FALSE@	DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ at am__fastdepCXX_FALSE@	$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o GlobalDCE.lo `test -f 'llvm/lib/Transforms/IPO/GlobalDCE.cpp' || echo '$(srcdir)/'`llvm/lib/Transforms/IPO/GlobalDCE.cpp
+
 AsmWriter.lo: llvm/lib/VMCore/AsmWriter.cpp
 @am__fastdepCXX_TRUE@	$(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT AsmWriter.lo -MD -MP -MF $(DEPDIR)/AsmWriter.Tpo -c -o AsmWriter.lo `test -f 'llvm/lib/VMCore/AsmWriter.cpp' || echo '$(srcdir)/'`llvm/lib/VMCore/AsmWriter.cpp
 @am__fastdepCXX_TRUE@	$(AM_V_at)$(am__mv) $(DEPDIR)/AsmWriter.Tpo $(DEPDIR)/AsmWriter.Plo
@@ -7714,6 +8281,8 @@ maintainer-clean-generic:
 	@echo "This command is intended for maintainers to use"
 	@echo "it deletes files that may require special tools to rebuild."
 	-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
+ at BUILD_EXTERNAL_LLVM_TRUE@distclean-local:
+ at BUILD_EXTERNAL_LLVM_TRUE@clean-local:
 clean: clean-am
 
 clean-am: clean-checkLTLIBRARIES clean-checkPROGRAMS clean-generic \
@@ -7810,144 +8379,144 @@ uninstall-am:
 	tags uninstall uninstall-am
 
 
- at MAINTAINER_MODE_TRUE@llvm/include/llvm/Intrinsics.gen: llvm/include/llvm/Intrinsics.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS) -gen-intrinsic -o $@ $<
- at MAINTAINER_MODE_TRUE@X86GenRegisterInfo.h.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-register-desc-header -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at llvm/include/llvm/Intrinsics.gen: llvm/include/llvm/Intrinsics.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS) -gen-intrinsic -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenRegisterInfo.h.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-register-desc-header -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenRegisterNames.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-register-enums -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenRegisterNames.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-register-enums -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenRegisterInfo.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-register-desc -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenRegisterInfo.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-register-desc -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenInstrNames.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-instr-enums -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenInstrNames.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-instr-enums -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenInstrInfo.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-instr-desc -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenInstrInfo.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-instr-desc -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenAsmWriter.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-asm-writer -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenAsmWriter.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-asm-writer -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenAsmWriter1.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-asm-writer -asmwriternum=1 -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenAsmWriter1.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-asm-writer -asmwriternum=1 -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenAsmMatcher.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-asm-matcher -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenAsmMatcher.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-asm-matcher -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenDAGISel.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-dag-isel -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenDAGISel.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-dag-isel -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenFastISel.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-fast-isel -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenFastISel.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-fast-isel -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenCallingConv.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-callingconv -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenCallingConv.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-callingconv -o $@ $<
 
- at MAINTAINER_MODE_TRUE@X86GenSubtarget.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-subtarget -o $@ $<
- at MAINTAINER_MODE_TRUE@PPCGenInstrNames.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-instr-enums -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at X86GenSubtarget.inc: llvm/lib/Target/X86/X86.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_X86) -gen-subtarget -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenInstrNames.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-instr-enums -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCGenRegisterNames.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-register-enums -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenRegisterNames.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-register-enums -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCGenAsmWriter.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-asm-writer -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenAsmWriter.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-asm-writer -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCGenCodeEmitter.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-emitter -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenCodeEmitter.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-emitter -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCRegisterInfo.h.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-register-desc-header -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCRegisterInfo.h.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-register-desc-header -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCGenRegisterInfo.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-register-desc -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenRegisterInfo.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-register-desc -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCGenRegisterInfo.h.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-register-desc-header -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenRegisterInfo.h.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-register-desc-header -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCGenInstrInfo.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-instr-desc -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenInstrInfo.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-instr-desc -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCGenDAGISel.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-dag-isel -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenDAGISel.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-dag-isel -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCGenCallingConv.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-callingconv -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenCallingConv.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-callingconv -o $@ $<
 
- at MAINTAINER_MODE_TRUE@PPCGenSubtarget.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-subtarget -o $@ $<
- at MAINTAINER_MODE_TRUE@ARMGenRegisterInfo.h.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-register-desc-header -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at PPCGenSubtarget.inc: llvm/lib/Target/PowerPC/PPC.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_PPC) -gen-subtarget -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenRegisterInfo.h.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-register-desc-header -o $@ $<
 
- at MAINTAINER_MODE_TRUE@ARMGenRegisterNames.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-register-enums -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenRegisterNames.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-register-enums -o $@ $<
 
- at MAINTAINER_MODE_TRUE@ARMGenRegisterInfo.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-register-desc -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenRegisterInfo.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-register-desc -o $@ $<
 
- at MAINTAINER_MODE_TRUE@ARMGenInstrNames.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-instr-enums -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenInstrNames.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-instr-enums -o $@ $<
 
- at MAINTAINER_MODE_TRUE@ARMGenInstrInfo.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-instr-desc -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenInstrInfo.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-instr-desc -o $@ $<
 
- at MAINTAINER_MODE_TRUE@ARMGenCodeEmitter.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-emitter -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenCodeEmitter.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-emitter -o $@ $<
 
- at MAINTAINER_MODE_TRUE@ARMGenAsmWriter.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-asm-writer -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenAsmWriter.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-asm-writer -o $@ $<
 
- at MAINTAINER_MODE_TRUE@ARMGenDAGISel.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-dag-isel -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenDAGISel.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-dag-isel -o $@ $<
 
- at MAINTAINER_MODE_TRUE@ARMGenCallingConv.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-callingconv -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenCallingConv.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-callingconv -o $@ $<
 
- at MAINTAINER_MODE_TRUE@ARMGenSubtarget.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
- at MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-subtarget -o $@ $<
- at ifGNUmake@ TESTS+=llvmcheck.sh
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE at ARMGenSubtarget.inc: llvm/lib/Target/ARM/ARM.td $(TBLGEN)
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	$(TBLGEN_V) $(TBLGEN_FLAGS_ARM) -gen-subtarget -o $@ $<
+ at BUILD_EXTERNAL_LLVM_FALSE@@ifGNUmake@ TESTS+=llvmcheck.sh
 
 #bytecode2llvm.cpp: build-llvm
 
-build-llvm:
-	+$(GMAKE) -C llvm OPTIMIZE_OPTION=-O2 libs-only
+ at BUILD_EXTERNAL_LLVM_FALSE@build-llvm:
+ at BUILD_EXTERNAL_LLVM_FALSE@	+$(GMAKE) -C llvm OPTIMIZE_OPTION=-O2 libs-only
 
-build-llvm-for-check:
-	+$(GMAKE) -C llvm OPTIMIZE_OPTION=-O2 tools-only
+ at BUILD_EXTERNAL_LLVM_FALSE@build-llvm-for-check:
+ at BUILD_EXTERNAL_LLVM_FALSE@	+$(GMAKE) -C llvm OPTIMIZE_OPTION=-O2 tools-only
 
 # Don't use make -C here, otherwise there's a racecondition between distclean
 # and clean (distclean removes all Makefiles in llvm/)
-clean-local:
-	rm -rf `find llvm/test -name Output -type d -print`
-	rm -rf llvm/Release llvm/Debug
- at MAINTAINER_MODE_TRUE@	rm -f *.inc
- at MAINTAINER_MODE_TRUE@	rm -f llvm/include/llvm/Intrinsics.gen
-	rm -f llvm/test/site.exp llvm/test/site.bak llvm/test/*.out llvm/test/*.sum llvm/test/*.log
-
-distclean-local:
-	rm -f llvm/docs/doxygen.cfg llvm/test/Unit/.dir llvm/test/Unit/lit.site.cfg
-	rm -f llvm/test/lit.site.cfg llvm/config.status
-	rm -f llvm/mklib llvm/tools/llvmc/llvm-config.in
-	rm -f llvm/Makefile.config llvm/config.log
-	rm -f llvm/llvm.spec llvm/include/llvm/Config/AsmPrinters.def llvm/include/llvm/Config/config.h
-	rm -f llvm/include/llvm/Config/Disassemblers.def
-	rm -f llvm/include/llvm/System/DataTypes.h llvm/include/llvm/Config/Targets.def
-	rm -f llvm/tools/llvmc/plugins/Base/Base.td llvm/tools/llvm-config/llvm-config.in
-	rm -f llvm/include/llvm/Config/AsmParsers.def
-	if test $(abs_srcdir) != $(abs_builddir); then\
-	    rm -f llvm/Makefile llvm/lib/Makefile llvm/test/Makefile\
-	    llvm/test/Makefile.tests llvm/tools/Makefile llvm/utils/Makefile\
-	    llvm/Makefile.common llvm/unittests/Makefile;\
-	fi
-
-check-llvm: build-llvm-for-check
-	+$(GMAKE) -C llvm check
-	+$(GMAKE) -C llvm unittests
-$(top_builddir)/llvm/config.status: llvm/configure
-	(cd llvm; ./config.status --recheck; ./config.status)
+ at BUILD_EXTERNAL_LLVM_FALSE@clean-local:
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -rf `find llvm/test -name Output -type d -print`
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -rf llvm/Release llvm/Debug
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	rm -f *.inc
+ at BUILD_EXTERNAL_LLVM_FALSE@@MAINTAINER_MODE_TRUE@	rm -f llvm/include/llvm/Intrinsics.gen
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/test/site.exp llvm/test/site.bak llvm/test/*.out llvm/test/*.sum llvm/test/*.log
+
+ at BUILD_EXTERNAL_LLVM_FALSE@distclean-local:
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/docs/doxygen.cfg llvm/test/Unit/.dir llvm/test/Unit/lit.site.cfg
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/test/lit.site.cfg llvm/config.status
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/mklib llvm/tools/llvmc/llvm-config.in
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/Makefile.config llvm/config.log
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/llvm.spec llvm/include/llvm/Config/AsmPrinters.def llvm/include/llvm/Config/config.h
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/include/llvm/Config/Disassemblers.def
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/include/llvm/System/DataTypes.h llvm/include/llvm/Config/Targets.def
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/tools/llvmc/plugins/Base/Base.td llvm/tools/llvm-config/llvm-config.in
+ at BUILD_EXTERNAL_LLVM_FALSE@	rm -f llvm/include/llvm/Config/AsmParsers.def
+ at BUILD_EXTERNAL_LLVM_FALSE@	if test $(abs_srcdir) != $(abs_builddir); then\
+ at BUILD_EXTERNAL_LLVM_FALSE@	    rm -f llvm/Makefile llvm/lib/Makefile llvm/test/Makefile\
+ at BUILD_EXTERNAL_LLVM_FALSE@	    llvm/test/Makefile.tests llvm/tools/Makefile llvm/utils/Makefile\
+ at BUILD_EXTERNAL_LLVM_FALSE@	    llvm/Makefile.common llvm/unittests/Makefile;\
+ at BUILD_EXTERNAL_LLVM_FALSE@	fi
+
+ at BUILD_EXTERNAL_LLVM_FALSE@check-llvm: build-llvm-for-check
+ at BUILD_EXTERNAL_LLVM_FALSE@	+$(GMAKE) -C llvm check
+ at BUILD_EXTERNAL_LLVM_FALSE@	+$(GMAKE) -C llvm unittests
+ at BUILD_EXTERNAL_LLVM_FALSE@$(top_builddir)/llvm/config.status: llvm/configure
+ at BUILD_EXTERNAL_LLVM_FALSE@	(cd llvm; ./config.status --recheck; ./config.status)
 
 # rm configure generated files
 dist-hook:
diff --git a/libclamav/c++/aclocal.m4 b/libclamav/c++/aclocal.m4
index 557b5ac..021f829 100644
--- a/libclamav/c++/aclocal.m4
+++ b/libclamav/c++/aclocal.m4
@@ -13,8 +13,8 @@
 
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
-m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.65],,
-[m4_warning([this file was generated for autoconf 2.65.
+m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.67],,
+[m4_warning([this file was generated for autoconf 2.67.
 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'.])])
diff --git a/libclamav/c++/bytecode2llvm.cpp b/libclamav/c++/bytecode2llvm.cpp
index c3c2898..ff4eaa8 100644
--- a/libclamav/c++/bytecode2llvm.cpp
+++ b/libclamav/c++/bytecode2llvm.cpp
@@ -38,6 +38,7 @@
 #include "llvm/Analysis/LoopInfo.h"
 #include "llvm/Analysis/ScalarEvolution.h"
 #include "llvm/Analysis/Verifier.h"
+#include "llvm/AutoUpgrade.h"
 #include "llvm/CallingConv.h"
 #include "llvm/DerivedTypes.h"
 #include "llvm/Function.h"
@@ -63,12 +64,14 @@
 #include "llvm/System/Memory.h"
 #include "llvm/System/Mutex.h"
 #include "llvm/System/Signals.h"
+#include "llvm/Support/Timer.h"
 #include "llvm/System/Threading.h"
 #include "llvm/Target/TargetSelect.h"
 #include "llvm/Target/TargetData.h"
 #include "llvm/Target/TargetOptions.h"
 #include "llvm/Support/TargetFolder.h"
 #include "llvm/Transforms/Scalar.h"
+#include "llvm/Transforms/IPO.h"
 #include "llvm/Transforms/Utils/BasicBlockUtils.h"
 #include "llvm/System/ThreadLocal.h"
 #include <cstdlib>
@@ -77,6 +80,9 @@
 #include <cerrno>
 #include <string>
 
+//#define TIMING
+#undef TIMING
+
 #include "llvm/Config/config.h"
 #if !ENABLE_THREADS
 #error "Thread support was explicitly disabled. Cannot continue"
@@ -124,8 +130,26 @@ struct cli_bcengine {
 extern "C" uint8_t cli_debug_flag;
 namespace {
 
+#ifdef LLVM28
+#define llvm_report_error(x) report_fatal_error(x)
+#define llvm_install_error_handler(x) install_fatal_error_handler(x)
+#define DwarfExceptionHandling JITExceptionHandling
+#define SetCurrentDebugLocation(x) SetCurrentDebugLocation(DebugLoc::getFromDILocation(x))
+#define DEFINEPASS(passname) passname() : FunctionPass(ID)
+#else
+#define DEFINEPASS(passname) passname() : FunctionPass(&ID)
+#endif
+
 static sys::ThreadLocal<const jmp_buf> ExceptionReturn;
 
+static void UpgradeCall(CallInst *&C, Function *Intr)
+{
+    Function *New;
+    if (!UpgradeIntrinsicFunction(Intr, New) || New == Intr)
+	return;
+    UpgradeIntrinsicCall(C, New);
+}
+
 void do_shutdown() {
     llvm_shutdown();
 }
@@ -242,6 +266,33 @@ public:
     }
 };
 
+class TimerWrapper {
+private:
+    Timer *t;
+public:
+    TimerWrapper(const std::string &name) {
+	t = 0;
+#ifdef TIMING
+	t = new Timer(name);
+#endif
+    }
+    ~TimerWrapper()
+    {
+	if (t)
+	    delete t;
+    }
+    void startTimer()
+    {
+	if (t)
+	    t->startTimer();
+    }
+    void stopTimer()
+    {
+	if (t)
+	    t->stopTimer();
+    }
+};
+
 class LLVMTypeMapper {
 private:
     std::vector<PATypeHolder> TypeMap;
@@ -266,8 +317,12 @@ private:
 	llvm_unreachable("getStatic");
     }
 public:
+    TimerWrapper pmTimer;
+    TimerWrapper irgenTimer;
+
     LLVMTypeMapper(LLVMContext &Context, const struct cli_bc_type *types,
-		   unsigned count, const Type *Hidden=0) : Context(Context), numTypes(count)
+		   unsigned count, const Type *Hidden=0) : Context(Context), numTypes(count),
+    pmTimer("Function passes"),irgenTimer("IR generation")
     {
 	TypeMap.reserve(count);
 	// During recursive type construction pointers to Type* may be
@@ -385,8 +440,7 @@ class RuntimeLimits : public FunctionPass {
 
 public:
     static char ID;
-    RuntimeLimits() : FunctionPass(&ID) {}
-
+    DEFINEPASS(RuntimeLimits) {}
 
     virtual bool runOnFunction(Function &F) {
 	BBSetTy BackedgeTargets;
@@ -524,13 +578,89 @@ public:
 };
 char RuntimeLimits::ID;
 
-class VISIBILITY_HIDDEN LLVMCodegen {
+// select i1 false ... which instcombine would simplify but we don't run
+// instcombine.
+class BrSimplifier : public FunctionPass {
+public:
+    static char ID;
+    DEFINEPASS(BrSimplifier) {}
+
+    virtual bool runOnFunction(Function &F) {
+	bool Changed = false;
+	for (Function::iterator I=F.begin(),E=F.end(); I != E; ++I) {
+	    if (BranchInst *BI = dyn_cast<BranchInst>(I->getTerminator())) {
+		if (BI->isUnconditional())
+		    continue;
+		Value *V = BI->getCondition();
+		if (ConstantInt *CI = dyn_cast<ConstantInt>(V)) {
+		    BasicBlock *Other;
+		    if (CI->isOne()) {
+			BranchInst::Create(BI->getSuccessor(0), &*I);
+			Other = BI->getSuccessor(1);
+		    } else {
+			BranchInst::Create(BI->getSuccessor(1), &*I);
+			Other = BI->getSuccessor(0);
+		    }
+		    Other->removePredecessor(&*I);
+		    BI->eraseFromParent();
+		    Changed = true;
+		}
+	    }
+	    for (BasicBlock::iterator J=I->begin(),JE=I->end();
+		 J != JE;) {
+		SelectInst *SI = dyn_cast<SelectInst>(J);
+		++J;
+		if (!SI)
+		    continue;
+		ConstantInt *CI = dyn_cast<ConstantInt>(SI->getCondition());
+		if (!CI)
+		    continue;
+		if (CI->isOne())
+		    SI->replaceAllUsesWith(SI->getTrueValue());
+		else
+		    SI->replaceAllUsesWith(SI->getFalseValue());
+		SI->eraseFromParent();
+		Changed = true;
+	    }
+	}
+
+	return Changed;
+    }
+};
+char BrSimplifier::ID;
+/*
+class SimpleGlobalDCE : public ModulePass {
+    ExecutionEngine *EE;
+public:
+    static char ID;
+    SimpleGlobalDCE(ExecutionEngine *EE) : ModulePass(&ID), EE(EE) {}
+
+    virtual bool runOnModule(Module &M) {
+	bool Changed = false;
+	std::vector<GlobalValue*> toErase;
+	for (Module::global_iterator I = M.global_begin(), E = M.global_end(); I != E; ++I) {
+	    GlobalValue *GV = &*I;
+	    if (GV->use_empty() && !EE->getPointerToGlobalIfAvailable(GV))
+		toErase.push_back(GV);
+	}
+	for (std::vector<GlobalValue*>::iterator I=toErase.begin(), E=toErase.end();
+	     I != E; ++I) {
+	    (*I)->eraseFromParent();
+	    Changed = true;
+	}
+
+	return Changed;
+    }
+};
+char SimpleGlobalDCE::ID;
+*/
+class LLVMCodegen {
 private:
     const struct cli_bc *bc;
     Module *M;
     LLVMContext &Context;
     ExecutionEngine *EE;
-    PassManager &PM;
+    FunctionPassManager &PM, &PMUnsigned;
     LLVMTypeMapper *TypeMap;
 
     Function **apiFuncs;
@@ -724,13 +854,12 @@ private:
 	return 0;
     }
 
-
 public:
     LLVMCodegen(const struct cli_bc *bc, Module *M, struct CommonFunctions *CF, FunctionMapTy &cFuncs,
-		ExecutionEngine *EE, PassManager &PM,
+		ExecutionEngine *EE, FunctionPassManager &PM, FunctionPassManager &PMUnsigned,
 		Function **apiFuncs, LLVMTypeMapper &apiMap)
 	: bc(bc), M(M), Context(M->getContext()), EE(EE),
-	PM(PM), apiFuncs(apiFuncs),apiMap(apiMap),
+	PM(PM),PMUnsigned(PMUnsigned), apiFuncs(apiFuncs),apiMap(apiMap),
 	compiledFunctions(cFuncs), BytecodeID("bc"+Twine(bc->id)),
 	Folder(EE->getTargetData()), Builder(Context, Folder), CF(CF) {
 
@@ -828,11 +957,12 @@ public:
 	    StoreInst *SI = 0;
 	    for (Value::use_iterator I=VI->use_begin(),
 		 E=VI->use_end(); I != E; ++I) {
-		if (StoreInst *S = dyn_cast<StoreInst>(I)) {
+		Value *I_V = *I;
+		if (StoreInst *S = dyn_cast<StoreInst>(I_V)) {
 		    if (SI)
 			return V;
 		    SI = S;
-		} else if (!isa<LoadInst>(I))
+		} else if (!isa<LoadInst>(I_V))
 		    return V;
 	    }
 	    V = SI->getOperand(0);
@@ -849,7 +979,9 @@ public:
 	return V;
     }
 
-    bool generate() {
+   Function* generate() {
+        PrettyStackTraceString CrashInfo("Generate LLVM IR functions");
+	apiMap.irgenTimer.startTimer();
 	TypeMap = new LLVMTypeMapper(Context, bc->types + 4, bc->num_types - 5);
 	for (unsigned i=0;i<bc->dbgnode_cnt;i++) {
 	    mdnodes.push_back(convertMDNode(i));
@@ -893,7 +1025,6 @@ public:
 	}
 	Function **Functions = new Function*[bc->num_func];
 	for (unsigned j=0;j<bc->num_func;j++) {
-	    PrettyStackTraceString CrashInfo("Generate LLVM IR functions");
 	    // Create LLVM IR Function
 	    const struct cli_bc_func *func = &bc->funcs[j];
 	    std::vector<const Type*> argTypes;
@@ -908,16 +1039,13 @@ public:
 					   BytecodeID+"f"+Twine(j), M);
 	    Functions[j]->setDoesNotThrow();
 	    Functions[j]->setCallingConv(CallingConv::Fast);
+	    Functions[j]->setLinkage(GlobalValue::InternalLinkage);
 #ifdef C_LINUX
 	    /* bb #2270, this should really be fixed either by LLVM or GCC.*/
 	    Functions[j]->addFnAttr(Attribute::constructStackAlignmentFromInt(16));
 #endif
 	}
 	const Type *I32Ty = Type::getInt32Ty(Context);
-	PM.add(createDeadCodeEliminationPass());
-	if (!bc->trusted)
-	    PM.add(createClamBCRTChecks());
-	PM.add(new RuntimeLimits());
 	for (unsigned j=0;j<bc->num_func;j++) {
 	    PrettyStackTraceString CrashInfo("Generate LLVM IR");
 	    const struct cli_bc_func *func = &bc->funcs[j];
@@ -1137,7 +1265,7 @@ public:
 			    BasicBlock *False = BB[inst->u.branch.br_false];
 			    if (Cond->getType() != Type::getInt1Ty(Context)) {
 				errs() << MODULE << "type mismatch in condition\n";
-				return false;
+				return 0;
 			    }
 			    Builder.CreateCondBr(Cond, True, False);
 			    break;
@@ -1235,7 +1363,7 @@ public:
 			    Value *Op = convertOperand(func, I32Ty, inst->u.three[2]);
 			    Op = GEPOperand(Op);
 			    if (!createGEP(inst->dest, V, &Op, &Op+1))
-				return false;
+				return 0;
 			    break;
 			}
 			case OP_BC_GEPZ:
@@ -1247,7 +1375,7 @@ public:
 			    Ops[1] = convertOperand(func, I32Ty, inst->u.three[2]);
 			    Ops[1] = GEPOperand(Ops[1]);
 			    if (!createGEP(inst->dest, V, Ops, Ops+2))
-				return false;
+				return 0;
 			    break;
 			}
 			case OP_BC_GEPN:
@@ -1262,7 +1390,7 @@ public:
 				Idxs.push_back(Op);
 			    }
 			    if (!createGEP(inst->dest, V, Idxs.begin(), Idxs.end()))
-				return false;
+				return 0;
 			    break;
 			}
 			case OP_BC_STORE:
@@ -1293,6 +1421,7 @@ public:
 								ConstantInt::get(Type::getInt32Ty(Context), 1));
 			    c->setTailCall(true);
 			    c->setDoesNotThrow();
+			    UpgradeCall(c, CF->FMemset);
 			    break;
 			}
 			case OP_BC_MEMCPY:
@@ -1306,6 +1435,7 @@ public:
 								ConstantInt::get(Type::getInt32Ty(Context), 1));
 			    c->setTailCall(true);
 			    c->setDoesNotThrow();
+			    UpgradeCall(c, CF->FMemcpy);
 			    break;
 			}
 			case OP_BC_MEMMOVE:
@@ -1319,6 +1449,7 @@ public:
 								ConstantInt::get(Type::getInt32Ty(Context), 1));
 			    c->setTailCall(true);
 			    c->setDoesNotThrow();
+			    UpgradeCall(c, CF->FMemmove);
 			    break;
 			}
 			case OP_BC_MEMCMP:
@@ -1393,7 +1524,7 @@ public:
 			default:
 			    errs() << MODULE << "JIT doesn't implement opcode " <<
 				inst->opcode << " yet!\n";
-			    return false;
+			    return 0;
 		    }
 		}
 	    }
@@ -1402,60 +1533,71 @@ public:
 		errs() << MODULE << "Verification failed\n";
 		F->dump();
 		// verification failed
-		return false;
+		return 0;
 	    }
 	    delete [] Values;
 	    delete [] BB;
+	    apiMap.irgenTimer.stopTimer();
+	    apiMap.pmTimer.startTimer();
+	    if (bc->trusted) {
+		PM.doInitialization();
+		PM.run(*F);
+		PM.doFinalization();
+	    }
+	    else {
+		PMUnsigned.doInitialization();
+		PMUnsigned.run(*F);
+		PMUnsigned.doFinalization();
+	    }
+	    apiMap.pmTimer.stopTimer();
+	    apiMap.irgenTimer.startTimer();
 	}
 
-	PM.run(*M);
 	for (unsigned j=0;j<bc->num_func;j++) {
-	    PrettyStackTraceString CrashInfo("Generate LLVM IR2");
 	    Function *F = Functions[j];
 	    AddStackProtect(F);
 	}
-	DEBUG(M->dump());
 	delete TypeMap;
 	std::vector<const Type*> args;
 	args.clear();
 	args.push_back(HiddenCtx);
 	FunctionType *Callable = FunctionType::get(Type::getInt32Ty(Context),
 						   args, false);
-	for (unsigned j=0;j<bc->num_func;j++) {
-	    const struct cli_bc_func *func = &bc->funcs[j];
-	    PrettyStackTraceString CrashInfo2("Native machine codegen");
 
-	    // If prototype matches, add to callable functions
-	    if (Functions[j]->getFunctionType() == Callable) {
-		// All functions have the Fast calling convention, however
-		// entrypoint can only be C, emit wrapper
-		Function *F = Function::Create(Functions[j]->getFunctionType(),
-					       Function::ExternalLinkage,
-					       Functions[j]->getName()+"_wrap", M);
-		F->setDoesNotThrow();
-		BasicBlock *BB = BasicBlock::Create(Context, "", F);
-		std::vector<Value*> args;
-		for (Function::arg_iterator J=F->arg_begin(),
-		     JE=F->arg_end(); J != JE; ++JE) {
-		    args.push_back(&*J);
-		}
-		CallInst *CI = CallInst::Create(Functions[j], args.begin(), args.end(), "", BB);
-		CI->setCallingConv(CallingConv::Fast);
-		ReturnInst::Create(Context, CI, BB);
+	// If prototype matches, add to callable functions
+	if (Functions[0]->getFunctionType() != Callable) {
+	    errs() << "Wrong prototype for function 0 in bytecode " << bc->id << "\n";
+	    return 0;
+	}
+	// All functions have the Fast calling convention, however
+	// entrypoint can only be C, emit wrapper
+	Function *F = Function::Create(Functions[0]->getFunctionType(),
+				       Function::ExternalLinkage,
+				       Functions[0]->getName()+"_wrap", M);
+	F->setDoesNotThrow();
+	BasicBlock *BB = BasicBlock::Create(Context, "", F);
+	std::vector<Value*> Args;
+	for (Function::arg_iterator J=F->arg_begin(),
+	     JE=F->arg_end(); J != JE; ++JE) {
+	    Args.push_back(&*J);
+	}
+	CallInst *CI = CallInst::Create(Functions[0], Args.begin(), Args.end(), "", BB);
+	CI->setCallingConv(CallingConv::Fast);
+	ReturnInst::Create(Context, CI, BB);
+
+	delete [] Functions;
+	if (verifyFunction(*F, PrintMessageAction))
+	    return 0;
 
-		if (verifyFunction(*F, PrintMessageAction) == 0) {
-			DEBUG(errs() << "Generating code\n");
+/*			DEBUG(errs() << "Generating code\n");
 			// Codegen current function as executable machine code.
 			EE->getPointerToFunction(Functions[j]);
 			void *code = EE->getPointerToFunction(F);
-			DEBUG(errs() << "Code generation finished\n");
+			DEBUG(errs() << "Code generation finished\n");*/
 
-			compiledFunctions[func] = code;
-		}
-	  }
-	}
-	delete [] Functions;
-	return true;
+//		compiledFunctions[func] = code;
+	apiMap.irgenTimer.stopTimer();
+	return F;
     }
 };
 
@@ -1690,6 +1832,17 @@ static void setGuard(unsigned char* guardbuf)
     cli_md5_final(guardbuf, &ctx);
 }
 
+static void addFPasses(FunctionPassManager &FPM, bool trusted, const TargetData *TD)
+{
+    // Set up the optimizer pipeline.  Start with registering info about how
+    // the target lays out data structures.
+    FPM.add(new TargetData(*TD));
+    // Promote allocas to registers.
+    FPM.add(createPromoteMemoryToRegisterPass());
+    FPM.add(new BrSimplifier());
+    FPM.add(createDeadCodeEliminationPass());
+}
+
 int cli_bytecode_prepare_jit(struct cli_all_bc *bcs)
 {
   if (!bcs->engine)
@@ -1734,15 +1887,12 @@ int cli_bytecode_prepare_jit(struct cli_all_bc *bcs)
 	struct CommonFunctions CF;
 	addFunctionProtos(&CF, EE, M);
 
-	PassManager OurFPM;
+	FunctionPassManager OurFPM(M), OurFPMUnsigned(M);
 	M->setDataLayout(EE->getTargetData()->getStringRepresentation());
 	M->setTargetTriple(sys::getHostTriple());
-	// Set up the optimizer pipeline.  Start with registering info about how
-	// the target lays out data structures.
-	OurFPM.add(new TargetData(*EE->getTargetData()));
-	// Promote allocas to registers.
-	OurFPM.add(createPromoteMemoryToRegisterPass());
-	OurFPM.add(createDeadCodeEliminationPass());
+
+	addFPasses(OurFPM, true, EE->getTargetData());
+	addFPasses(OurFPMUnsigned, false, EE->getTargetData());
 
 	//TODO: create a wrapper that calls pthread_getspecific
 	unsigned maxh = cli_globals[0].offset + sizeof(struct cli_bc_hooks);
@@ -1803,7 +1953,7 @@ int cli_bytecode_prepare_jit(struct cli_all_bc *bcs)
 	FunctionType *FTy = FunctionType::get(Type::getVoidTy(M->getContext()),
 						    false);
 	GlobalVariable *Guard = new GlobalVariable(*M, PointerType::getUnqual(Type::getInt8Ty(M->getContext())),
-						    true, GlobalValue::ExternalLinkage, 0, "__stack_chk_guard"); 
+						    true, GlobalValue::ExternalLinkage, 0, "__stack_chk_guard");
 	unsigned plus = 0;
 	if (2*sizeof(void*) <= 16 && cli_rndnum(2)==2) {
 	    plus = sizeof(void*);
@@ -1817,28 +1967,69 @@ int cli_bytecode_prepare_jit(struct cli_all_bc *bcs)
 	EE->addGlobalMapping(SFail, (void*)(intptr_t)jit_ssp_handler);
         EE->getPointerToFunction(SFail);
 
+	llvm::Function **Functions = new Function*[bcs->count];
 	for (unsigned i=0;i<bcs->count;i++) {
 	    const struct cli_bc *bc = &bcs->all_bcs[i];
-	    if (bc->state == bc_skip || bc->state == bc_interp)
+	    if (bc->state == bc_skip || bc->state == bc_interp) {
+		Functions[i] = 0;
 		continue;
+	    }
 	    LLVMCodegen Codegen(bc, M, &CF, bcs->engine->compiledFunctions, EE,
-				OurFPM, apiFuncs, apiMap);
-	    if (!Codegen.generate()) {
+				OurFPM, OurFPMUnsigned, apiFuncs, apiMap);
+	    Function *F = Codegen.generate();
+	    if (!F) {
 		errs() << MODULE << "JIT codegen failed\n";
 		return CL_EBYTECODE;
 	    }
+	    Functions[i] = F;
 	}
+	delete [] apiFuncs;
+
+	bool has_untrusted = false;
 
 	for (unsigned i=0;i<bcs->count;i++) {
-	    bcs->all_bcs[i].state = bc_jit;
+	    if (!bcs->all_bcs[i].trusted) {
+		has_untrusted = true;
+		break;
+	    }
 	}
-	// compile all functions now, not lazily!
-	for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I) {
-	    Function *Fn = &*I;
-	    if (!Fn->isDeclaration())
-		EE->getPointerToFunction(Fn);
+	PassManager PM;
+	PM.add(new TargetData(*EE->getTargetData()));
+	// TODO: only run this on the untrusted bytecodes, not all of them...
+	if (has_untrusted)
+	    PM.add(createClamBCRTChecks());
+	PM.add(createCFGSimplificationPass());
+	PM.add(createSCCPPass());
+	PM.add(createGlobalOptimizerPass());
+	PM.add(createConstantMergePass());
+	PM.add(new RuntimeLimits());
+	TimerWrapper pmTimer2("Transform passes");
+	pmTimer2.startTimer();
+	PM.run(*M);
+	pmTimer2.stopTimer();
+	DEBUG(M->dump());
+
+	{
+	    PrettyStackTraceString CrashInfo2("Native machine codegen");
+	    TimerWrapper codegenTimer("Native codegen");
+	    codegenTimer.startTimer();
+	    // compile all functions now, not lazily!
+	    for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I) {
+		Function *Fn = &*I;
+		if (!Fn->isDeclaration())
+		    EE->getPointerToFunction(Fn);
+	    }
+	    codegenTimer.stopTimer();
 	}
-	delete [] apiFuncs;
+
+	for (unsigned i=0;i<bcs->count;i++) {
+	    const struct cli_bc_func *func = &bcs->all_bcs[i].funcs[0];
+	    if (!Functions[i])
+		continue;// not JITed
+	    bcs->engine->compiledFunctions[func] = EE->getPointerToFunction(Functions[i]);
+	    bcs->all_bcs[i].state = bc_jit;
+	}
+	delete [] Functions;
     }
     return CL_SUCCESS;
   } catch (std::bad_alloc &badalloc) {
@@ -1877,7 +2068,11 @@ int bytecode_init(void)
 
     // If we have a native target, initialize it to ensure it is linked in and
     // usable by the JIT.
+#ifndef AC_APPLE_UNIVERSAL_BUILD
     InitializeNativeTarget();
+#else
+    InitializeAllTargets();
+#endif
 
     if (!llvm_is_multithreaded()) {
 	//TODO:cli_dbgmsg
@@ -1983,9 +2178,12 @@ void cli_bytecode_debug_printsrc(const struct cli_bc_ctx *ctx)
 
     int line = (int)ctx->line ? (int)ctx->line : -1;
     int col = (int)ctx->col ? (int)ctx->col : -1;
+#ifndef LLVM28
+    //TODO: print this ourselves, instead of using SMDiagnostic
     SMDiagnostic diag(ctx->file, line, col,
 		 "", std::string(lines->linev[ctx->line-1], lines->linev[ctx->line]-1));
     diag.Print("[trace]", errs());
+#endif
 }
 
 int have_clamjit=1;
diff --git a/libclamav/c++/config/config.guess b/libclamav/c++/config/config.guess
index e3a2116..c2246a4 100755
--- a/libclamav/c++/config/config.guess
+++ b/libclamav/c++/config/config.guess
@@ -1,10 +1,10 @@
 #! /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
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2009-06-10'
+timestamp='2009-12-30'
 
 # 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
@@ -27,16 +27,16 @@ timestamp='2009-06-10'
 # the same distribution terms that you use for the rest of that program.
 
 
-# Originally written by Per Bothner <per at bothner.com>.
-# Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# Originally written by Per Bothner.  Please send patches (context
+# diff format) to <config-patches at gnu.org> 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.
 #
-# The plan is that this can be called by configure scripts if you
-# don't specify an explicit build system type.
+# 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,.*/,,'`
 
@@ -56,8 +56,9 @@ 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 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -333,6 +334,9 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     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"
@@ -807,12 +811,12 @@ EOF
     i*:PW*:*)
 	echo ${UNAME_MACHINE}-pc-pw32
 	exit ;;
-    *:Interix*:[3456]*)
+    *:Interix*:*)
     	case ${UNAME_MACHINE} in
 	    x86)
 		echo i586-pc-interix${UNAME_RELEASE}
 		exit ;;
-	    EM64T | authenticamd | genuineintel)
+	    authenticamd | genuineintel | EM64T)
 		echo x86_64-unknown-interix${UNAME_RELEASE}
 		exit ;;
 	    IA64)
@@ -854,6 +858,20 @@ EOF
     i*86:Minix:*:*)
 	echo ${UNAME_MACHINE}-pc-minix
 	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 \
@@ -876,6 +894,17 @@ EOF
     frv:Linux:*:*)
     	echo frv-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 ;;
@@ -901,39 +930,18 @@ EOF
 	#endif
 	#endif
 EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^CPU/{
-		s: ::g
-		p
-	    }'`"
+	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 or32-unknown-linux-gnu
 	exit ;;
-    ppc:Linux:*:*)
-	echo powerpc-unknown-linux-gnu
-	exit ;;
-    ppc64:Linux:*:*)
-	echo powerpc64-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 ;;
     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
@@ -942,8 +950,11 @@ EOF
 	  *)    echo hppa-unknown-linux-gnu ;;
 	esac
 	exit ;;
-    parisc64:Linux:*:* | hppa64:Linux:*:*)
-	echo hppa64-unknown-linux-gnu
+    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
@@ -966,58 +977,6 @@ EOF
     xtensa*:Linux:*:*)
     	echo ${UNAME_MACHINE}-unknown-linux-gnu
 	exit ;;
-    i*86:Linux:*:*)
-	# The BFD linker knows what the default object file format is, so
-	# first see if it will tell us. cd to the root directory to prevent
-	# problems with other programs or directories called `ld' in the path.
-	# Set LC_ALL=C to ensure ld outputs messages in English.
-	ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
-			 | sed -ne '/supported targets:/!d
-				    s/[ 	][ 	]*/ /g
-				    s/.*supported targets: *//
-				    s/ .*//
-				    p'`
-        case "$ld_supported_targets" in
-	  elf32-i386)
-		TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
-		;;
-	esac
-	# Determine whether the default compiler is a.out or elf
-	eval $set_cc_for_build
-	sed 's/^	//' << EOF >$dummy.c
-	#include <features.h>
-	#ifdef __ELF__
-	# ifdef __GLIBC__
-	#  if __GLIBC__ >= 2
-	LIBC=gnu
-	#  else
-	LIBC=gnulibc1
-	#  endif
-	# else
-	LIBC=gnulibc1
-	# endif
-	#else
-	#if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
-	LIBC=gnu
-	#else
-	LIBC=gnuaout
-	#endif
-	#endif
-	#ifdef __dietlibc__
-	LIBC=dietlibc
-	#endif
-EOF
-	eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
-	    /^LIBC/{
-		s: ::g
-		p
-	    }'`"
-	test x"${LIBC}" != x && {
-		echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
-		exit
-	}
-	test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; 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
@@ -1247,6 +1206,16 @@ EOF
     *: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}
diff --git a/libclamav/c++/config/config.sub b/libclamav/c++/config/config.sub
index eb0389a..c2d1257 100755
--- a/libclamav/c++/config/config.sub
+++ b/libclamav/c++/config/config.sub
@@ -1,10 +1,10 @@
 #! /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
+#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
 #   Free Software Foundation, Inc.
 
-timestamp='2009-06-11'
+timestamp='2010-01-22'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -32,13 +32,16 @@ timestamp='2009-06-11'
 
 
 # Please send patches to <config-patches at gnu.org>.  Submit a context
-# diff and a properly formatted ChangeLog entry.
+# 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.
@@ -72,8 +75,9 @@ Report bugs and patches to <config-patches at gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001,
-2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free
+Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,7 +153,7 @@ case $os in
 	-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
 	-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
 	-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-	-apple | -axis | -knuth | -cray)
+	-apple | -axis | -knuth | -cray | -microblaze)
 		os=
 		basic_machine=$1
 		;;
@@ -284,6 +288,7 @@ case $basic_machine in
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
 	| pyramid \
+	| 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 \
@@ -291,13 +296,14 @@ case $basic_machine in
 	| sparcv8 | sparcv9 | sparcv9b | sparcv9v \
 	| spu | strongarm \
 	| tahoe | thumb | tic4x | tic80 | tron \
+	| ubicom32 \
 	| v850 | v850e \
 	| we32k \
 	| x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
 	| z8k | z80)
 		basic_machine=$basic_machine-unknown
 		;;
-	m6811 | m68hc11 | m6812 | m68hc12)
+	m6811 | m68hc11 | m6812 | m68hc12 | picochip)
 		# Motorola 68HC11/12.
 		basic_machine=$basic_machine-unknown
 		os=-none
@@ -340,7 +346,7 @@ case $basic_machine in
 	| lm32-* \
 	| m32c-* | m32r-* | m32rle-* \
 	| m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+	| m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
 	| mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
 	| mips16-* \
 	| mips64-* | mips64el-* \
@@ -368,15 +374,17 @@ case $basic_machine in
 	| pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
 	| pyramid-* \
-	| romp-* | rs6000-* \
+	| 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-* | strongarm-* | sv1-* | sx?-* \
 	| tahoe-* | thumb-* \
-	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \
+	| tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+	| tile-* | tilegx-* \
 	| tron-* \
+	| ubicom32-* \
 	| v850-* | v850e-* | vax-* \
 	| we32k-* \
 	| x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
@@ -726,6 +734,9 @@ case $basic_machine in
 		basic_machine=ns32k-utek
 		os=-sysv
 		;;
+        microblaze)
+		basic_machine=microblaze-xilinx
+		;;
 	mingw32)
 		basic_machine=i386-pc
 		os=-mingw32
@@ -1076,6 +1087,11 @@ case $basic_machine in
 		basic_machine=tic6x-unknown
 		os=-coff
 		;;
+        # This must be matched before tile*.
+        tilegx*)
+		basic_machine=tilegx-unknown
+		os=-linux-gnu
+		;;
 	tile*)
 		basic_machine=tile-unknown
 		os=-linux-gnu
@@ -1247,6 +1263,9 @@ 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|'`
 		;;
@@ -1268,8 +1287,8 @@ case $os in
 	# -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* | -solaris* | -sym* \
-	      | -kopensolaris* \
+	      | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
+	      | -sym* | -kopensolaris* \
 	      | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
 	      | -aos* | -aros* \
 	      | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
@@ -1290,7 +1309,7 @@ case $os in
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
 	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops*)
+	      | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1423,6 +1442,8 @@ case $os in
 	-dicos*)
 		os=-dicos
 		;;
+        -nacl*)
+	        ;;
 	-none)
 		;;
 	*)
diff --git a/libclamav/c++/configure b/libclamav/c++/configure
index dc60c55..f19918a 100755
--- a/libclamav/c++/configure
+++ b/libclamav/c++/configure
@@ -1,13 +1,13 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.65 for libclamavc++ devel.
+# Generated by GNU Autoconf 2.67 for libclamavc++ devel.
 #
 # Report bugs to <http://bugs.clamav.net>.
 #
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
-# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation,
-# Inc.
+# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
+# Foundation, Inc.
 #
 #
 # This configure script is free software; the Free Software Foundation
@@ -319,7 +319,7 @@ $as_echo X"$as_dir" |
       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"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
@@ -359,19 +359,19 @@ else
 fi # as_fn_arith
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# 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.
+# script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  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: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -682,7 +682,7 @@ test -n "$DJDIR" || exec 7<&0 </dev/null
 exec 6>&1
 
 # Name of the host.
-# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# 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`
 
@@ -748,6 +748,8 @@ ac_subst_vars='am__EXEEXT_FALSE
 am__EXEEXT_TRUE
 LTLIBOBJS
 LIBOBJS
+BUILD_EXTERNAL_LLVM_FALSE
+BUILD_EXTERNAL_LLVM_TRUE
 NO_MISSING_FIELD_INITIALIZERS
 NO_VARIADIC_MACROS
 BUILD_ARM_FALSE
@@ -760,10 +762,13 @@ THREAD_LIBS
 DEBUG_BUILD_FALSE
 DEBUG_BUILD_TRUE
 subdirs
+LLVMCONFIG_LIBFILES
+LLVMCONFIG_LIBS
+LLVMCONFIG_LDFLAGS
+LLVMCONFIG_CXXFLAGS
 GMAKE
 ifGNUmake
 CXXCPP
-CPP
 OTOOL64
 OTOOL
 LIPO
@@ -779,19 +784,20 @@ ac_ct_DUMPBIN
 DUMPBIN
 LD
 FGREP
+SED
+LIBTOOL
+MAINT
+MAINTAINER_MODE_FALSE
+MAINTAINER_MODE_TRUE
 EGREP
 GREP
-SED
+CPP
 am__fastdepCC_FALSE
 am__fastdepCC_TRUE
 CCDEPMODE
 ac_ct_CC
 CFLAGS
 CC
-LIBTOOL
-MAINT
-MAINTAINER_MODE_FALSE
-MAINTAINER_MODE_TRUE
 am__fastdepCXX_FALSE
 am__fastdepCXX_TRUE
 CXXDEPMODE
@@ -895,6 +901,7 @@ with_pic
 enable_fast_install
 with_gnu_ld
 enable_libtool_lock
+with_system_llvm
 enable_llvm
 enable_optimized
 enable_all_jit_targets
@@ -974,8 +981,9 @@ do
   fi
 
   case $ac_option in
-  *=*)	ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
-  *)	ac_optarg=yes ;;
+  *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+  *=)   ac_optarg= ;;
+  *)    ac_optarg=yes ;;
   esac
 
   # Accept the important Cygnus configure options, so we can diagnose typos.
@@ -1020,7 +1028,7 @@ do
     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"
+      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
@@ -1046,7 +1054,7 @@ do
     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"
+      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
@@ -1250,7 +1258,7 @@ do
     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"
+      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
@@ -1266,7 +1274,7 @@ do
     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"
+      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
@@ -1296,8 +1304,8 @@ do
   | --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."
+  -*) as_fn_error $? "unrecognized option: \`$ac_option'
+Try \`$0 --help' for more information"
     ;;
 
   *=*)
@@ -1305,7 +1313,7 @@ Try \`$0 --help' for more information."
     # 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'" ;;
+      as_fn_error $? "invalid variable name: \`$ac_envvar'" ;;
     esac
     eval $ac_envvar=\$ac_optarg
     export $ac_envvar ;;
@@ -1323,13 +1331,13 @@ done
 
 if test -n "$ac_prev"; then
   ac_option=--`echo $ac_prev | sed 's/_/-/g'`
-  as_fn_error "missing argument to $ac_option"
+  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" ;;
+    fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;;
     *)     $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;;
   esac
 fi
@@ -1352,7 +1360,7 @@ do
     [\\/$]* | ?:[\\/]* )  continue;;
     NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
   esac
-  as_fn_error "expected an absolute directory name for --$ac_var: $ac_val"
+  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'
@@ -1366,8 +1374,8 @@ target=$target_alias
 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
+    $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
@@ -1382,9 +1390,9 @@ 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"
+  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"
+  as_fn_error $? "pwd does not report name of working directory"
 
 
 # Find the source files, if location was not specified.
@@ -1423,11 +1431,11 @@ else
 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"
+  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"
+	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
@@ -1467,7 +1475,7 @@ Configuration:
       --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
+  -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
@@ -1554,6 +1562,8 @@ Optional Packages:
   --with-pic              try to use only PIC/non-PIC objects [default=use
                           both]
   --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
+  -with-system-llvm       Use system llvm instead of built-in, requires full
+                          path to llvm-config
 
 Some influential environment variables:
   CXX         C++ compiler command
@@ -1635,9 +1645,9 @@ test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
 libclamavc++ configure devel
-generated by GNU Autoconf 2.65
+generated by GNU Autoconf 2.67
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+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
@@ -1724,13 +1734,13 @@ fi
 
 } # 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 ()
+# 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
-  rm -f conftest.$ac_objext conftest$ac_exeext
   if { { ac_try="$ac_link"
 case "(($ac_try" in
   *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
@@ -1738,7 +1748,48 @@ case "(($ac_try" in
 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
+  (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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+  as_fn_set_status $ac_retval
+
+} # ac_fn_c_try_run
+
+# 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
@@ -1746,29 +1797,21 @@ $as_echo "$ac_try_echo"; } >&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 $ac_status = 0; } > conftest.i && {
+	 test -z "$ac_c_preproc_warn_flag$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
+    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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_link
+} # ac_fn_c_try_cpp
 
 # ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES
 # -------------------------------------------------------
@@ -1779,7 +1822,7 @@ 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 { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1801,20 +1844,21 @@ $as_echo "$ac_res" >&6; }
 
 } # 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 ()
+# 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
-  if { { ac_try="$ac_cpp conftest.$ac_ext"
+  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_cpp conftest.$ac_ext") 2>conftest.err
+  (eval "$ac_link") 2>conftest.err
   ac_status=$?
   if test -s conftest.err; then
     grep -v '^ *+' conftest.err >conftest.er1
@@ -1822,63 +1866,29 @@ $as_echo "$ac_try_echo"; } >&5
     mv -f conftest.er1 conftest.err
   fi
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } >/dev/null && {
-	 test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+  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
-  eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; 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
+	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; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
   as_fn_set_status $ac_retval
 
-} # ac_fn_c_try_run
+} # ac_fn_c_try_link
 
 # ac_fn_c_check_func LINENO FUNC VAR
 # ----------------------------------
@@ -1888,7 +1898,7 @@ 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 { as_var=$3; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${$3+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
@@ -1968,7 +1978,7 @@ $as_echo "$ac_try_echo"; } >&5
     mv -f conftest.er1 conftest.err
   fi
   $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
-  test $ac_status = 0; } >/dev/null && {
+  test $ac_status = 0; } > conftest.i && {
 	 test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
 	 test ! -s conftest.err
        }; then :
@@ -2076,7 +2086,7 @@ This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
 It was created by libclamavc++ $as_me devel, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   $ $0 $@
 
@@ -2186,11 +2196,9 @@ trap 'exit_status=$?
   {
     echo
 
-    cat <<\_ASBOX
-## ---------------- ##
+    $as_echo "## ---------------- ##
 ## Cache variables. ##
-## ---------------- ##
-_ASBOX
+## ---------------- ##"
     echo
     # The following way of writing the cache mishandles newlines in values,
 (
@@ -2224,11 +2232,9 @@ $as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;;
 )
     echo
 
-    cat <<\_ASBOX
-## ----------------- ##
+    $as_echo "## ----------------- ##
 ## Output variables. ##
-## ----------------- ##
-_ASBOX
+## ----------------- ##"
     echo
     for ac_var in $ac_subst_vars
     do
@@ -2241,11 +2247,9 @@ _ASBOX
     echo
 
     if test -n "$ac_subst_files"; then
-      cat <<\_ASBOX
-## ------------------- ##
+      $as_echo "## ------------------- ##
 ## File substitutions. ##
-## ------------------- ##
-_ASBOX
+## ------------------- ##"
       echo
       for ac_var in $ac_subst_files
       do
@@ -2259,11 +2263,9 @@ _ASBOX
     fi
 
     if test -s confdefs.h; then
-      cat <<\_ASBOX
-## ----------- ##
+      $as_echo "## ----------- ##
 ## confdefs.h. ##
-## ----------- ##
-_ASBOX
+## ----------- ##"
       echo
       cat confdefs.h
       echo
@@ -2318,7 +2320,12 @@ _ACEOF
 ac_site_file1=NONE
 ac_site_file2=NONE
 if test -n "$CONFIG_SITE"; then
-  ac_site_file1=$CONFIG_SITE
+  # 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
@@ -2333,7 +2340,11 @@ do
     { $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"
+    . "$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
 
@@ -2409,7 +2420,7 @@ if $ac_cache_corrupted; then
 $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
+  as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5
 fi
 ## -------------------- ##
 ## Main body of script. ##
@@ -2424,16 +2435,22 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 ac_aux_dir=
 for ac_dir in config "$srcdir"/config; do
-  for ac_t in install-sh install.sh shtool; do
-    if test -f "$ac_dir/$ac_t"; then
-      ac_aux_dir=$ac_dir
-      ac_install_sh="$ac_aux_dir/$ac_t -c"
-      break 2
-    fi
-  done
+  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 config \"$srcdir\"/config" "$LINENO" 5
+  as_fn_error $? "cannot find install-sh, install.sh, or shtool in config \"$srcdir\"/config" "$LINENO" 5
 fi
 
 # These three variables are undocumented and unsupported,
@@ -2451,7 +2468,7 @@ ac_config_headers="$ac_config_headers clamavcxx-config.h"
 
 # 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_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; }
@@ -2462,16 +2479,16 @@ else
 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
+  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
+  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;;
+*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5 ;;
 esac
 build=$ac_cv_build
 ac_save_IFS=$IFS; IFS='-'
@@ -2496,7 +2513,7 @@ else
   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
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5
 fi
 
 fi
@@ -2504,7 +2521,7 @@ fi
 $as_echo "$ac_cv_host" >&6; }
 case $ac_cv_host in
 *-*-*) ;;
-*) as_fn_error "invalid value of canonical host" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5 ;;
 esac
 host=$ac_cv_host
 ac_save_IFS=$IFS; IFS='-'
@@ -2529,7 +2546,7 @@ else
   ac_cv_target=$ac_cv_host
 else
   ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` ||
-    as_fn_error "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
+    as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5
 fi
 
 fi
@@ -2537,7 +2554,7 @@ fi
 $as_echo "$ac_cv_target" >&6; }
 case $ac_cv_target in
 *-*-*) ;;
-*) as_fn_error "invalid value of canonical target" "$LINENO" 5;;
+*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5 ;;
 esac
 target=$ac_cv_target
 ac_save_IFS=$IFS; IFS='-'
@@ -2665,11 +2682,11 @@ am_lf='
 '
 case `pwd` in
   *[\\\"\#\$\&\'\`$am_lf]*)
-    as_fn_error "unsafe absolute working directory name" "$LINENO" 5;;
+    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;;
+    as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5 ;;
 esac
 
 # Do `set' in a subshell so we don't clobber the current shell's
@@ -2691,7 +2708,7 @@ if (
       # 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
+      as_fn_error $? "ls -t appears to fail.  Make sure there is not a broken
 alias in your environment" "$LINENO" 5
    fi
 
@@ -2701,7 +2718,7 @@ then
    # Ok.
    :
 else
-   as_fn_error "newly created file is older than distributed files!
+   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
@@ -2939,7 +2956,7 @@ done
 $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 { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then :
+if eval "test \"\${ac_cv_prog_make_${ac_make}_set+set}\"" = set; then :
   $as_echo_n "(cached) " >&6
 else
   cat >conftest.make <<\_ACEOF
@@ -2947,7 +2964,7 @@ SHELL = /bin/sh
 all:
 	@echo '@@@%%%=$(MAKE)=@@@%%%'
 _ACEOF
-# GNU make sometimes prints "make[1]: Entering...", which would confuse us.
+# 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;;
@@ -2981,7 +2998,7 @@ if test "`cd $srcdir && pwd`" != "`pwd`"; then
   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
+    as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5
   fi
 fi
 
@@ -3346,9 +3363,8 @@ 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_set_status 77
-as_fn_error "C++ compiler cannot create executables
-See \`config.log' for more details." "$LINENO" 5; }; }
+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; }
@@ -3390,8 +3406,8 @@ 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; }
+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
@@ -3448,9 +3464,9 @@ $as_echo "$ac_try_echo"; } >&5
     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.
+as_fn_error $? "cannot run C++ compiled programs.
 If you meant to cross compile, use \`--host'.
-See \`config.log' for more details." "$LINENO" 5; }
+See \`config.log' for more details" "$LINENO" 5 ; }
     fi
   fi
 fi
@@ -3501,8 +3517,8 @@ 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; }
+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
@@ -3820,67 +3836,6 @@ else
 fi
 
 
-
-if test "$cxxset" != set; then
-# don't use the default -O2 -g because -g bloats the C++ binaries too much
-  CXXFLAGS="-O2"
-fi
-case "$target_os" in
-solaris*)
-  CXXFLAGS="$CXXFLAGS -include llvm/include/llvm/System/Solaris.h"
-  { $as_echo "$as_me:${as_lineno-$LINENO}: Building on Solaris" >&5
-$as_echo "$as_me: Building on Solaris" >&6;}
-  ;;
-esac
-
-
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
-$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
-    # Check whether --enable-maintainer-mode was given.
-if test "${enable_maintainer_mode+set}" = set; then :
-  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
-else
-  USE_MAINTAINER_MODE=no
-fi
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
-$as_echo "$USE_MAINTAINER_MODE" >&6; }
-   if test $USE_MAINTAINER_MODE = yes; then
-  MAINTAINER_MODE_TRUE=
-  MAINTAINER_MODE_FALSE='#'
-else
-  MAINTAINER_MODE_TRUE='#'
-  MAINTAINER_MODE_FALSE=
-fi
-
-  MAINT=$MAINTAINER_MODE_TRUE
-
-
-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.2.6b'
-macro_revision='1.3017'
-
-
-
-
-
-
-
-
-
-
-
-
-
-ltmain="$ac_aux_dir/ltmain.sh"
-
 ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -4181,8 +4136,8 @@ 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; }
+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
@@ -4548,86 +4503,143 @@ else
 fi
 
 
-{ $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 test "${ac_cv_path_SED+set}" = set; then :
+
+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 test "${ac_cv_prog_CPP+set}" = set; 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
+      # 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
-  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
+  # Use a header file that comes with gcc, so configuring glibc
+  # with a fresh cross-compiler works.
+  # Prefer <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> 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 <limits.h>
+#else
+# include <assert.h>
+#endif
+		     Syntax error
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
 
-      $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
+  # 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 <ac_nonexistent.h>
+_ACEOF
+if ac_fn_c_try_cpp "$LINENO"; then :
+  # Broken: success on invalid input.
+continue
+else
+  # Passes both tests.
+ac_preproc_ok=:
+break
 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//"
-
+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 <limits.h> to <assert.h> if __STDC__ is defined, since
+  # <limits.h> 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 <limits.h>
+#else
+# include <assert.h>
+#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 <ac_nonexistent.h>
+_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 grep that handles long lines and -e" >&5
@@ -4681,7 +4693,7 @@ esac
   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
+    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
@@ -4747,7 +4759,7 @@ esac
   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
+    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
@@ -4760,6 +4772,502 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
  EGREP="$ac_cv_path_EGREP"
 
 
+{ $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 test "${ac_cv_header_stdc+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+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 <string.h>
+
+_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 <stdlib.h>
+
+_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 <ctype.h>
+#include <stdlib.h>
+#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
+
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5
+$as_echo_n "checking whether byte ordering is bigendian... " >&6; }
+if test "${ac_cv_c_bigendian+set}" = set; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_c_bigendian=unknown
+    # See if we're dealing with a universal compiler.
+    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#ifndef __APPLE_CC__
+	       not a universal capable compiler
+	     #endif
+	     typedef int dummy;
+
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+	# Check for potential -arch flags.  It is not universal unless
+	# there are at least two -arch flags with different values.
+	ac_arch=
+	ac_prev=
+	for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do
+	 if test -n "$ac_prev"; then
+	   case $ac_word in
+	     i?86 | x86_64 | ppc | ppc64)
+	       if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then
+		 ac_arch=$ac_word
+	       else
+		 ac_cv_c_bigendian=universal
+		 break
+	       fi
+	       ;;
+	   esac
+	   ac_prev=
+	 elif test "x$ac_word" = "x-arch"; then
+	   ac_prev=arch
+	 fi
+       done
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if sys/param.h defines the BYTE_ORDER macro.
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+	     #include <sys/param.h>
+
+int
+main ()
+{
+#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \
+		     && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \
+		     && LITTLE_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+		#include <sys/param.h>
+
+int
+main ()
+{
+#if BYTE_ORDER != BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+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
+    if test $ac_cv_c_bigendian = unknown; then
+      # See if <limits.h> defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris).
+      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN)
+	      bogus endian macros
+	     #endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  # It does; now see whether it defined to _BIG_ENDIAN or not.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <limits.h>
+
+int
+main ()
+{
+#ifndef _BIG_ENDIAN
+		 not big endian
+		#endif
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_c_bigendian=yes
+else
+  ac_cv_c_bigendian=no
+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
+    if test $ac_cv_c_bigendian = unknown; then
+      # Compile a test program.
+      if test "$cross_compiling" = yes; then :
+  # Try to guess by grepping values from an object file.
+	 cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+short int ascii_mm[] =
+		  { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 };
+		short int ascii_ii[] =
+		  { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 };
+		int use_ascii (int i) {
+		  return ascii_mm[i] + ascii_ii[i];
+		}
+		short int ebcdic_ii[] =
+		  { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+		short int ebcdic_mm[] =
+		  { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+		int use_ebcdic (int i) {
+		  return ebcdic_mm[i] + ebcdic_ii[i];
+		}
+		extern int foo;
+
+int
+main ()
+{
+return use_ascii (foo) == use_ebcdic (foo);
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  if grep BIGenDianSyS conftest.$ac_objext >/dev/null; then
+	      ac_cv_c_bigendian=yes
+	    fi
+	    if grep LiTTleEnDian conftest.$ac_objext >/dev/null ; then
+	      if test "$ac_cv_c_bigendian" = unknown; then
+		ac_cv_c_bigendian=no
+	      else
+		# finding both strings is unlikely to happen, but who knows?
+		ac_cv_c_bigendian=unknown
+	      fi
+	    fi
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+$ac_includes_default
+int
+main ()
+{
+
+	     /* Are we little or big endian?  From Harbison&Steele.  */
+	     union
+	     {
+	       long int l;
+	       char c[sizeof (long int)];
+	     } u;
+	     u.l = 1;
+	     return u.c[sizeof (long int) - 1] == 1;
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  ac_cv_c_bigendian=no
+else
+  ac_cv_c_bigendian=yes
+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_c_bigendian" >&5
+$as_echo "$ac_cv_c_bigendian" >&6; }
+ case $ac_cv_c_bigendian in #(
+   yes)
+     $as_echo "#define WORDS_BIGENDIAN 1" >>confdefs.h
+;; #(
+   no)
+      ;; #(
+   universal)
+
+$as_echo "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h
+
+     ;; #(
+   *)
+     as_fn_error $? "unknown endianness
+ presetting ac_cv_c_bigendian=no (or yes) will help" "$LINENO" 5  ;;
+ esac
+
+
+if test "$cxxset" != set; then
+# don't use the default -O2 -g because -g bloats the C++ binaries too much
+  CXXFLAGS="-O2"
+fi
+case "$target_os" in
+solaris*)
+  CXXFLAGS="$CXXFLAGS -include llvm/include/llvm/System/Solaris.h"
+  { $as_echo "$as_me:${as_lineno-$LINENO}: Building on Solaris" >&5
+$as_echo "$as_me: Building on Solaris" >&6;}
+  ;;
+esac
+
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5
+$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; }
+    # Check whether --enable-maintainer-mode was given.
+if test "${enable_maintainer_mode+set}" = set; then :
+  enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval
+else
+  USE_MAINTAINER_MODE=no
+fi
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5
+$as_echo "$USE_MAINTAINER_MODE" >&6; }
+   if test $USE_MAINTAINER_MODE = yes; then
+  MAINTAINER_MODE_TRUE=
+  MAINTAINER_MODE_FALSE='#'
+else
+  MAINTAINER_MODE_TRUE='#'
+  MAINTAINER_MODE_FALSE=
+fi
+
+  MAINT=$MAINTAINER_MODE_TRUE
+
+
+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.2.6b'
+macro_revision='1.3017'
+
+
+
+
+
+
+
+
+
+
+
+
+
+ltmain="$ac_aux_dir/ltmain.sh"
+
+{ $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 test "${ac_cv_path_SED+set}" = set; 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 fgrep" >&5
 $as_echo_n "checking for fgrep... " >&6; }
 if test "${ac_cv_path_FGREP+set}" = set; then :
@@ -4814,7 +5322,7 @@ esac
   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
+    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
@@ -4930,7 +5438,7 @@ 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
+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 test "${lt_cv_prog_gnu_ld+set}" = set; then :
@@ -5132,13 +5640,13 @@ if test "${lt_cv_nm_interface+set}" = set; then :
 else
   lt_cv_nm_interface="BSD nm"
   echo "int some_variable = 0;" > conftest.$ac_ext
-  (eval echo "\"\$as_me:5135: $ac_compile\"" >&5)
+  (eval echo "\"\$as_me:5643: $ac_compile\"" >&5)
   (eval "$ac_compile" 2>conftest.err)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5138: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
+  (eval echo "\"\$as_me:5646: $NM \\\"conftest.$ac_objext\\\"\"" >&5)
   (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out)
   cat conftest.err >&5
-  (eval echo "\"\$as_me:5141: output\"" >&5)
+  (eval echo "\"\$as_me:5649: output\"" >&5)
   cat conftest.out >&5
   if $GREP 'External.*some_variable' conftest.out > /dev/null; then
     lt_cv_nm_interface="MS dumpbin"
@@ -6312,7 +6820,6 @@ fi
 
 
 
-
 # Check whether --enable-libtool-lock was given.
 if test "${enable_libtool_lock+set}" = set; then :
   enableval=$enable_libtool_lock;
@@ -6344,7 +6851,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 6347 "configure"' > conftest.$ac_ext
+  echo '#line 6854 "configure"' > conftest.$ac_ext
   if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -7091,274 +7598,6 @@ $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
     ;;
   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 test "${ac_cv_prog_CPP+set}" = set; 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> 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 <limits.h>
-#else
-# include <assert.h>
-#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.$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 <ac_nonexistent.h>
-_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.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f 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 <limits.h> to <assert.h> if __STDC__ is defined, since
-  # <limits.h> 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 <limits.h>
-#else
-# include <assert.h>
-#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.$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 <ac_nonexistent.h>
-_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.$ac_ext
-
-done
-# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f 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 test "${ac_cv_header_stdc+set}" = set; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-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 <string.h>
-
-_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 <stdlib.h>
-
-_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 <ctype.h>
-#include <stdlib.h>
-#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
-"
-eval as_val=\$$as_ac_Header
-   if test "x$as_val" = 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
@@ -7799,7 +8038,7 @@ else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -7815,11 +8054,11 @@ else
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
   break
 fi
@@ -7858,7 +8097,7 @@ else
   # Broken: fails on valid input.
 continue
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
   # OK, works on sane cases.  Now check whether nonexistent headers
   # can be detected and how.
@@ -7874,11 +8113,11 @@ else
 ac_preproc_ok=:
 break
 fi
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.err conftest.i conftest.$ac_ext
 
 done
 # Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
-rm -f conftest.err conftest.$ac_ext
+rm -f conftest.i conftest.err conftest.$ac_ext
 if $ac_preproc_ok; then :
 
 else
@@ -8400,11 +8639,11 @@ else
    -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:8403: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8642: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8407: \$? = $ac_status" >&5
+   echo "$as_me:8646: \$? = $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.
@@ -8739,11 +8978,11 @@ else
    -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:8742: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:8981: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:8746: \$? = $ac_status" >&5
+   echo "$as_me:8985: \$? = $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.
@@ -8844,11 +9083,11 @@ else
    -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:8847: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9086: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8851: \$? = $ac_status" >&5
+   echo "$as_me:9090: \$? = $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
@@ -8899,11 +9138,11 @@ else
    -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:8902: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:9141: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:8906: \$? = $ac_status" >&5
+   echo "$as_me:9145: \$? = $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
@@ -11283,7 +11522,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11286 "configure"
+#line 11525 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11379,7 +11618,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11382 "configure"
+#line 11621 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11794,7 +12033,7 @@ 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
+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 test "${lt_cv_prog_gnu_ld+set}" = set; then :
@@ -13335,11 +13574,11 @@ else
    -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:13338: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13577: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13342: \$? = $ac_status" >&5
+   echo "$as_me:13581: \$? = $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.
@@ -13434,11 +13673,11 @@ else
    -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:13437: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13676: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13441: \$? = $ac_status" >&5
+   echo "$as_me:13680: \$? = $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
@@ -13486,11 +13725,11 @@ else
    -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:13489: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13728: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13493: \$? = $ac_status" >&5
+   echo "$as_me:13732: \$? = $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
@@ -14454,7 +14693,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
 if test "$GXX" != "yes"; then
-    as_fn_error "GNU C++ compiler not found, not building LLVM" "$LINENO" 5
+    as_fn_error $? "GNU C++ compiler not found, not building LLVM" "$LINENO" 5
 fi
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU make" >&5
@@ -14486,9 +14725,50 @@ $as_echo "\"Not found\"" >&6; };
 GMAKE="$llvm_cv_gnu_make_command"
 
 
+llvmconfig=
+
+# Check whether --with-system-llvm was given.
+if test "${with_system_llvm+set}" = set; then :
+  withval=$with_system_llvm; case "$withval" in
+  yes)
+    as_fn_error $? "--with-system-llvm needs full path to llvm-config" "$LINENO" 5
+    ;;
+  no) ;;
+  *)
+    llvmconfig="$withval"
+    llvmver=`$llvmconfig --version`
+    if test "$llvmver" != "2.8" -a "$llvmver" != "2.8svn" -a "$llvmver" != "2.8rc"; then
+	as_fn_error $? "LLVM 2.8 or 2.8svn required, but \"$llvmver\" found" "$LINENO" 5
+    fi
+    LLVMCONFIG_CXXFLAGS=`$llvmconfig --cxxflags`
+
+    LLVMCONFIG_LDFLAGS=`$llvmconfig --ldflags`
+
+    LLVMCONFIG_LIBS=`$llvmconfig --libs jit nativecodegen scalaropts ipo`
+
+    LLVMCONFIG_LIBFILES=`$llvmconfig --libfiles jit nativecodegen scalaropts ipo`
+
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Using external LLVM" >&5
+$as_echo "$as_me: Using external LLVM" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: CXXFLAGS from llvm-config: $LLVMCONFIG_CXXFLAGS" >&5
+$as_echo "$as_me: CXXFLAGS from llvm-config: $LLVMCONFIG_CXXFLAGS" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: LDFLAGS from llvm-config: $LLVMCONFIG_LDFLAGS" >&5
+$as_echo "$as_me: LDFLAGS from llvm-config: $LLVMCONFIG_LDFLAGS" >&6;}
+    { $as_echo "$as_me:${as_lineno-$LINENO}: LIBS from llvm-config: $LLVMCONFIG_LIBS" >&5
+$as_echo "$as_me: LIBS from llvm-config: $LLVMCONFIG_LIBS" >&6;}
+    ;;
+  esac
+
+fi
+
+
+if test "x$llvmconfig" = "x"; then
+
 
 subdirs="$subdirs llvm"
 
+fi
+
 # Check whether --enable-llvm was given.
 if test "${enable_llvm+set}" = set; then :
   enableval=$enable_llvm; enable_llvm=$enableval
@@ -14530,21 +14810,19 @@ if test "$enable_alltargets" = "yes"; then
 else
     new_args="$ac_configure_args --enable-targets=host-only --enable-bindings=none --enable-libffi=no --without-llvmgcc --without-llvmgxx"
 fi
-echo "$new_args"
 ac_configure_args=`echo $new_args | sed -e 's/-Werror //g'`
-echo "$ac_configure_args"
 
 if test "$enable_llvm" = "auto"; then
                 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for supported C++ compiler version" >&5
 $as_echo_n "checking for supported C++ compiler version... " >&6; }
     gxx_version=`${CXX} -dumpversion` ||
-    as_fn_error "Unable to get GNU C++ compiler version" "$LINENO" 5
+    as_fn_error $? "Unable to get GNU C++ compiler version" "$LINENO" 5
     case "${gxx_version}" in
-     [023].*)
-	as_fn_error "C++ compiler too old (${gxx_version})" "$LINENO" 5
+     [03].*)
+	as_fn_error $? "C++ compiler too old (${gxx_version})" "$LINENO" 5
         ;;
      4.1.[1]*)
-        as_fn_error "C++ compiler is buggy" "$LINENO" 5
+        as_fn_error $? "C++ compiler is buggy" "$LINENO" 5
         ;;
      *)
         { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok (${gxx_version})" >&5
@@ -14561,15 +14839,15 @@ $as_echo_n "checking for supported OS... " >&6; }
 $as_echo "ok ($target_cpu-$target_os)" >&6; }
 		    ;;
 		*)
-                    as_fn_error "OS $target_os is not supported, not building LLVM" "$LINENO" 5
+                    as_fn_error $? "OS $target_os is not supported, not building LLVM" "$LINENO" 5
                     ;;
 	    esac
 	    ;;
 	alpha*|arm*)
-	    as_fn_error "CPU support is untested, not building LLVM" "$LINENO" 5
+	    as_fn_error $? "CPU support is untested, not building LLVM" "$LINENO" 5
 	    ;;
 	*)
-	    as_fn_error "Unsupported CPU for JIT: $target_cpu, not building LLVM" "$LINENO" 5
+	    as_fn_error $? "Unsupported CPU for JIT: $target_cpu, not building LLVM" "$LINENO" 5
 	    ;;
     esac
 fi
@@ -14601,8 +14879,8 @@ $as_echo "yes" >&6; }
 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 "failed
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "failed
+See \`config.log' for more details" "$LINENO" 5 ; }
 
 fi
 rm -f core conftest.err conftest.$ac_objext \
@@ -14626,8 +14904,8 @@ $as_echo "yes" >&6; }
 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 "failed
-See \`config.log' for more details." "$LINENO" 5; }
+as_fn_error $? "failed
+See \`config.log' for more details" "$LINENO" 5 ; }
 fi
 rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
   conftest.$ac_objext conftest.beam conftest.$ac_ext
@@ -14679,6 +14957,18 @@ if test "$enable_alltargets" = "yes"; then
 	build_ppc=yes
 	build_arm=yes
 fi
+if test "$ac_cv_c_bigendian" = "universal"; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: Universal build detected" >&5
+$as_echo "$as_me: Universal build detected" >&6;}
+    build_x86=yes
+    build_ppc=yes
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Building X86 backend: $build_x86" >&5
+$as_echo "$as_me: Building X86 backend: $build_x86" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Building PPC backend: $build_ppc" >&5
+$as_echo "$as_me: Building PPC backend: $build_ppc" >&6;}
+{ $as_echo "$as_me:${as_lineno-$LINENO}: Building ARM backend: $build_arm" >&5
+$as_echo "$as_me: Building ARM backend: $build_arm" >&6;}
  if test "$build_x86" = "yes"; then
   BUILD_X86_TRUE=
   BUILD_X86_FALSE='#'
@@ -14713,6 +15003,15 @@ NO_MISSING_FIELD_INITIALIZERS=`$CXX -Wno-missing-field-initializers -fsyntax-onl
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS" >&5
 $as_echo "$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS" >&6; }
 
+ if test -n "$llvmconfig"; then
+  BUILD_EXTERNAL_LLVM_TRUE=
+  BUILD_EXTERNAL_LLVM_FALSE='#'
+else
+  BUILD_EXTERNAL_LLVM_TRUE='#'
+  BUILD_EXTERNAL_LLVM_FALSE=
+fi
+
+
 ac_config_files="$ac_config_files Makefile"
 
 cat >confcache <<\_ACEOF
@@ -14798,6 +15097,7 @@ 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$//'
@@ -14821,39 +15121,44 @@ else
 fi
 
 if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
-  as_fn_error "conditional \"AMDEP\" was never defined.
+  as_fn_error $? "conditional \"AMDEP\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCXX\" was never defined.
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
-if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
-  as_fn_error "conditional \"MAINTAINER_MODE\" was never defined.
+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 "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCC\" was never defined.
+
+if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then
+  as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
-  as_fn_error "conditional \"am__fastdepCXX\" was never defined.
+  as_fn_error $? "conditional \"am__fastdepCXX\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${DEBUG_BUILD_TRUE}" && test -z "${DEBUG_BUILD_FALSE}"; then
-  as_fn_error "conditional \"DEBUG_BUILD\" was never defined.
+  as_fn_error $? "conditional \"DEBUG_BUILD\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${BUILD_X86_TRUE}" && test -z "${BUILD_X86_FALSE}"; then
-  as_fn_error "conditional \"BUILD_X86\" was never defined.
+  as_fn_error $? "conditional \"BUILD_X86\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${BUILD_PPC_TRUE}" && test -z "${BUILD_PPC_FALSE}"; then
-  as_fn_error "conditional \"BUILD_PPC\" was never defined.
+  as_fn_error $? "conditional \"BUILD_PPC\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 if test -z "${BUILD_ARM_TRUE}" && test -z "${BUILD_ARM_FALSE}"; then
-  as_fn_error "conditional \"BUILD_ARM\" was never defined.
+  as_fn_error $? "conditional \"BUILD_ARM\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
+if test -z "${BUILD_EXTERNAL_LLVM_TRUE}" && test -z "${BUILD_EXTERNAL_LLVM_FALSE}"; then
+  as_fn_error $? "conditional \"BUILD_EXTERNAL_LLVM\" was never defined.
 Usually this means the macro was only invoked conditionally." "$LINENO" 5
 fi
 
@@ -15003,19 +15308,19 @@ export LANGUAGE
 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
 
 
-# as_fn_error ERROR [LINENO LOG_FD]
-# ---------------------------------
+# 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.
+# script with STATUS, using 1 if that was 0.
 as_fn_error ()
 {
-  as_status=$?; test $as_status -eq 0 && as_status=1
-  if test "$3"; then
-    as_lineno=${as_lineno-"$2"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
-    $as_echo "$as_me:${as_lineno-$LINENO}: error: $1" >&$3
+  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: $1" >&2
+  $as_echo "$as_me: error: $2" >&2
   as_fn_exit $as_status
 } # as_fn_error
 
@@ -15211,7 +15516,7 @@ $as_echo X"$as_dir" |
       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"
+  } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir"
 
 
 } # as_fn_mkdir_p
@@ -15265,7 +15570,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # values after options handling.
 ac_log="
 This file was extended by libclamavc++ $as_me devel, which was
-generated by GNU Autoconf 2.65.  Invocation command line was
+generated by GNU Autoconf 2.67.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
   CONFIG_HEADERS  = $CONFIG_HEADERS
@@ -15331,10 +15636,10 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
 libclamavc++ config.status devel
-configured by $0, generated by GNU Autoconf 2.65,
+configured by $0, generated by GNU Autoconf 2.67,
   with options \\"\$ac_cs_config\\"
 
-Copyright (C) 2009 Free Software Foundation, Inc.
+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."
 
@@ -15352,11 +15657,16 @@ 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
@@ -15378,6 +15688,7 @@ do
     $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;;
@@ -15390,7 +15701,7 @@ do
     ac_need_defaults=false;;
   --he | --h)
     # Conflict between --help and --header
-    as_fn_error "ambiguous option: \`$1'
+    as_fn_error $? "ambiguous option: \`$1'
 Try \`$0 --help' for more information.";;
   --help | --hel | -h )
     $as_echo "$ac_cs_usage"; exit ;;
@@ -15399,7 +15710,7 @@ Try \`$0 --help' for more information.";;
     ac_cs_silent=: ;;
 
   # This is an error.
-  -*) as_fn_error "unrecognized option: \`$1'
+  -*) as_fn_error $? "unrecognized option: \`$1'
 Try \`$0 --help' for more information." ;;
 
   *) as_fn_append ac_config_targets " $1"
@@ -15809,7 +16120,7 @@ do
     "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;;
     "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
 
-  *) as_fn_error "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
+  *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
   esac
 done
 
@@ -15847,7 +16158,7 @@ $debug ||
 {
   tmp=./conf$$-$RANDOM
   (umask 077 && mkdir "$tmp")
-} || as_fn_error "cannot create a temporary directory in ." "$LINENO" 5
+} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
 
 # Set up the scripts for CONFIG_FILES section.
 # No need to generate them if there are no CONFIG_FILES.
@@ -15864,7 +16175,7 @@ if test "x$ac_cr" = x; then
 fi
 ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' </dev/null 2>/dev/null`
 if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then
-  ac_cs_awk_cr='\r'
+  ac_cs_awk_cr='\\r'
 else
   ac_cs_awk_cr=$ac_cr
 fi
@@ -15878,18 +16189,18 @@ _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 '$'`
+  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
+    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
+    as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -15978,20 +16289,28 @@ if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then
 else
   cat
 fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
-  || as_fn_error "could not setup config files machinery" "$LINENO" 5
+  || as_fn_error $? "could not setup config files machinery" "$LINENO" 5
 _ACEOF
 
-# VPATH may cause trouble with some makes, so we remove $(srcdir),
-# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# 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[	 ]*=/{
-s/:*\$(srcdir):*/:/
-s/:*\${srcdir}:*/:/
-s/:*@srcdir@:*/:/
-s/^\([^=]*=[	 ]*\):*/\1/
+  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
@@ -16019,7 +16338,7 @@ for ac_last_try in false false :; do
   if test -z "$ac_t"; then
     break
   elif $ac_last_try; then
-    as_fn_error "could not make $CONFIG_HEADERS" "$LINENO" 5
+    as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
   else
     ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
   fi
@@ -16104,7 +16423,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 _ACAWK
 _ACEOF
 cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
-  as_fn_error "could not setup config headers machinery" "$LINENO" 5
+  as_fn_error $? "could not setup config headers machinery" "$LINENO" 5
 fi # test -n "$CONFIG_HEADERS"
 
 
@@ -16117,7 +16436,7 @@ do
   esac
   case $ac_mode$ac_tag in
   :[FHL]*:*);;
-  :L* | :C*:*) as_fn_error "invalid tag \`$ac_tag'" "$LINENO" 5;;
+  :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
   :[FH]-) ac_tag=-:-;;
   :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
   esac
@@ -16145,7 +16464,7 @@ do
 	   [\\/$]*) false;;
 	   *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
 	   esac ||
-	   as_fn_error "cannot find input file: \`$ac_f'" "$LINENO" 5;;
+	   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'"
@@ -16172,7 +16491,7 @@ $as_echo "$as_me: creating $ac_file" >&6;}
 
     case $ac_tag in
     *:-:* | *:-) cat >"$tmp/stdin" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5 ;;
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5  ;;
     esac
     ;;
   esac
@@ -16309,22 +16628,22 @@ s&@MKDIR_P@&$ac_MKDIR_P&;t t
 $ac_datarootdir_hack
 "
 eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
 
 test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
   { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
   { ac_out=`sed -n '/^[	 ]*datarootdir[	 ]*:*=/p' "$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
+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;}
+which seems to be undefined.  Please make sure it is defined" >&2;}
 
   rm -f "$tmp/stdin"
   case $ac_file in
   -) cat "$tmp/out" && rm -f "$tmp/out";;
   *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
   esac \
-  || as_fn_error "could not create $ac_file" "$LINENO" 5
+  || as_fn_error $? "could not create $ac_file" "$LINENO" 5
  ;;
   :H)
   #
@@ -16335,19 +16654,19 @@ which seems to be undefined.  Please make sure it is defined." >&2;}
       $as_echo "/* $configure_input  */" \
       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
     } >"$tmp/config.h" \
-      || as_fn_error "could not create $ac_file" "$LINENO" 5
+      || as_fn_error $? "could not create $ac_file" "$LINENO" 5
     if diff "$ac_file" "$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 "$tmp/config.h" "$ac_file" \
-	|| as_fn_error "could not create $ac_file" "$LINENO" 5
+	|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
     fi
   else
     $as_echo "/* $configure_input  */" \
       && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
-      || as_fn_error "could not create -" "$LINENO" 5
+      || as_fn_error $? "could not create -" "$LINENO" 5
   fi
 # Compute "$ac_file"'s index in $config_headers.
 _am_arg="$ac_file"
@@ -17299,7 +17618,7 @@ _ACEOF
 ac_clean_files=$ac_clean_files_save
 
 test $ac_write_fail = 0 ||
-  as_fn_error "write failure creating $CONFIG_STATUS" "$LINENO" 5
+  as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5
 
 
 # configure is writing to config.log, and then calls config.status.
@@ -17320,7 +17639,7 @@ if test "$no_create" != yes; then
   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 $?
+  $ac_cs_success || as_fn_exit 1
 fi
 
 #
@@ -17461,7 +17780,7 @@ $as_echo "$as_me: running $SHELL $ac_sub_configure $ac_sub_configure_args --cach
       # The eval makes quoting arguments work.
       eval "\$SHELL \"\$ac_sub_configure\" $ac_sub_configure_args \
 	   --cache-file=\"\$ac_sub_cache_file\" --srcdir=\"\$ac_srcdir\"" ||
-	as_fn_error "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
+	as_fn_error $? "$ac_sub_configure failed for $ac_dir" "$LINENO" 5
     fi
 
     cd "$ac_popdir"
diff --git a/libclamav/c++/configure.ac b/libclamav/c++/configure.ac
index b557e2f..1573c6c 100644
--- a/libclamav/c++/configure.ac
+++ b/libclamav/c++/configure.ac
@@ -25,6 +25,7 @@ AM_SILENT_RULES([yes])
 
 cxxset=${CXXFLAGS+set}
 AC_PROG_CXX
+AC_C_BIGENDIAN
 
 if test "$cxxset" != set; then
 # don't use the default -O2 -g because -g bloats the C++ binaries too much
@@ -46,7 +47,37 @@ fi
 AC_CHECK_GNU_MAKE
 GMAKE="$llvm_cv_gnu_make_command"
 AC_SUBST([GMAKE])
-AC_CONFIG_SUBDIRS([llvm])
+
+llvmconfig=
+AC_ARG_WITH([system-llvm], AC_HELP_STRING([-with-system-llvm],
+[Use system llvm instead of built-in, requires full path to llvm-config]),
+[case "$withval" in
+  yes)
+    AC_MSG_ERROR([--with-system-llvm needs full path to llvm-config])
+    ;;
+  no) ;;
+  *)
+    llvmconfig="$withval"
+    llvmver=`$llvmconfig --version`
+    if test "$llvmver" != "2.8" -a "$llvmver" != "2.8svn" -a "$llvmver" != "2.8rc"; then
+	AC_MSG_ERROR([LLVM 2.8 or 2.8svn required, but "$llvmver" found])
+    fi
+    AC_SUBST(LLVMCONFIG_CXXFLAGS, [`$llvmconfig --cxxflags`])
+    AC_SUBST(LLVMCONFIG_LDFLAGS, [`$llvmconfig --ldflags`])
+    AC_SUBST(LLVMCONFIG_LIBS, [`$llvmconfig --libs jit nativecodegen scalaropts ipo`])
+    AC_SUBST(LLVMCONFIG_LIBFILES, [`$llvmconfig --libfiles jit nativecodegen scalaropts ipo`])
+    AC_MSG_NOTICE([Using external LLVM])
+    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])
+    ;;
+  esac
+])
+
+if test "x$llvmconfig" = "x"; then
+    AC_CONFIG_SUBDIRS([llvm])
+fi
+
 AC_ARG_ENABLE([llvm],AC_HELP_STRING([-enable-llvm],
 				    [Enable 'llvm' JIT/verifier support @<:@default=auto@:>@]),
 				    [enable_llvm=$enableval], [enable_llvm="auto"])
@@ -72,9 +103,7 @@ if test "$enable_alltargets" = "yes"; then
 else
     new_args="$ac_configure_args --enable-targets=host-only --enable-bindings=none --enable-libffi=no --without-llvmgcc --without-llvmgxx"
 fi
-echo "$new_args"
 ac_configure_args=`echo $new_args | sed -e 's/-Werror //g'`
-echo "$ac_configure_args"
 
 if test "$enable_llvm" = "auto"; then
     dnl Do some sanity checks, and don't automatically build on platforms
@@ -84,7 +113,7 @@ if test "$enable_llvm" = "auto"; then
     gxx_version=`${CXX} -dumpversion` ||
     AC_MSG_ERROR([Unable to get GNU C++ compiler version])
     case "${gxx_version}" in
-     [[023]].*)
+     [[03]].*)
 	AC_MSG_ERROR([C++ compiler too old (${gxx_version})])
         ;;
      4.1.[[1]]*)
@@ -182,6 +211,14 @@ if test "$enable_alltargets" = "yes"; then
 	build_ppc=yes
 	build_arm=yes
 fi
+if test "$ac_cv_c_bigendian" = "universal"; then
+    AC_MSG_NOTICE([Universal build detected])
+    build_x86=yes
+    build_ppc=yes
+fi
+AC_MSG_NOTICE([Building X86 backend: $build_x86])
+AC_MSG_NOTICE([Building PPC backend: $build_ppc])
+AC_MSG_NOTICE([Building ARM backend: $build_arm])
 AM_CONDITIONAL(BUILD_X86, [test "$build_x86" = "yes"])
 AM_CONDITIONAL(BUILD_PPC, [test "$build_ppc" = "yes"])
 AM_CONDITIONAL(BUILD_ARM, [test "$build_arm" = "yes"])
@@ -191,6 +228,8 @@ CXX_FLAG_CHECK(NO_VARIADIC_MACROS, [-Wno-variadic-macros])
 CXX_FLAG_CHECK(NO_MISSING_FIELD_INITIALIZERS, [-Wno-missing-field-initializers])
 AC_MSG_RESULT([$NO_VARIADIC_MACROS $NO_MISSING_FIELD_INITIALIZERS])
 
+AM_CONDITIONAL(BUILD_EXTERNAL_LLVM, [test -n "$llvmconfig"])
+
 AC_OUTPUT([
     Makefile
 ])
diff --git a/libclamav/c++/detect.cpp b/libclamav/c++/detect.cpp
index 7994afa..c88fdfa 100644
--- a/libclamav/c++/detect.cpp
+++ b/libclamav/c++/detect.cpp
@@ -116,8 +116,10 @@ void cli_detect_env_jit(struct cli_environment *env)
 	    earch = arch_unknown;
 	    break;
     }
+#ifndef AC_APPLE_UNIVERSAL_BUILD
     if (conflicts)
 	warn_assumptions("CPU architecture", env->arch, earch);
+#endif
     if (earch != arch_unknown)
 	env->arch = earch;
 
diff --git a/libclamav/elf.c b/libclamav/elf.c
index 92e9bdd..c5f1071 100644
--- a/libclamav/elf.c
+++ b/libclamav/elf.c
@@ -596,6 +596,9 @@ int cli_elfheader(fmap_t *map, struct cli_exe_info *elfinfo)
 	return -1;
     }
 
+    if(!shnum)
+	return 0;
+
     shoff = EC32(file_hdr.e_shoff, conv);
 
     elfinfo->section = (struct cli_exe_section *) cli_calloc(elfinfo->nsections, sizeof(struct cli_exe_section));
diff --git a/libclamav/events.c b/libclamav/events.c
new file mode 100644
index 0000000..9ce6a46
--- /dev/null
+++ b/libclamav/events.c
@@ -0,0 +1,454 @@
+/*
+ *  (bytecode) events
+ *
+ *  Copyright (C) 2010 Sourcefire, Inc.
+ *
+ *  Authors: Török Edvin
+ *
+ *  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.
+ */
+#include "events.h"
+#include "others.h"
+#include "7z/7zCrc.h"
+#include "str.h"
+#include <string.h>
+#ifndef _WIN32
+#include <sys/time.h>
+#endif
+
+struct cli_event {
+    const char *name;
+    union ev_val u;
+    uint32_t count;
+    enum ev_type type:8;
+    enum multiple_handling multiple:8;
+};
+
+struct cli_events {
+    struct cli_event *events;
+    struct cli_event errors;
+    uint64_t oom_total;
+    unsigned max;
+    unsigned oom_count;
+};
+
+cli_events_t *cli_events_new(unsigned max_event)
+{
+    struct cli_events *ev = cli_calloc(1, sizeof(*ev));
+    if (!ev)
+	return NULL;
+    ev->max = max_event;
+    ev->events = cli_calloc(max_event, max_event * sizeof(*ev->events));
+    if (!ev->events) {
+	free(ev);
+	return NULL;
+    }
+    ev->errors.name = "errors";
+    ev->errors.type = ev_string;
+    ev->errors.multiple = multiple_chain;
+    return ev;
+}
+
+void cli_events_free(cli_events_t *ev)
+{
+    if (ev) {
+	//TODO: free components
+	free(ev->events);
+	free(ev);
+    }
+}
+
+void cli_event_error_oom(cli_events_t *ctx, uint32_t amount)
+{
+    if (!ctx)
+	return;
+    ctx->oom_total += amount;
+    ctx->oom_count++;
+    /* amount == 0 means error already reported, just incremenet count */
+    if (amount)
+	cli_errmsg("events: out of memory allocating %u bytes\n", amount);
+}
+
+int cli_event_define(cli_events_t *ctx, unsigned id,
+		     const char *name, enum ev_type type, enum multiple_handling multiple)
+{
+    struct cli_event *ev = &ctx->events[id];
+    if (id >= ctx->max) {
+	cli_event_error_str(ctx, "cli_event_define: event id out of range");
+	return -1;
+    }
+    if (multiple == multiple_sum &&
+	(type != ev_int && type != ev_time && type != ev_data_fast)) {
+	cli_event_error_str(ctx, "cli_event_define: can only sum ev_int, ev_time, and ev_data_fast");
+	return -1;
+    }
+    if (type == ev_data_fast && multiple != multiple_sum) {
+	cli_event_error_str(ctx, "cli_event_define: ev_data_fast can only be sumed");
+	return -1;
+    }
+    if (multiple == multiple_concat && type != ev_data) {
+	cli_event_error_str(ctx, "cli_event_define: only ev_data can be concatenated");
+	return -1;
+    }
+    /* default was ev_none */
+    ev->type = type;
+    ev->name = name;
+    ev->type = type;
+    ev->multiple = multiple;
+    if (type == ev_data_fast)
+	ev->u.v_int = CRC_INIT_VAL;
+    return 0;
+}
+
+static inline struct cli_event *get_event(cli_events_t *ctx, unsigned id)
+{
+    if (!ctx)
+	return NULL;
+    if (id >= ctx->max) {
+	cli_event_error_str(ctx, "event id out of range");
+	return NULL;
+    }
+    return &ctx->events[id];
+}
+
+static inline void ev_chain(cli_events_t *ctx, struct cli_event *ev, union ev_val *val)
+{
+    union ev_val *chain;
+    uint32_t siz = sizeof(*chain) * (ev->count + 1);
+
+    chain = cli_realloc(ev->u.v_chain, siz);
+    if (!chain) {
+	cli_event_error_oom(ctx, siz);
+	return;
+    }
+    ev->u.v_chain = chain;
+    ev->u.v_chain[ev->count] = *val;
+    ev->count++;
+}
+
+void cli_event_int(cli_events_t *ctx, unsigned id, uint64_t arg)
+{
+    struct cli_event *ev = get_event(ctx, id);
+    if (!ev)
+	return;
+    if (ev->type != ev_int) {
+	cli_event_error_str(ctx, "cli_event_int must be called with ev_int type");
+	return;
+    }
+    switch (ev->multiple) {
+	case multiple_last:
+	    ev->u.v_int = arg;
+	    break;
+	case multiple_sum:
+	    ev->u.v_int += arg;
+	    break;
+	case multiple_chain:
+	    {
+		union ev_val val;
+		val.v_int = arg;
+		ev_chain(ctx, ev, &val);
+		break;
+	    }
+    }
+}
+
+void cli_event_time_start(cli_events_t *ctx, unsigned id)
+{
+    struct timeval tv;
+    struct cli_event *ev = get_event(ctx, id);
+    if (!ev)
+	return;
+    if (ev->type != ev_time) {
+	cli_event_error_str(ctx, "cli_event_time* must be called with ev_time type");
+	return;
+    }
+    gettimeofday(&tv, NULL);
+    ev->u.v_int -= ((int64_t)tv.tv_sec * 1000000) + tv.tv_usec;
+}
+
+void cli_event_time_stop(cli_events_t *ctx, unsigned id)
+{
+    struct timeval tv;
+    struct cli_event *ev = get_event(ctx, id);
+    if (!ev)
+	return;
+    if (ev->type != ev_time) {
+	cli_event_error_str(ctx, "cli_event_time* must be called with ev_time type");
+	return;
+    }
+    gettimeofday(&tv, NULL);
+    ev->u.v_int += ((int64_t)tv.tv_sec * 1000000) + tv.tv_usec;
+}
+
+static void event_string(cli_events_t *ctx, struct cli_event *ev, const char *str)
+{
+    if (!str)
+	str = "";
+    switch (ev->multiple) {
+	case multiple_last:
+	    ev->u.v_string = str;
+	    ev->count++;
+	    break;
+	case multiple_chain:
+	    {
+		union ev_val val;
+		val.v_string = str;
+		ev_chain(ctx, ev, &val);
+		break;
+	    }
+    }
+}
+
+void cli_event_error_str(cli_events_t *ctx, const char *str)
+{
+    if (!ctx)
+	return;
+    cli_warnmsg("events: %s\n", str);
+    event_string(ctx, &ctx->errors, str);
+}
+
+void cli_event_string(cli_events_t *ctx, unsigned id, const char *str)
+{
+    struct cli_event *ev = get_event(ctx, id);
+    if (!ev)
+	return;
+    if (ev->type != ev_string) {
+	cli_event_error_str(ctx, "cli_event_string must be called with ev_string type");
+	return;
+    }
+    event_string(ctx, ev, str);
+}
+
+void cli_event_data(cli_events_t *ctx, unsigned id, const void *data, uint32_t len)
+{
+    struct cli_event *ev = get_event(ctx, id);
+    if (!ev)
+	return;
+    if (ev->type != ev_data) {
+	cli_event_error_str(ctx, "cli_event_string must be called with ev_data type");
+	return;
+    }
+    switch (ev->multiple) {
+	case multiple_last:
+	    {
+		void *v_data = cli_realloc2(ev->u.v_data, len);
+		if (v_data) {
+		    ev->u.v_data = v_data;
+		    memcpy(v_data, data, len);
+		    ev->count = len;
+		} else {
+		    cli_event_error_oom(ctx, len);
+		}
+		break;
+	    }
+	case multiple_concat:
+	    {
+		void *v_data = cli_realloc2(ev->u.v_data, ev->count + len);
+		if (v_data) {
+		    ev->u.v_data = v_data;
+		    memcpy((char*)v_data + ev->count, data, len);
+		    ev->count += len;
+		} else {
+		    cli_event_error_oom(ctx, ev->count + len);
+		}
+		break;
+	    }
+    }
+}
+
+void cli_event_fastdata(cli_events_t *ctx, unsigned id, const void *data, uint32_t len)
+{
+    struct cli_event *ev = get_event(ctx, id);
+    if (!ev)
+	return;
+    if (ev->type != ev_data_fast) {
+	cli_event_error_str(ctx, "cli_event_fastdata must be called with ev_data_fast");
+	return;
+    }
+    ev->u.v_int = CrcUpdate(ev->u.v_int, data, len);
+    ev->count += len;
+    /* when we are done we should invert all bits, but since we are just
+     * comparing it doesn't matter */
+}
+
+void cli_event_count(cli_events_t *ctx, unsigned id)
+{
+    cli_event_int(ctx, id, 1);
+}
+
+void cli_event_get(cli_events_t* ctx, unsigned id, union ev_val *val, uint32_t *count)
+{
+    struct cli_event *ev = get_event(ctx, id);
+    if (!ev)
+	return;
+    memcpy(val, &ev->u, sizeof(*val));
+    *count = ev->count;
+}
+
+static inline void ev_debug(enum ev_type type, union ev_val *val, uint32_t count)
+{
+    switch (type) {
+	case ev_string:
+	    cli_dbgmsg("\t(%u): %s\n", count, val->v_string);
+	    break;
+	case ev_data:
+	{
+	    char *d = cli_str2hex(val->v_data, count);
+	    cli_dbgmsg("\t%d bytes\n", count);
+	    cli_dbgmsg("\t%s\n", d);
+	    free(d);
+	    break;
+	}
+	case ev_data_fast:
+	    cli_dbgmsg("\t%08x checksum, %u bytes\n", (uint32_t)val->v_int, count);
+	    break;
+	case ev_int:
+	    cli_dbgmsg("\t(%u): 0x%llx\n", count, (long long)val->v_int);
+	    break;
+	case ev_time:
+	    cli_dbgmsg("\t(%u): %d.%06us\n", count, (signed)(val->v_int / 1000000),
+		       (unsigned)(val->v_int % 1000000));
+	    break;
+    }
+}
+
+static inline const char *evtype(enum ev_type type)
+{
+    switch (type) {
+	case ev_string:
+	    return "ev_string";
+	case ev_data:
+	    return "ev_data";
+	case ev_data_fast:
+	    return "ev_data_fast";
+	case ev_int:
+	    return "ev_data_int";
+	case ev_time:
+	    return "ev_time";
+	default:
+	    return "";
+    }
+}
+
+void cli_event_debug(cli_events_t *ctx, unsigned id)
+{
+    const char *tstr;
+    struct cli_event *ev = get_event(ctx, id);
+    if (!ev)
+	return;
+    tstr = evtype(ev->type);
+    if (ev->multiple == multiple_chain && ev->type != ev_data) {
+	unsigned i;
+	cli_dbgmsg("%s: ev_chain %u %s\n", ev->name, ev->count, tstr);
+	for (i=0;i<ev->count;i++)
+	    ev_debug(ev->type, &ev->u.v_chain[i], i);
+    } else {
+	cli_dbgmsg("%s: %s\n", ev->name, tstr);
+	ev_debug(ev->type, &ev->u, ev->count);
+    }
+}
+
+void cli_event_debug_all(cli_events_t *ctx)
+{
+    unsigned i;
+    for (i=0;i<ctx->max;i++) {
+	if (ctx->events[i].count)
+	    cli_event_debug(ctx, i);
+    }
+}
+
+static int ev_diff(enum ev_type type, union ev_val *v1, union ev_val *v2, uint32_t count)
+{
+    switch (type) {
+	case ev_data_fast:
+	case ev_int:
+	    return v1->v_int != v2->v_int;
+	case ev_string:
+	    return strcmp(v1->v_string, v2->v_string);
+	case ev_data:
+	    return memcmp(v1->v_data, v2->v_data, count);
+	case ev_time:
+	    return 0;
+    }
+    return 0;
+}
+
+int cli_event_diff(cli_events_t *ctx1, cli_events_t *ctx2, unsigned id)
+{
+    int diff = 0;
+    struct cli_event *ev1, *ev2;
+    ev1 = get_event(ctx1, id);
+    ev2 = get_event(ctx2, id);
+    if (!ev1 || !ev2)
+	return 1;
+    if (ev1->type != ev2->type ||
+	ev1->multiple != ev2->multiple ||
+	ev1->name != ev2->name) {
+	cli_warnmsg("cli_event_diff: comparing incompatible events");
+	return 1;
+    }
+    if (ev1->count != ev2->count) {
+	cli_dbgmsg("diff: %s count %u vs %u\n", ev1->name, ev1->count, ev2->count);
+	return 1;
+    }
+    diff = 0;
+    if (ev1->multiple == multiple_chain && ev1->type != ev_data) {
+	unsigned i;
+	for (i=0;i<ev1->count;i++) {
+	    unsigned di = ev_diff(ev1->type, &ev1->u.v_chain[i], &ev2->u.v_chain[i], ev1->count);
+	    if (di) {
+		if (!diff)
+		    cli_dbgmsg("diff: %s\n", ev1->name);
+		ev_debug(ev1->type, &ev1->u.v_chain[i], i);
+		ev_debug(ev2->type, &ev2->u.v_chain[i], i);
+	    }
+	    diff += di;
+	}
+    } else {
+	diff = ev_diff(ev1->type, &ev1->u, &ev2->u, ev1->count);
+	if (diff) {
+	    cli_dbgmsg("diff: %s\n", ev1->name);
+	    ev_debug(ev1->type, &ev1->u, ev1->count);
+	    ev_debug(ev2->type, &ev2->u, ev2->count);
+	}
+    }
+    if (!diff)
+	return 0;
+    return 1;
+}
+
+int cli_event_diff_all(cli_events_t *ctx1, cli_events_t *ctx2, compare_filter_t filter)
+{
+    unsigned i, diff = 0;
+    if (ctx1->max != ctx2->max) {
+	cli_dbgmsg("diffall: incompatible event maximums %u vs %u\n",
+		   ctx1->max, ctx2->max);
+	return 1;
+    }
+    for (i=0;i<ctx1->max;i++) {
+	struct cli_event *ev1 = &ctx1->events[i];
+	if (filter && filter(i, ev1->type))
+	    continue;
+	diff += cli_event_diff(ctx1, ctx2, i);
+    }
+    return diff ? 1 : 0;
+}
+
+int cli_event_errors(cli_events_t *ctx)
+{
+    if (!ctx)
+	return 0;
+    return ctx->errors.count + ctx->oom_count;
+}
diff --git a/libclamav/events.h b/libclamav/events.h
new file mode 100644
index 0000000..01a77cd
--- /dev/null
+++ b/libclamav/events.h
@@ -0,0 +1,102 @@
+/*
+ *  (bytecode) events
+ *
+ *  Copyright (C) 2010 Sourcefire, Inc.
+ *
+ *  Authors: Török Edvin
+ *
+ *  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 EVENTS_H
+#define EVENTS_H
+
+#include "cltypes.h"
+
+struct cli_events;
+typedef struct cli_events cli_events_t;
+
+cli_events_t *cli_events_new(unsigned max_event);
+void cli_events_free(cli_events_t*);
+
+enum ev_type {
+    ev_none = 0,
+    ev_string,
+    ev_data,
+    ev_data_fast,/* checksum, and length */
+    ev_int,
+    ev_time/* implicit time measurement */
+};
+
+enum multiple_handling {
+    multiple_last,/* keep only last */
+    multiple_chain,/* chain them */
+    multiple_sum,/* sum, only for ev_int and ev_time */
+    multiple_concat
+};
+
+union ev_val {
+    const char *v_string;
+    void *v_data;
+    uint64_t v_int;
+    union ev_val *v_chain;
+};
+
+/* Defines a new event with the given id, name, type. If event is triggered
+ * multiple times then it is handled according to the event type. */
+int cli_event_define(cli_events_t *ctx, unsigned id,
+		     const char *name, enum ev_type type,
+		     enum multiple_handling multiple);
+
+/* error events */
+void cli_event_error_str(cli_events_t *ctx, const char *str);
+void cli_event_error_oom(cli_events_t *ctx, uint32_t amount);
+
+/* record a data event */
+void cli_event_int(cli_events_t *ctx, unsigned id, uint64_t arg);
+/* for strings live at _diff_all, usually constant strings */
+void cli_event_string(cli_events_t *ctx, unsigned id, const char *str);
+/* for random data, alloced and copied */
+void cli_event_data(cli_events_t *ctx, unsigned id, const void* data, uint32_t len);
+/* don't record data, just a checksum and size */
+void cli_event_fastdata(cli_events_t *ctx, unsigned id, const void *data, uint32_t len);
+
+void cli_event_time_start(cli_events_t *ctx, unsigned id);
+void cli_event_time_stop(cli_events_t *ctx, unsigned id);
+
+/* event_count is implemented as ev_int, with ev_multiple_sum multiple */
+void cli_event_count(cli_events_t *ctx, unsigned id);
+
+void cli_event_get(cli_events_t* ctx, unsigned id, union ev_val *val, uint32_t *count);
+
+/* print all recorded events */
+void cli_event_debug_all(cli_events_t *ctx);
+
+/* print specified recorded event */
+void cli_event_debug(cli_events_t *ctx, unsigned id);
+
+/* compare 2 events, print diff to debug, and return 0 on equal, 1 on
+ * different  */
+int cli_event_diff(cli_events_t *ctx1, cli_events_t *ctx2, unsigned id);
+
+/* compare all events, with the specified filter (time events are always
+ * ignored), and return 0 for equal, 1 for different */
+typedef int (*compare_filter_t)(unsigned id, enum ev_type type);
+int cli_event_diff_all(cli_events_t *ctx1, cli_events_t *ctx2, compare_filter_t filter);
+
+/* returns whether the given context had errors */
+int cli_event_errors(cli_events_t *ctx);
+
+#endif
diff --git a/libclamav/execs.h b/libclamav/execs.h
index 6b97acb..5afeca2 100644
--- a/libclamav/execs.h
+++ b/libclamav/execs.h
@@ -54,12 +54,13 @@ struct cli_exe_info {
     uint32_t ep;
     /** Number of sections*/
     uint16_t nsections;
-    /** Hashset for versioninfo matching */
-    struct cli_hashset vinfo;
+    void *dummy;/* for compat - preserve offset */
     /** Resrources RVA - PE ONLY */
     uint32_t res_addr;
     /** Address size - PE ONLY */
     uint32_t hdr_size;
+    /** Hashset for versioninfo matching */
+    struct cli_hashset vinfo;
 };
 
 #endif
diff --git a/libclamav/fmap.c b/libclamav/fmap.c
index 61aeb6e..2c964ed 100644
--- a/libclamav/fmap.c
+++ b/libclamav/fmap.c
@@ -207,7 +207,7 @@ static void fmap_aging(fmap_t *m) {
 
 
 static int fmap_readpage(fmap_t *m, unsigned int first_page, unsigned int count, unsigned int lock_count) {
-    size_t readsz = 0, eintr_off, got;
+    size_t readsz = 0, eintr_off;
     char *pptr = NULL, err[256];
     uint32_t s;
     unsigned int i, page = first_page, force_read = 0;
@@ -277,6 +277,7 @@ static int fmap_readpage(fmap_t *m, unsigned int first_page, unsigned int count,
 
 	    eintr_off = 0;
 	    while(readsz) {
+		ssize_t got;
 		got=pread(m->fd, pptr, readsz, eintr_off + m->offset + first_page * m->pgsz);
 
 		if(got < 0 && errno == EINTR)
diff --git a/libclamav/hashtab.c b/libclamav/hashtab.c
index 8ecaee5..e7fa897 100644
--- a/libclamav/hashtab.c
+++ b/libclamav/hashtab.c
@@ -441,6 +441,7 @@ int cli_hashset_init(struct cli_hashset* hs, size_t initial_capacity, uint8_t lo
 	hs->mask = initial_capacity - 1;
 	hs->count=0;
 	hs->keys = cli_malloc(initial_capacity * sizeof(*hs->keys));
+	hs->mempool = NULL;
 	if(!hs->keys) {
 		return CL_EMEM;
 	}
@@ -452,11 +453,40 @@ int cli_hashset_init(struct cli_hashset* hs, size_t initial_capacity, uint8_t lo
 	return 0;
 }
 
+int cli_hashset_init_pool(struct cli_hashset* hs, size_t initial_capacity, uint8_t load_factor, mpool_t *mempool) {
+	if(load_factor < 50 || load_factor > 99) {
+		cli_dbgmsg(MODULE_NAME "Invalid load factor: %u, using default of 80%%\n", load_factor);
+		load_factor = 80;
+	}
+	initial_capacity = nearest_power(initial_capacity);
+	hs->limit = initial_capacity * load_factor / 100;
+	hs->capacity = initial_capacity;
+	hs->mask = initial_capacity - 1;
+	hs->count=0;
+	hs->mempool = mempool;
+	hs->keys = mpool_malloc(mempool, initial_capacity * sizeof(*hs->keys));
+	if(!hs->keys) {
+		return CL_EMEM;
+	}
+	hs->bitmap = mpool_calloc(mempool, initial_capacity >> 5, sizeof(*hs->bitmap));
+	if(!hs->bitmap) {
+		mpool_free(mempool, hs->keys);
+		return CL_EMEM;
+	}
+	return 0;
+}
+
+
 void cli_hashset_destroy(struct cli_hashset* hs)
 {
 	cli_dbgmsg(MODULE_NAME "Freeing hashset, elements: %u, capacity: %u\n", hs->count, hs->capacity);
-	free(hs->keys);
-	free(hs->bitmap);
+	if(hs->mempool) {
+		mpool_free(hs->mempool, hs->keys);
+		mpool_free(hs->mempool, hs->bitmap);
+	} else {
+	    free(hs->keys);
+	    free(hs->bitmap);
+	}
 	hs->keys = hs->bitmap = NULL;
 	hs->capacity = 0;
 }
@@ -509,9 +539,13 @@ static int cli_hashset_grow(struct cli_hashset *hs)
 	 * will hash to different locations. */
 	cli_dbgmsg(MODULE_NAME "Growing hashset, used: %u, capacity: %u\n", hs->count, hs->capacity);
 	/* create a bigger hashset */
-	if((rc = cli_hashset_init(&new_hs, hs->capacity << 1, hs->limit*100/hs->capacity)) < 0) {
+
+	if(hs->mempool)
+		rc = cli_hashset_init_pool(&new_hs, hs->capacity << 1, hs->limit*100/hs->capacity, hs->mempool);
+	else
+		rc = cli_hashset_init(&new_hs, hs->capacity << 1, hs->limit*100/hs->capacity);
+	if(rc < 0)
 		return rc;
-	}
 	/* and copy keys */
 	for(i=0;i < hs->capacity;i++) {
 		if(BITMAP_CONTAINS(hs->bitmap, i)) {
diff --git a/libclamav/hashtab.h b/libclamav/hashtab.h
index ca1670b..7672f4d 100644
--- a/libclamav/hashtab.h
+++ b/libclamav/hashtab.h
@@ -26,6 +26,7 @@
 #include <stddef.h>
 #include <sys/types.h>
 #include "cltypes.h"
+#include "mpool.h"
 typedef long cli_element_data;
 
 /* define this for debugging/profiling purposes only, NOT in production/release code */
@@ -117,6 +118,7 @@ void cli_map_delete(struct cli_map *m);
 struct cli_hashset {
 	uint32_t* keys;
 	uint32_t* bitmap;
+	mpool_t* mempool;
 	uint32_t capacity;
 	uint32_t mask;
 	uint32_t count;
@@ -124,6 +126,7 @@ struct cli_hashset {
 };
 
 int cli_hashset_init(struct cli_hashset* hs, size_t initial_capacity, uint8_t load_factor);
+int cli_hashset_init_pool(struct cli_hashset* hs, size_t initial_capacity, uint8_t load_factor, mpool_t *mempool);
 int cli_hashset_addkey(struct cli_hashset* hs, const uint32_t key);
 int cli_hashset_removekey(struct cli_hashset* hs, const uint32_t key);
 int cli_hashset_contains(const struct cli_hashset* hs, const uint32_t key);
diff --git a/libclamav/libclamav.map b/libclamav/libclamav.map
index e0e470b..64ddc37 100644
--- a/libclamav/libclamav.map
+++ b/libclamav/libclamav.map
@@ -180,6 +180,7 @@ CLAMAV_PRIVATE {
     cli_bytecode_describe;
     cli_printcxxver;
     cli_detect_environment;
+    cli_disasm_one;
   local:
     *;
 };
diff --git a/libclamav/matcher.c b/libclamav/matcher.c
index a901e78..23c771e 100644
--- a/libclamav/matcher.c
+++ b/libclamav/matcher.c
@@ -532,8 +532,12 @@ int cli_lsig_eval(cli_ctx *ctx, struct cli_matcher *root, struct cli_ac_data *ac
 	    }
 
 	    if(root->ac_lsigtable[i]->tdb.handlertype) {
-		if(cli_magic_scandesc_type(map->fd, ctx, root->ac_lsigtable[i]->tdb.handlertype[0]) == CL_VIRUS)
+		ctx->recursion++;
+		if(cli_magic_scandesc_type(map->fd, ctx, root->ac_lsigtable[i]->tdb.handlertype[0]) == CL_VIRUS) {
+		    ctx->recursion--;
 		    return CL_VIRUS;
+		}
+		ctx->recursion--;
 		continue;
 	    }
 
diff --git a/libclamav/mpool.c b/libclamav/mpool.c
index fca1e43..46288db 100644
--- a/libclamav/mpool.c
+++ b/libclamav/mpool.c
@@ -668,8 +668,13 @@ char *cli_mpool_strdup(mpool_t *mp, const char *s) {
   return alloc;
 }
 
+/* #define EXPAND_PUA */
 char *cli_mpool_virname(mpool_t *mp, const char *virname, unsigned int official) {
   char *newname, *pt;
+#ifdef EXPAND_PUA
+  char buf[1024];
+#endif
+
   if(!virname)
     return NULL;
 
@@ -682,6 +687,13 @@ char *cli_mpool_virname(mpool_t *mp, const char *virname, unsigned int official)
     return NULL;
   }
 
+#ifdef EXPAND_PUA
+    if(!strncmp(virname, "PUA.", 4)) {
+	snprintf(buf, sizeof(buf), "Possibly-Unwanted-Application(www.clamav.net/support/pua).%s", virname + 4);
+	buf[sizeof(buf)-1] = '\0';
+	virname = buf;
+    }
+#endif
   if(official)
     return cli_mpool_strdup(mp, virname);
 
diff --git a/libclamav/others.c b/libclamav/others.c
index 115b38b..13668ce 100644
--- a/libclamav/others.c
+++ b/libclamav/others.c
@@ -67,6 +67,7 @@
 #include "default.h"
 #include "scanners.h"
 #include "bytecode.h"
+#include "bytecode_api_impl.h"
 
 int (*cli_unrar_open)(int fd, const char *dirname, unrar_state_t *state);
 int (*cli_unrar_extract_next_prepare)(unrar_state_t *state, const char *dirname);
@@ -261,6 +262,19 @@ int cl_init(unsigned int initoptions)
 	struct timeval tv;
 	unsigned int pid = (unsigned int) getpid();
 
+	const char *zlibver = zlibVersion();
+	int cmp = cli_bcapi_version_compare(NULL, zlibver, strlen(zlibver),
+					    ZLIB_VERSION, strlen(ZLIB_VERSION));
+	if (cmp) {
+	    cli_dbgmsg("zlib version at runtime: %s, compile time: %s\n",
+		       zlibver, ZLIB_VERSION);
+	}
+	if (cmp < 0) {
+	    cli_warnmsg("zlib version at runtime is older than compile time: %s < %s\n",
+			zlibver, ZLIB_VERSION);
+	    cli_infomsg(NULL, "Make sure zlib is built as shared library, and that the new zlib library is installed in the proper place\n");
+	}
+
     {
 	unrar_main_header_t x;
 	if (((char*)&x.flags - (char*)&x) != 3) {
diff --git a/libclamav/others.h b/libclamav/others.h
index 709d74f..6b908fd 100644
--- a/libclamav/others.h
+++ b/libclamav/others.h
@@ -53,7 +53,7 @@
  * in re-enabling affected modules.
  */
 
-#define CL_FLEVEL 55
+#define CL_FLEVEL 56
 #define CL_FLEVEL_DCONF	CL_FLEVEL
 #define CL_FLEVEL_SIGTOOL CL_FLEVEL
 
@@ -427,6 +427,14 @@ void cli_errmsg(const char *str, ...) __attribute__((format(printf, 1, 2)));
 void cli_errmsg(const char *str, ...);
 #endif
 
+#ifdef __GNUC__
+void cli_infomsg(const cli_ctx* ctx, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
+#else
+void cli_infomsg(const cli_ctx* ctx, const char *fmt, ...);
+#endif
+
+void cli_logg_setup(const cli_ctx* ctx);
+
 /* tell compiler about branches that are very rarely taken,
  * such as debug paths, and error paths */
 #if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 2)
diff --git a/libclamav/others_common.c b/libclamav/others_common.c
index 7314a3f..4bb0473 100644
--- a/libclamav/others_common.c
+++ b/libclamav/others_common.c
@@ -105,6 +105,11 @@ void cli_dbgmsg_internal(const char *str, ...)
     MSGCODE("LibClamAV debug: ");
 }
 
+void cli_infomsg(const cli_ctx *ctx, const char *str, ...)
+{
+    MSGCODE("LibClamAV info: ");
+}
+
 int cli_matchregex(const char *str, const char *regex)
 {
 	regex_t reg;
diff --git a/libclamav/pdf.c b/libclamav/pdf.c
index e83bb79..af852ec 100644
--- a/libclamav/pdf.c
+++ b/libclamav/pdf.c
@@ -899,7 +899,7 @@ static void pdf_parseobj(struct pdf_struct *pdf, struct pdf_obj *obj)
     dict_length = q3 - dict;
 
     /*  process pdf names */
-    for (q = dict;dict_length;) {
+    for (q = dict;dict_length > 0;) {
 	int escapes = 0;
 	q2 = memchr(q, '/', dict_length);
 	if (!q2)
@@ -907,18 +907,20 @@ static void pdf_parseobj(struct pdf_struct *pdf, struct pdf_obj *obj)
 	dict_length -= q2 - q;
 	q = q2;
 	/* normalize PDF names */
-	for (i = 0;dict_length && (i < sizeof(pdfname)-1); i++) {
+	for (i = 0;dict_length > 0 && (i < sizeof(pdfname)-1); i++) {
 	    q++;
 	    dict_length--;
 	    if (*q == '#') {
-		cli_hex2str_to(q+1, pdfname+i, 2);
+		if (cli_hex2str_to(q+1, pdfname+i, 2) == -1)
+		    break;
 		q += 2;
 		dict_length -= 2;
 		escapes = 1;
 		continue;
 	    }
 	    if (*q == ' ' || *q == '\t' || *q == '\r' || *q == '\n' ||
-		*q == '/' || *q == '>' || *q == ']' || *q == '[' || *q == '<')
+		*q == '/' || *q == '>' || *q == ']' || *q == '[' || *q == '<'
+		|| *q == '(')
 		break;
 	    pdfname[i] = *q;
 	}
@@ -929,8 +931,8 @@ static void pdf_parseobj(struct pdf_struct *pdf, struct pdf_obj *obj)
 	    pdfobj_flag(pdf, obj, LINEARIZED_PDF);
 	    objstate = STATE_NONE;
 	}
-	if (objstate == STATE_JAVASCRIPT ||
-	    objstate == STATE_OPENACTION) {
+	if (dict_length > 0 && (objstate == STATE_JAVASCRIPT ||
+	    objstate == STATE_OPENACTION)) {
 	    if (objstate == STATE_OPENACTION)
 		pdfobj_flag(pdf, obj, HAS_OPENACTION);
 	    q2 = pdf_nextobject(q, dict_length);
@@ -941,7 +943,7 @@ static void pdf_parseobj(struct pdf_struct *pdf, struct pdf_obj *obj)
 		if (q2 && isdigit(*q2)) {
 		    objid |= atoi(q2) & 0xff;
 		    q2 = pdf_nextobject(q2, dict_length);
-		    if (*q2 == 'R') {
+		    if (q2 && *q2 == 'R') {
 			struct pdf_obj *obj2;
 			cli_dbgmsg("cli_pdf: found %s stored in indirect object %u %u\n",
 				   pdfname,
@@ -1024,7 +1026,7 @@ int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset)
     offset += pdfver - start;
 
     /* find trailer and xref, don't fail if not found */
-    map_off = map->len - 2048;
+    map_off = (off_t)map->len - 2048;
     if (map_off < 0)
 	map_off = 0;
     bytesleft = map->len - map_off;
@@ -1043,7 +1045,8 @@ int cli_pdf(const char *dir, cli_ctx *ctx, off_t offset)
 	cli_dbgmsg("cli_pdf: %%%%EOF not found\n");
     } else {
 	const char *t;
-	size = q - eofmap + map_off;
+	/*size = q - eofmap + map_off;*/
+	q -= 9;
 	for (;q > eofmap;q--) {
 	    if (memcmp(q, "startxref", 9) == 0)
 		break;
diff --git a/libclamav/pe_icons.c b/libclamav/pe_icons.c
index b712dc4..2b80b4b 100644
--- a/libclamav/pe_icons.c
+++ b/libclamav/pe_icons.c
@@ -771,7 +771,7 @@ static void hsv(unsigned int c, unsigned int *r, unsigned int *g, unsigned int *
 static int getmetrics(unsigned int side, unsigned int *imagedata, struct icomtr *res, const char *tempd) {
     unsigned int x, y, xk, yk, i, j, *tmp;
     unsigned int ksize = side / 4, bwonly = 0;
-    unsigned int edge_avg[6], edge_x[6], edge_y[6], noedge_avg[6], noedge_x[6], noedge_y[6];
+    unsigned int edge_avg[6], edge_x[6]={0,0,0,0,0,0}, edge_y[6]={0,0,0,0,0,0}, noedge_avg[6], noedge_x[6]={0,0,0,0,0,0}, noedge_y[6]={0,0,0,0,0,0};
     double *sobel;
 
     if(!(tmp = cli_malloc(side*side*4*2)))
diff --git a/libclamav/readdb.c b/libclamav/readdb.c
index 1f540f0..2dab42e 100644
--- a/libclamav/readdb.c
+++ b/libclamav/readdb.c
@@ -1256,6 +1256,19 @@ static int load_oneldb(char *buffer, int chkpua, int chkign, struct cl_engine *e
 	return CL_EMALFDB;
     }
 
+    if(tdb.engine) {
+	if(tdb.engine[0] > cl_retflevel()) {
+	    cli_dbgmsg("cli_loadldb: Signature for %s not loaded (required f-level: %u)\n", virname, tdb.engine[0]);
+	    FREE_TDB(tdb);
+	    (*sigs)--;
+	    return CL_SUCCESS;
+	} else if(tdb.engine[1] < cl_retflevel()) {
+	    FREE_TDB(tdb);
+	    (*sigs)--;
+	    return CL_SUCCESS;
+	}
+    }
+
     if(!tdb.target) {
 	cli_errmsg("cli_loadldb: No target specified in TDB\n");
 	FREE_TDB(tdb);
@@ -1337,19 +1350,6 @@ static int load_oneldb(char *buffer, int chkpua, int chkign, struct cl_engine *e
 		return CL_EMEM;
 	    tdb.macro_ptids[i-1] = root->ac_patterns-1;
 	}
-
-	if(tdb.engine) {
-	    if(tdb.engine[0] > cl_retflevel()) {
-		cli_dbgmsg("cli_loadldb: Signature for %s not loaded (required f-level: %u)\n", virname, tdb.engine[0]);
-		FREE_TDB(tdb);
-		(*sigs)--;
-		return CL_SUCCESS;
-	    } else if(tdb.engine[1] < cl_retflevel()) {
-		FREE_TDB(tdb);
-		(*sigs)--;
-		return CL_SUCCESS;
-	    }
-	}
     }
     memcpy(&lsig->tdb, &tdb, sizeof(tdb));
     return CL_SUCCESS;
@@ -1468,6 +1468,8 @@ static int cli_loadcbc(FILE *fs, struct cl_engine *engine, unsigned int *signo,
 	return CL_SUCCESS;
     }
     bc->id = bcs->count;/* must set after _load, since load zeroes */
+    if (engine->bytecode_mode == CL_BYTECODE_MODE_TEST)
+	cli_infomsg(NULL, "bytecode %u -> %s\n", bc->id, dbname);
     sigs++;
     if (bc->kind == BC_LOGICAL || bc->lsig) {
         unsigned oldsigs = sigs;
@@ -1995,7 +1997,7 @@ static int cli_loadmd5(FILE *fs, struct cl_engine *engine, unsigned int *signo,
 
 	if(mode == MD5_MDB) { /* section MD5 */
 	    if(!db->md5_sizes_hs.capacity) {
-		    cli_hashset_init(&db->md5_sizes_hs, 65536, 80);
+		cli_hashset_init_pool(&db->md5_sizes_hs, 65536, 80, engine->mempool);
 	    }
 	    cli_hashset_addkey(&db->md5_sizes_hs, new->filesize);
 	}
diff --git a/libclamav/scanners.c b/libclamav/scanners.c
index b65d7ff..0cf176b 100644
--- a/libclamav/scanners.c
+++ b/libclamav/scanners.c
@@ -1636,6 +1636,7 @@ static int cli_scanembpe(cli_ctx *ctx, off_t offset)
 	char *buff;
 	char *tmpname;
 	fmap_t *map = *ctx->fmap;
+	unsigned int corrupted_input;
 
     tmpname = cli_gentemp(ctx->engine->tmpdir);
     if(!tmpname)
@@ -1686,7 +1687,11 @@ static int cli_scanembpe(cli_ctx *ctx, off_t offset)
 
     ctx->recursion++;
     lseek(fd, 0, SEEK_SET);
-    if((ret = cli_magic_scandesc(fd, ctx)) == CL_VIRUS) {
+    corrupted_input = ctx->corrupted_input;
+    ctx->corrupted_input = 1;
+    ret = cli_magic_scandesc(fd, ctx);
+    ctx->corrupted_input = corrupted_input;
+    if(ret == CL_VIRUS) {
 	cli_dbgmsg("cli_scanembpe: Infected with %s\n", *ctx->virname);
 	close(fd);
 	if(!ctx->engine->keeptmp) {
@@ -1823,6 +1828,7 @@ static int cli_scanraw(cli_ctx *ctx, cli_file_t type, uint8_t typercg, cli_file_
 				cli_dbgmsg("*** Detected embedded PE file at %u ***\n", (unsigned int) fpt->offset);
 				if(peinfo.section)
 				    free(peinfo.section);
+				cli_hashset_destroy(&peinfo.vinfo);
 
 				nret = cli_scanembpe(ctx, fpt->offset);
 				break_loop = 1; /* we can stop here and other
diff --git a/m4/acinclude.m4 b/m4/acinclude.m4
index c793a14..c38714a 100644
--- a/m4/acinclude.m4
+++ b/m4/acinclude.m4
@@ -605,6 +605,9 @@ fi
 if ${GREP-grep} elleemme conftest.$ac_objext >/dev/null 2>&1 ; then
 	ac_cv_c_fpu_bigendian=no
 fi
+if test "$ac_cv_c_bigendian" = "universal"; then
+        ac_cv_c_fpu_bigendian=universal
+fi
 ])
 fi
 
@@ -619,6 +622,10 @@ case $ac_cv_c_fpu_bigendian in
 		AC_DEFINE([FPU_WORDS_BIGENDIAN], 0, [FPU byte ordering is little endian])
                 have_autoitea06="yes"
 		;;
+	universal)
+	        AC_DEFINE([FPU_WORDS_BIGENDIAN], [WORDS_BIGENDIAN], [FPU byte ordering matches CPU])
+                have_autoitea06="yes"
+		;;
 	*)
 		AC_MSG_WARN([Unable to determine FPU endianess, some features may not be available in this build])
 esac
@@ -713,6 +720,9 @@ AC_TRY_RUN([
 #include <stdlib.h>
 #include <stdio.h>
 #include <bzlib.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
 
 #ifdef NOBZ2PREFIX
 #define BZ2_bzReadOpen bzReadOpen
@@ -754,6 +764,9 @@ int main (int argc, char **argv) {
         bz.avail_in = poc_len;
         bz.next_out = buf;
         bz.avail_out = sizeof(buf);
+
+	alarm(10);
+
         if(BZ2_bzDecompressInit(&bz, 0, 0)!=BZ_OK)
                 return 1;
 
diff --git a/shared/cdiff.c b/shared/cdiff.c
index 68011a3..f6d29bd 100644
--- a/shared/cdiff.c
+++ b/shared/cdiff.c
@@ -934,8 +934,16 @@ int cdiff_apply(int fd, unsigned short mode)
 			logg("!cdiff_apply: Can't resize line buffer to %d bytes\n", line_size);
 			cdiff_ctx_free(&ctx);
 			gzclose(gzh);
-			free(line);
-			free(lbuf);
+			if(!r1 && !r2) {
+			    free(line);
+			    free(lbuf);
+			} else if(!r1) {
+			    free(line);
+			    free(r2);
+			} else {
+			    free(r1);
+			    free(lbuf);
+			}
 			return -1;
 		    }
 		    line = r1;
diff --git a/shared/misc.c b/shared/misc.c
index c34084f..a9c8313 100644
--- a/shared/misc.c
+++ b/shared/misc.c
@@ -324,6 +324,9 @@ int cfg_tcpsock(const struct optstruct *opts, struct sockaddr_in *tcpsock, in_ad
     struct hostent *he;
     const struct optstruct *opt = optget(opts, "TCPSocket");
 
+    if(opt->numarg > 65535)
+	return -1;
+
     memset(tcpsock, 0, sizeof(*tcpsock));
     tcpsock->sin_family = AF_INET;
     tcpsock->sin_port = htons(opt->numarg);
diff --git a/sigtool/sigtool.c b/sigtool/sigtool.c
index b9c5432..859e844 100644
--- a/sigtool/sigtool.c
+++ b/sigtool/sigtool.c
@@ -683,7 +683,6 @@ static int build(const struct optstruct *opts)
 			lspt->name = strdup(dent->d_name);
 			if(!lspt->name) {
 			    FREE_LS(dblist2);
-			    free(lspt);
 			    mprintf("!build: Memory allocation error\n");
 			    return -1;
 			}
@@ -1663,10 +1662,10 @@ static int compare(const char *oldpath, const char *newpath, FILE *diff)
 		    fseek(old, opos, SEEK_SET);
 
 		    if(found) {
-			strncpy(tbuff, obuff, sizeof(tbuff));
-			tbuff[sizeof(tbuff)-1]='\0';
+			strncpy(tbuff, obuff, l1);
+			tbuff[l1-1]='\0';
 			for(i = 0; i < tline; i++) {
-			    tbuff[16] = 0;
+			    tbuff[MIN(16, l1-1)] = 0;
 			    if((pt = strchr(tbuff, ' ')))
 				*pt = 0;
 			    fprintf(diff, "DEL %u %s\n", oline + i, tbuff);
@@ -1676,7 +1675,7 @@ static int compare(const char *oldpath, const char *newpath, FILE *diff)
 			oline += tline;
 
 		    } else {
-			obuff[16] = 0;
+			obuff[MIN(16, l1-1)] = 0;
 			if((pt = strchr(obuff, ' ')))
 			    *pt = 0;
 			fprintf(diff, "XCHG %u %s %s\n", oline, obuff, nbuff);
@@ -1694,7 +1693,7 @@ static int compare(const char *oldpath, const char *newpath, FILE *diff)
     if(old) {
 	while(fgets(obuff, l1, old)) {
 	    oline++;
-	    obuff[16] = 0;
+	    obuff[MIN(16, l1-1)] = 0;
 	    if((pt = strchr(obuff, ' ')))
 		*pt = 0;
 	    fprintf(diff, "DEL %u %s\n", oline, obuff);
@@ -1845,7 +1844,7 @@ static int verifydiff(const char *diff, const char *cvd, const char *incdir)
     return ret;
 }
 
-static void matchsig(const char *sig, int fd)
+static void matchsig(const char *sig, const char *offset, int fd)
 {
 	struct cl_engine *engine;
         struct cli_ac_result *acres = NULL, *res;
@@ -1901,7 +1900,8 @@ static void matchsig(const char *sig, int fd)
 	res = res->next;
     }
     if(matches) {
-	mprintf("MATCH: ** YES ** (%u %s:", matches, matches > 1 ? "matches at offsets" : "match at offset");
+	/* TODO: check offsets automatically */
+	mprintf("MATCH: ** YES%s ** (%u %s:", offset ? "/CHECK OFFSET" : "",  matches, matches > 1 ? "matches at offsets" : "match at offset");
 	res = acres;
 	while(res) {
 	    mprintf(" %u", (unsigned int) res->offset);
@@ -2330,7 +2330,7 @@ static int decodesig(char *sig, int fd)
 		decodehex(pt ? pt : tokens[3 + i]);
 	    } else {
 		mprintf(" +-> ");
-		matchsig(pt ? pt : tokens[3 + i], fd);
+		matchsig(pt ? pt : tokens[3 + i], pt ? tokens[3 + i] : NULL, fd);
 	    }
 	}
     } else if(strchr(sig, ':')) { /* ndb */
@@ -2391,7 +2391,7 @@ static int decodesig(char *sig, int fd)
 	    mprintf("DECODED SIGNATURE:\n");
 	    decodehex(tokens[3]);
 	} else {
-	    matchsig(tokens[3], fd);
+	    matchsig(tokens[3], strcmp(tokens[2], "*") ? tokens[2] : NULL, fd);
 	}
     } else if((pt = strchr(sig, '='))) {
 	*pt++ = 0;
@@ -2400,7 +2400,7 @@ static int decodesig(char *sig, int fd)
 	    mprintf("DECODED SIGNATURE:\n");
 	    decodehex(pt);
 	} else {
-	    matchsig(pt, fd);
+	    matchsig(pt, NULL, fd);
 	}
     } else {
 	mprintf("decodesig: Not supported signature format\n");
diff --git a/unit_tests/Makefile.am b/unit_tests/Makefile.am
index 5c14104..bde20e8 100644
--- a/unit_tests/Makefile.am
+++ b/unit_tests/Makefile.am
@@ -17,7 +17,7 @@ $(FILES) :
 
 programs = check_clamav
 scripts = check_freshclam.sh check_sigtool.sh check_unit_vg.sh check1_clamscan.sh check2_clamd.sh check3_clamd.sh check4_clamd.sh\
-	  check5_clamd_vg.sh check6_clamd_vg.sh check7_clamd_hg.sh check8_clamd_hg.sh
+	  check5_clamd_vg.sh check6_clamd_vg.sh check7_clamd_hg.sh check8_clamd_hg.sh check9_clamscan_vg.sh
 TESTS_ENVIRONMENT=export abs_srcdir=$(abs_srcdir) AWK=$(AWK);
 if ENABLE_UNRAR
 else
diff --git a/unit_tests/Makefile.in b/unit_tests/Makefile.in
index 822eb13..da9881a 100644
--- a/unit_tests/Makefile.in
+++ b/unit_tests/Makefile.in
@@ -370,7 +370,7 @@ SPLIT_DIR = $(top_srcdir)/unit_tests/.split
 FILES = clam-phish-exe
 programs = check_clamav
 scripts = check_freshclam.sh check_sigtool.sh check_unit_vg.sh check1_clamscan.sh check2_clamd.sh check3_clamd.sh check4_clamd.sh\
-	  check5_clamd_vg.sh check6_clamd_vg.sh check7_clamd_hg.sh check8_clamd_hg.sh
+	  check5_clamd_vg.sh check6_clamd_vg.sh check7_clamd_hg.sh check8_clamd_hg.sh check9_clamscan_vg.sh
 
 TESTS_ENVIRONMENT = export abs_srcdir=$(abs_srcdir) AWK=$(AWK); \
 	$(am__append_1)
@@ -914,6 +914,8 @@ check7_clamd_hg.sh.log: check7_clamd_hg.sh
 	@p='check7_clamd_hg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
 check8_clamd_hg.sh.log: check8_clamd_hg.sh
 	@p='check8_clamd_hg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
+check9_clamscan_vg.sh.log: check9_clamscan_vg.sh
+	@p='check9_clamscan_vg.sh'; $(am__check_pre) $(LOG_COMPILE) "$$tst" $(am__check_post)
 .test.log:
 	@p='$<'; $(am__check_pre) $(TEST_LOG_COMPILE) "$$tst" $(am__check_post)
 @am__EXEEXT_TRUE at .test$(EXEEXT).log:
diff --git a/unit_tests/check5_clamd_vg.sh b/unit_tests/check5_clamd_vg.sh
index 40b9e3a..c7a571b 100755
--- a/unit_tests/check5_clamd_vg.sh
+++ b/unit_tests/check5_clamd_vg.sh
@@ -2,4 +2,4 @@
 . $srcdir/check_common.sh
 init_valgrind
 WRAPPER="$VALGRIND $VALGRIND_FLAGS" test_clamd1 5
-end_valgrind
+end_valgrind 5
diff --git a/unit_tests/check6_clamd_vg.sh b/unit_tests/check6_clamd_vg.sh
index d8383ad..d3355fc 100755
--- a/unit_tests/check6_clamd_vg.sh
+++ b/unit_tests/check6_clamd_vg.sh
@@ -2,4 +2,4 @@
 . $srcdir/check_common.sh
 init_valgrind
 WRAPPER="$VALGRIND $VALGRIND_FLAGS" test_clamd2 6
-end_valgrind
+end_valgrind 6
diff --git a/unit_tests/check7_clamd_hg.sh b/unit_tests/check7_clamd_hg.sh
index 81b716e..4903987 100755
--- a/unit_tests/check7_clamd_hg.sh
+++ b/unit_tests/check7_clamd_hg.sh
@@ -3,4 +3,4 @@ exit 77
 . $srcdir/check_common.sh
 init_helgrind
 WRAPPER="$VALGRIND $VALGRIND_FLAGS_RACE" test_clamd1 7
-end_valgrind
+end_valgrind 7
diff --git a/unit_tests/check8_clamd_hg.sh b/unit_tests/check8_clamd_hg.sh
index 07f5d8a..65943e3 100755
--- a/unit_tests/check8_clamd_hg.sh
+++ b/unit_tests/check8_clamd_hg.sh
@@ -2,4 +2,4 @@
 . $srcdir/check_common.sh
 init_helgrind
 WRAPPER="$VALGRIND $VALGRIND_FLAGS_RACE" test_clamd2 8
-end_valgrind
+end_valgrind 8
diff --git a/unit_tests/check9_clamscan_vg.sh b/unit_tests/check9_clamscan_vg.sh
new file mode 100755
index 0000000..01d7da7
--- /dev/null
+++ b/unit_tests/check9_clamscan_vg.sh
@@ -0,0 +1,5 @@
+#!/bin/sh
+. $srcdir/check_common.sh
+init_valgrind
+WRAPPER="$VALGRIND $VALGRIND_FLAGS" test_clamscan 9
+end_valgrind 9
diff --git a/unit_tests/check_bytecode.c b/unit_tests/check_bytecode.c
index b32ac0e..cba3d4d 100644
--- a/unit_tests/check_bytecode.c
+++ b/unit_tests/check_bytecode.c
@@ -84,13 +84,13 @@ static void runtest(const char *file, uint64_t expected, int fail, int nojit,
     fail_unless(rc == CL_SUCCESS, "cli_bytecode_load failed");
     fclose(f);
 
-    if (testmode)
+    if (testmode && have_clamjit)
 	engine->bytecode_mode = CL_BYTECODE_MODE_TEST;
 
     rc = cli_bytecode_prepare2(engine, &bcs, BYTECODE_ENGINE_MASK);
     fail_unless(rc == CL_SUCCESS, "cli_bytecode_prepare failed");
 
-    if (have_clamjit && !nojit && nojit != -1) {
+    if (have_clamjit && !nojit && nojit != -1 && !testmode) {
 	fail_unless(bc.state == bc_jit, "preparing for JIT failed");
     }
 
@@ -536,7 +536,6 @@ Suite *test_bytecode_suite(void)
     tcase_add_test(tc_cli_arith, test_pdf_jit);
     tcase_add_test(tc_cli_arith, test_bswap_jit);
     tcase_add_test(tc_cli_arith, test_inflate_jit);
-    tcase_add_test(tc_cli_arith, test_retmagic_jit);
 
     tcase_add_test(tc_cli_arith, test_arith_int);
     tcase_add_test(tc_cli_arith, test_apicalls_int);
diff --git a/unit_tests/check_common.sh b/unit_tests/check_common.sh
index 46517a5..b02a85f 100644
--- a/unit_tests/check_common.sh
+++ b/unit_tests/check_common.sh
@@ -47,7 +47,7 @@ die()
 
 # Setup test directory to avoid temporary and output file clashes
 test_start() {
-    ulimit -t 120; ulimit -d 524288;
+    ulimit -t 120 || true; ulimit -d 524288 || true;
     ulimit -v 600000 || true;
     (cd test-$1 2>/dev/null && killclamd || true)
     rm -rf test-$1
@@ -107,6 +107,7 @@ test_run_check() {
 test_end() {
     killclamd
     cd ..
+    test -f test-$1/valgrind.log && mv -f test-$1/valgrind.log valgrind$1.log
     rm -rf test-$1
 }
 
@@ -137,10 +138,11 @@ init_helgrind() {
 }
 
 end_valgrind() {
-    NRUNS=`grep -a "ERROR SUMMARY" valgrind.log | wc -l`
-    if test $NRUNS -ne `grep -a "ERROR SUMMARY: 0 errors" valgrind.log | wc -l` || 
-	test `grep -a "FATAL:" valgrind.log|wc -l` -ne 0; then
-	cat valgrind.log
+    VLOG=valgrind$1.log
+    NRUNS=`grep -a "ERROR SUMMARY" $VLOG | wc -l`
+    if test $NRUNS -ne `grep -a "ERROR SUMMARY: 0 errors" $VLOG | wc -l` || 
+	test `grep -a "FATAL:" $VLOG|wc -l` -ne 0; then
+	cat $VLOG
 	die "Valgrind tests failed"
     fi
 }
diff --git a/unit_tests/check_regex.c b/unit_tests/check_regex.c
index 3b08854..b116716 100644
--- a/unit_tests/check_regex.c
+++ b/unit_tests/check_regex.c
@@ -365,7 +365,7 @@ static void do_phishing_test(const struct rtest *rtest)
 {
 	char *realurl;
 	cli_ctx ctx;
-	const char *virname;
+	const char *virname = NULL;
 	tag_arguments_t hrefs;
 	int rc;
 
@@ -417,8 +417,9 @@ static void do_phishing_test(const struct rtest *rtest)
 				fail_unless_fmt(ctx.found_possibly_unwanted,
 					"this should be blacklisted, realURL: %s, displayURL: %s",
 					rtest->realurl, rtest->displayurl);
-				fail_unless_fmt(!strstr((const char*)ctx.virname,"Blacklisted"),
-						"should be blacklisted, but is: %s\n", ctx.virname);
+				if (*ctx.virname)
+				    fail_unless_fmt(!strstr((const char*)*ctx.virname,"Blacklisted"),
+						    "should be blacklisted, but is: %s\n", ctx.virname);
 			}
 			break;
 	}
diff --git a/unit_tests/preload_run.sh b/unit_tests/preload_run.sh
index bebefc1..8b8c8e3 100755
--- a/unit_tests/preload_run.sh
+++ b/unit_tests/preload_run.sh
@@ -2,7 +2,7 @@
 # Helper script to run a program under electric-fence / duma
 
 # prevent core dumps
-ulimit -c 0
+ulimit -c 0 || true
 LD_PRELOAD=$LIBPRELOAD
 export LD_PRELOAD
 export CK_DEFAULT_TIMEOUT=40

-- 
Debian repository for ClamAV



More information about the Pkg-clamav-commits mailing list