Merge remote-tracking branch 'upstream/master' into rebase
diff --git a/Android.mk b/Android.mk
new file mode 100644
index 0000000..3c46a22
--- /dev/null
+++ b/Android.mk
@@ -0,0 +1,91 @@
+LOCAL_PATH := $(call my-dir)
+LLVM_ROOT_PATH := $(LOCAL_PATH)
+LLVM_ENABLE_ASSERTION := false
+
+include $(CLEAR_VARS)
+
+# LLVM Libraries
+subdirs := \
+  lib/Analysis \
+  lib/Analysis/IPA \
+  lib/AsmParser \
+  lib/Bitcode/Reader \
+  lib/Bitcode/Writer \
+  lib/ExecutionEngine \
+  lib/ExecutionEngine/RuntimeDyld \
+  lib/ExecutionEngine/JIT \
+  lib/ExecutionEngine/MCJIT \
+  lib/CodeGen \
+  lib/CodeGen/AsmPrinter \
+  lib/CodeGen/SelectionDAG \
+  lib/IR \
+  lib/IRReader \
+  lib/Linker \
+  lib/MC \
+  lib/MC/MCDisassembler \
+  lib/MC/MCParser \
+  lib/Object \
+  lib/Option \
+  lib/ProfileData \
+  lib/Support \
+  lib/TableGen \
+  lib/Target \
+  lib/Transforms/IPO \
+  lib/Transforms/InstCombine \
+  lib/Transforms/Instrumentation \
+  lib/Transforms/ObjCARC \
+  lib/Transforms/Scalar \
+  lib/Transforms/Utils \
+  lib/Transforms/Vectorize \
+  utils/FileCheck \
+  utils/TableGen
+
+# ARM Code Generation Libraries
+subdirs += \
+  lib/Target/ARM \
+  lib/Target/ARM/AsmParser \
+  lib/Target/ARM/InstPrinter \
+  lib/Target/ARM/Disassembler \
+  lib/Target/ARM/MCTargetDesc \
+  lib/Target/ARM/TargetInfo
+
+# ARM64 Code Generation Libraries
+subdirs += \
+  lib/Target/AArch64  \
+  lib/Target/AArch64/AsmParser \
+  lib/Target/AArch64/InstPrinter \
+  lib/Target/AArch64/Disassembler \
+  lib/Target/AArch64/MCTargetDesc \
+  lib/Target/AArch64/TargetInfo \
+  lib/Target/AArch64/Utils
+
+# MIPS Code Generation Libraries
+subdirs += \
+  lib/Target/Mips \
+  lib/Target/Mips/AsmParser \
+  lib/Target/Mips/InstPrinter \
+  lib/Target/Mips/Disassembler \
+  lib/Target/Mips/MCTargetDesc \
+  lib/Target/Mips/TargetInfo
+
+# X86 Code Generation Libraries
+subdirs += \
+  lib/Target/X86 \
+  lib/Target/X86/AsmParser \
+  lib/Target/X86/InstPrinter \
+  lib/Target/X86/Disassembler \
+  lib/Target/X86/MCTargetDesc \
+  lib/Target/X86/TargetInfo \
+  lib/Target/X86/Utils
+
+# LLVM Command Line Tools
+subdirs += tools/llc
+subdirs += tools/llvm-as
+subdirs += tools/llvm-dis
+subdirs += tools/llvm-link
+#subdirs += tools/opt
+
+include $(LOCAL_PATH)/llvm.mk
+include $(LOCAL_PATH)/shared_llvm.mk
+
+include $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, $(subdirs)))
diff --git a/CleanSpec.mk b/CleanSpec.mk
new file mode 100644
index 0000000..f756f04
--- /dev/null
+++ b/CleanSpec.mk
@@ -0,0 +1,54 @@
+# Copyright (C) 2007 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# If you don't need to do a full clean build but would like to touch
+# a file or delete some intermediate files, add a clean step to the end
+# of the list.  These steps will only be run once, if they haven't been
+# run before.
+#
+# E.g.:
+#     $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
+#     $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
+#
+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
+# files that are missing or have been moved.
+#
+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
+# Use $(OUT_DIR) to refer to the "out" directory.
+#
+# If you need to re-do something that's already mentioned, just copy
+# the command and add it to the bottom of the list.  E.g., if a change
+# that you made last week required touching a file and a change you
+# made today requires touching the same file, just copy the old
+# touch step and add it to the end of the list.
+#
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+
+# For example:
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
+
+# ************************************************
+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
+# ************************************************
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/stingray/obj/STATIC_LIBRARIES/libLLVM*)
+$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/stingray/obj/STATIC_LIBRARIES/libLLVMARMCodeGen_intermediates*)
+$(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_PREBUILT_TAG)/obj/STATIC_LIBRARIES/libLLVMARM*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libLLVMARM*)
+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/app_process__asan_intermediates*)
diff --git a/MODULE_LICENSE_BSD_LIKE b/MODULE_LICENSE_BSD_LIKE
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/MODULE_LICENSE_BSD_LIKE
diff --git a/clear_tblgen_vars.mk b/clear_tblgen_vars.mk
new file mode 100644
index 0000000..6c9623e
--- /dev/null
+++ b/clear_tblgen_vars.mk
@@ -0,0 +1,2 @@
+TBLGEN_TABLES :=
+TBLGEN_TD_DIR :=
diff --git a/device/include/llvm/Config/AsmParsers.def b/device/include/llvm/Config/AsmParsers.def
new file mode 100644
index 0000000..ca3af2c
--- /dev/null
+++ b/device/include/llvm/Config/AsmParsers.def
@@ -0,0 +1,39 @@
+//===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file enumerates all of the assembly-language parsers
+// supported by this build of LLVM. Clients of this file should define
+// the LLVM_ASM_PARSER macro to be a function-like macro with a
+// single parameter (the name of the target whose assembly can be
+// generated); including this file will then enumerate all of the
+// targets with assembly parsers.
+//
+// The set of targets supported by LLVM is generated at configuration
+// time, at which point this header is generated. Do not modify this
+// header directly.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ASM_PARSER
+#  error Please define the macro LLVM_ASM_PARSER(TargetName)
+#endif
+
+#if defined(__arm__)
+  LLVM_ASM_PARSER(ARM)
+#elif defined(__mips__)
+  LLVM_ASM_PARSER(Mips)
+#elif defined(__i386__) || defined(__x86_64__)
+  LLVM_ASM_PARSER(X86)
+#elif defined(__aarch64__)
+  LLVM_ASM_PARSER(AArch64)
+#else
+#  error Unsupported TARGET_ARCH for LLVM_ASM_PARSER
+#endif
+
+#undef LLVM_ASM_PARSER
diff --git a/device/include/llvm/Config/AsmPrinters.def b/device/include/llvm/Config/AsmPrinters.def
new file mode 100644
index 0000000..3a396c2
--- /dev/null
+++ b/device/include/llvm/Config/AsmPrinters.def
@@ -0,0 +1,39 @@
+//===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file enumerates all of the assembly-language printers
+// supported by this build of LLVM. Clients of this file should define
+// the LLVM_ASM_PRINTER macro to be a function-like macro with a
+// single parameter (the name of the target whose assembly can be
+// generated); including this file will then enumerate all of the
+// targets with assembly printers.
+//
+// The set of targets supported by LLVM is generated at configuration
+// time, at which point this header is generated. Do not modify this
+// header directly.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ASM_PRINTER
+#  error Please define the macro LLVM_ASM_PRINTER(TargetName)
+#endif
+
+#if defined(__arm__)
+  LLVM_ASM_PRINTER(ARM)
+#elif defined(__mips__)
+  LLVM_ASM_PRINTER(Mips)
+#elif defined(__i386__) || defined(__x86_64__)
+  LLVM_ASM_PRINTER(X86)
+#elif defined(__aarch64__)
+  LLVM_ASM_PRINTER(AArch64)
+#else
+#  error Unsupported TARGET_ARCH for LLVM_ASM_PRINTER
+#endif
+
+#undef LLVM_ASM_PRINTER
diff --git a/device/include/llvm/Config/Disassemblers.def b/device/include/llvm/Config/Disassemblers.def
new file mode 100644
index 0000000..aba88f8
--- /dev/null
+++ b/device/include/llvm/Config/Disassemblers.def
@@ -0,0 +1,39 @@
+//===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file enumerates all of the assembly-language parsers
+// supported by this build of LLVM. Clients of this file should define
+// the LLVM_ASM_PARSER macro to be a function-like macro with a
+// single parameter (the name of the target whose assembly can be
+// generated); including this file will then enumerate all of the
+// targets with assembly parsers.
+//
+// The set of targets supported by LLVM is generated at configuration
+// time, at which point this header is generated. Do not modify this
+// header directly.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DISASSEMBLER
+#  error Please define the macro LLVM_DISASSEMBLER(TargetName)
+#endif
+
+#if defined(__arm__)
+  LLVM_DISASSEMBLER(ARM)
+#elif defined(__mips__)
+  LLVM_DISASSEMBLER(Mips)
+#elif defined(__i386__) || defined(__x86_64__)
+  LLVM_DISASSEMBLER(X86)
+#elif defined(__aarch64__)
+  LLVM_DISASSEMBLER(AArch64)
+#else
+#  error Unsupported TARGET_ARCH for LLVM_DISASSEMBLER
+#endif
+
+#undef LLVM_DISASSEMBLER
diff --git a/device/include/llvm/Config/Targets.def b/device/include/llvm/Config/Targets.def
new file mode 100644
index 0000000..f30c81f
--- /dev/null
+++ b/device/include/llvm/Config/Targets.def
@@ -0,0 +1,38 @@
+/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
+|*                                                                            *|
+|*                     The LLVM Compiler Infrastructure                       *|
+|*                                                                            *|
+|* This file is distributed under the University of Illinois Open Source      *|
+|* License. See LICENSE.TXT for details.                                      *|
+|*                                                                            *|
+|*===----------------------------------------------------------------------===*|
+|*                                                                            *|
+|* This file enumerates all of the target architectures supported by          *|
+|* this build of LLVM. Clients of this file should define the                 *|
+|* LLVM_TARGET macro to be a function-like macro with a single                *|
+|* parameter (the name of the target); including this file will then          *|
+|* enumerate all of the targets.                                              *|
+|*                                                                            *|
+|* The set of targets supported by LLVM is generated at configuration         *|
+|* time, at which point this header is generated. Do not modify this          *|
+|* header directly.                                                           *|
+|*                                                                            *|
+\*===----------------------------------------------------------------------===*/
+
+#ifndef LLVM_TARGET
+#  error Please define the macro LLVM_TARGET(TargetName)
+#endif
+
+#if defined(__arm__)
+  LLVM_TARGET(ARM)
+#elif defined(__mips__)
+  LLVM_TARGET(Mips)
+#elif defined(__i386__) || defined(__x86_64__)
+  LLVM_TARGET(X86)
+#elif defined(__aarch64__)
+  LLVM_TARGET(AArch64)
+#else
+#  error Unsupported TARGET_ARCH for LLVM_TARGET
+#endif
+
+#undef LLVM_TARGET
diff --git a/device/include/llvm/Config/config.h b/device/include/llvm/Config/config.h
new file mode 100644
index 0000000..f42e285
--- /dev/null
+++ b/device/include/llvm/Config/config.h
@@ -0,0 +1,689 @@
+/* include/llvm/Config/config.h.  Generated from config.h.in by configure.  */
+/* include/llvm/Config/config.h.in.  Generated from autoconf/configure.ac by autoheader.  */
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+/* Bug report URL. */
+#define BUG_REPORT_URL "http://llvm.org/bugs/"
+
+/* Relative directory for resource files */
+#define CLANG_RESOURCE_DIR ""
+
+/* Directories clang will search for headers */
+#define C_INCLUDE_DIRS ""
+
+/* Default <path> to all compiler invocations for --sysroot=<path>. */
+#define DEFAULT_SYSROOT ""
+
+/* Define if position independent code is enabled */
+#define ENABLE_PIC 1
+
+/* Define if timestamp information (e.g., __DATE___) is allowed */
+#define ENABLE_TIMESTAMPS 1
+
+/* Directory where gcc is installed. */
+#define GCC_INSTALL_PREFIX ""
+
+/* Define to 1 if you have the `argz_append' function. */
+/* #undef HAVE_ARGZ_APPEND */
+
+/* Define to 1 if you have the `argz_create_sep' function. */
+/* #undef HAVE_ARGZ_CREATE_SEP */
+
+/* Define to 1 if you have the <argz.h> header file. */
+/* #undef HAVE_ARGZ_H */
+
+/* Define to 1 if you have the `argz_insert' function. */
+/* #undef HAVE_ARGZ_INSERT */
+
+/* Define to 1 if you have the `argz_next' function. */
+/* #undef HAVE_ARGZ_NEXT */
+
+/* Define to 1 if you have the `argz_stringify' function. */
+/* #undef HAVE_ARGZ_STRINGIFY */
+
+/* Define to 1 if you have the <assert.h> header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the `backtrace' function. */
+#if defined(HAVE_BACKTRACE) && HAVE_BACKTRACE == 0
+/* Defined by AndroidConfig.h as 0 */
+#undef HAVE_BACKTRACE
+#endif
+
+/* Define to 1 if you have the `bcopy' function. */
+/* #undef HAVE_BCOPY */
+
+/* Define to 1 if you have the `ceilf' function. */
+#define HAVE_CEILF 1
+
+/* Define if the neat program is available */
+/* #undef HAVE_CIRCO */
+
+/* Define to 1 if you have the `closedir' function. */
+#define HAVE_CLOSEDIR 1
+
+/* Define to 1 if you have the <CrashReporterClient.h> header file. */
+/* #undef HAVE_CRASHREPORTERCLIENT_H */
+
+/* Define if __crashreporter_info__ exists. */
+/* #undef HAVE_CRASHREPORTER_INFO */
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#define HAVE_CTYPE_H 1
+
+/* Define to 1 if you have the <cxxabi.h> header file. */
+#define HAVE_CXXABI_H 0
+
+/* Define to 1 if you have the declaration of `strerror_s', and to 0 if you
+   don't. */
+#define HAVE_DECL_STRERROR_S 0
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#define HAVE_DIRENT_H 1
+
+/* Define if you have the GNU dld library. */
+/* #undef HAVE_DLD */
+
+/* Define to 1 if you have the <dld.h> header file. */
+/* #undef HAVE_DLD_H */
+
+/* Define to 1 if you have the `dlerror' function. */
+#define HAVE_DLERROR 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if dlopen() is available on this platform. */
+#define HAVE_DLOPEN 1
+
+/* Define to 1 if you have the <dl.h> header file. */
+/* #undef HAVE_DL_H */
+
+/* Define if the dot program is available */
+/* #undef HAVE_DOT */
+
+/* Define if the dotty program is available */
+/* #undef HAVE_DOTTY */
+
+/* Define if you have the _dyld_func_lookup function. */
+/* #undef HAVE_DYLD */
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if the system has the type `error_t'. */
+#define HAVE_ERROR_T 1
+
+/* Define to 1 if you have the <execinfo.h> header file. */
+#define HAVE_EXECINFO_H 0
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if the neat program is available */
+/* #undef HAVE_FDP */
+
+/* Define to 1 if you have the <fenv.h> header file. */
+#define HAVE_FENV_H 1
+
+/* Define if libffi is available on this platform. */
+/* #undef HAVE_FFI_CALL */
+
+/* Define to 1 if you have the <ffi/ffi.h> header file. */
+/* #undef HAVE_FFI_FFI_H */
+
+/* Define to 1 if you have the <ffi.h> header file. */
+/* #undef HAVE_FFI_H */
+
+/* Set to 1 if the finite function is found in <ieeefp.h> */
+/* #undef HAVE_FINITE_IN_IEEEFP_H */
+
+/* Define to 1 if you have the `floorf' function. */
+#define HAVE_FLOORF 1
+
+/* Define to 1 if you have the `fmodf' function. */
+#define HAVE_FMODF 1
+
+/* Define to 1 if you have the `futimens' function. */
+#define HAVE_FUTIMENS 1
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getrlimit' function. */
+#define HAVE_GETRLIMIT 1
+
+/* Define to 1 if you have the `getrusage' function. */
+#define HAVE_GETRUSAGE 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define if the Graphviz program is available */
+/* #undef HAVE_GRAPHVIZ */
+
+/* Define if the gv program is available */
+/* #undef HAVE_GV */
+
+/* Define to 1 if you have the `index' function. */
+/* #undef HAVE_INDEX */
+
+/* Define to 1 if the system has the type `int64_t'. */
+#define HAVE_INT64_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `isatty' function. */
+#define HAVE_ISATTY 1
+
+/* Set to 1 if the isinf function is found in <cmath> */
+#define HAVE_ISINF_IN_CMATH 1
+
+/* Set to 1 if the isinf function is found in <math.h> */
+#define HAVE_ISINF_IN_MATH_H 1
+
+/* Set to 1 if the isnan function is found in <cmath> */
+#define HAVE_ISNAN_IN_CMATH 1
+
+/* Set to 1 if the isnan function is found in <math.h> */
+#define HAVE_ISNAN_IN_MATH_H 1
+
+/* Define if you have the libdl library or equivalent. */
+#define HAVE_LIBDL 1
+
+/* Define to 1 if you have the `imagehlp' library (-limagehlp). */
+/* #undef HAVE_LIBIMAGEHLP */
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define HAVE_LIBM 1
+
+/* Define to 1 if you have the `psapi' library (-lpsapi). */
+/* #undef HAVE_LIBPSAPI */
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#define HAVE_LIBPTHREAD 1
+
+/* Define to 1 if you have the `udis86' library (-ludis86). */
+/* #undef HAVE_LIBUDIS86 */
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define if you can use -Wl,-export-dynamic. */
+#define HAVE_LINK_EXPORT_DYNAMIC 1
+
+/* Define to 1 if you have the <link.h> header file. */
+#define HAVE_LINK_H 1
+
+/* Define if you can use -Wl,-R. to pass -R. to the linker, in order to add
+   the current directory to the dynamic linker search path. */
+#define HAVE_LINK_R 1
+
+/* Define to 1 if you have the `longjmp' function. */
+#define HAVE_LONGJMP 1
+
+/* Define to 1 if you have the <mach/mach.h> header file. */
+/* #undef HAVE_MACH_MACH_H */
+
+/* Define to 1 if you have the <mach-o/dyld.h> header file. */
+/* #undef HAVE_MACH_O_DYLD_H */
+
+/* Define if mallinfo() is available on this platform. */
+#define HAVE_MALLINFO 1
+
+/* Define to 1 if you have the <malloc.h> header file. */
+//#define HAVE_MALLOC_H 1 /* Defined by AndroidConfig.h */
+
+/* Define to 1 if you have the <malloc/malloc.h> header file. */
+/* #undef HAVE_MALLOC_MALLOC_H */
+
+/* Define to 1 if you have the `malloc_zone_statistics' function. */
+/* #undef HAVE_MALLOC_ZONE_STATISTICS */
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mkdtemp' function. */
+#define HAVE_MKDTEMP 0
+
+/* Define to 1 if you have the `mkstemp' function. */
+#define HAVE_MKSTEMP 1
+
+/* Define to 1 if you have the `mktemp' function. */
+#define HAVE_MKTEMP 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define if mmap() uses MAP_ANONYMOUS to map anonymous pages, or undefine if
+   it uses MAP_ANON */
+#define HAVE_MMAP_ANONYMOUS 1
+
+/* Define if mmap() can map files into memory */
+#define HAVE_MMAP_FILE
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the `nearbyintf' function. */
+#define HAVE_NEARBYINTF 1
+
+/* Define if the neat program is available */
+/* #undef HAVE_NEATO */
+
+/* Define to 1 if you have the `opendir' function. */
+#define HAVE_OPENDIR 1
+
+/* Define to 1 if you have the `posix_spawn' function. */
+/* #undef HAVE_POSIX_SPAWN */
+
+/* Define to 1 if you have the `powf' function. */
+#define HAVE_POWF 1
+
+/* Define to 1 if you have the `pread' function. */
+#define HAVE_PREAD 1
+
+/* Define if libtool can extract symbol lists from object files. */
+#define HAVE_PRELOADED_SYMBOLS 1
+
+/* Define to have the %a format string */
+#define HAVE_PRINTF_A 1
+
+/* Have pthread_getspecific */
+#define HAVE_PTHREAD_GETSPECIFIC 1
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#define HAVE_PTHREAD_H 1
+
+/* Have pthread_mutex_lock */
+#define HAVE_PTHREAD_MUTEX_LOCK 1
+
+/* Have pthread_rwlock_init */
+#define HAVE_PTHREAD_RWLOCK_INIT 1
+
+/* Define to 1 if srand48/lrand48/drand48 exist in <stdlib.h> */
+#define HAVE_RAND48 1
+
+/* Define to 1 if you have the `readdir' function. */
+#define HAVE_READDIR 1
+
+/* Define to 1 if you have the `realpath' function. */
+#define HAVE_REALPATH 1
+
+/* Define to 1 if you have the `rindex' function. */
+/* #undef HAVE_RINDEX */
+
+/* Define to 1 if you have the `rintf' function. */
+#define HAVE_RINTF 1
+
+/* Define to 1 if you have the `round' function. */
+#define HAVE_ROUND 1
+
+/* Define to 1 if you have the `roundf' function. */
+#define HAVE_ROUNDF 1
+
+/* Define to 1 if you have the `sbrk' function. */
+#define HAVE_SBRK 1
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define to 1 if you have the `setjmp' function. */
+#define HAVE_SETJMP 1
+
+/* Define to 1 if you have the <setjmp.h> header file. */
+#define HAVE_SETJMP_H 1
+
+/* Define to 1 if you have the `setrlimit' function. */
+#define HAVE_SETRLIMIT 1
+
+/* Define if you have the shl_load function. */
+/* #undef HAVE_SHL_LOAD */
+
+/* Define to 1 if you have the `siglongjmp' function. */
+#define HAVE_SIGLONGJMP 1
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `sigsetjmp' function. */
+/* #undef HAVE_SIGSETJMP */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Set to 1 if the std::isinf function is found in <cmath> */
+/* #undef HAVE_STD_ISINF_IN_CMATH */
+
+/* Set to 1 if the std::isnan function is found in <cmath> */
+#define HAVE_STD_ISNAN_IN_CMATH 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strcmp' function. */
+#define HAVE_STRCMP 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+#ifndef USE_MINGW
+#define HAVE_STRERROR_R 1
+#endif
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if you have the `strtof' function. */
+#define HAVE_STRTOF 1
+
+/* Define to 1 if you have the `strtoll' function. */
+#define HAVE_STRTOLL 1
+
+/* Define to 1 if you have the `strtoq' function. */
+#define HAVE_STRTOQ 1
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/dl.h> header file. */
+/* #undef HAVE_SYS_DL_H */
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#define HAVE_SYS_UIO_H 1
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the <termios.h> header file. */
+#define HAVE_TERMIOS_H 1
+
+/* Define if the neat program is available */
+/* #undef HAVE_TWOPI */
+
+/* Define to 1 if the system has the type `uint64_t'. */
+#define HAVE_UINT64_T 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if the system has the type `u_int64_t'. */
+/* #undef HAVE_U_INT64_T */
+
+/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
+/* #undef HAVE_VALGRIND_VALGRIND_H */
+
+/* Define to 1 if you have the <windows.h> header file. */
+/* #undef HAVE_WINDOWS_H */
+
+/* Define to 1 if you have the `writev' function. */
+#define HAVE_WRITEV 1
+
+/* Define if the xdot.py program is available */
+/* #undef HAVE_XDOT_PY */
+
+/* Have host's _alloca */
+/* #undef HAVE__ALLOCA */
+
+/* Have host's __alloca */
+/* #undef HAVE___ALLOCA */
+
+/* Have host's __ashldi3 */
+/* #undef HAVE___ASHLDI3 */
+
+/* Have host's __ashrdi3 */
+/* #undef HAVE___ASHRDI3 */
+
+/* Have host's __chkstk */
+/* #undef HAVE___CHKSTK */
+
+/* Have host's __cmpdi2 */
+/* #undef HAVE___CMPDI2 */
+
+/* Have host's __divdi3 */
+/* #undef HAVE___DIVDI3 */
+
+/* Define to 1 if you have the `__dso_handle' function. */
+#define HAVE___DSO_HANDLE 1
+
+/* Have host's __fixdfdi */
+/* #undef HAVE___FIXDFDI */
+
+/* Have host's __fixsfdi */
+/* #undef HAVE___FIXSFDI */
+
+/* Have host's __floatdidf */
+/* #undef HAVE___FLOATDIDF */
+
+/* Have host's __lshrdi3 */
+/* #undef HAVE___LSHRDI3 */
+
+/* Have host's __main */
+/* #undef HAVE___MAIN */
+
+/* Have host's __moddi3 */
+/* #undef HAVE___MODDI3 */
+
+/* Have host's __udivdi3 */
+/* #undef HAVE___UDIVDI3 */
+
+/* Have host's __umoddi3 */
+/* #undef HAVE___UMODDI3 */
+
+/* Have host's ___chkstk */
+/* #undef HAVE____CHKSTK */
+
+/* Linker version detected at compile time. */
+#define HOST_LINK_VERSION "2.20.1"
+
+/* Installation directory for binary executables */
+#define LLVM_BINDIR "/opt/llvm-android/bin"
+
+/* Time at which LLVM was configured */
+#define LLVM_CONFIGTIME "Tue May  8 14:22:45 CST 2012"
+
+/* Installation directory for data files */
+#define LLVM_DATADIR "/opt/llvm-android/share/llvm"
+
+/* Target triple LLVM will generate code for by default */
+#define LLVM_DEFAULT_TARGET_TRIPLE "i386-unknown-linux"
+
+/* Installation directory for documentation */
+#define LLVM_DOCSDIR "/opt/llvm-android/share/doc/llvm"
+
+/* Define if threads enabled */
+#define LLVM_ENABLE_THREADS 1
+
+/* Installation directory for config files */
+#define LLVM_ETCDIR "/opt/llvm-android/etc/llvm"
+
+/* Has gcc/MSVC atomic intrinsics */
+#define LLVM_HAS_ATOMICS 1
+
+/* Installation directory for include files */
+#define LLVM_INCLUDEDIR "/opt/llvm-android/include"
+
+/* Installation directory for .info files */
+#define LLVM_INFODIR "/opt/llvm-android/info"
+
+/* Installation directory for libraries */
+#define LLVM_LIBDIR "/opt/llvm-android/lib"
+
+/* Installation directory for man pages */
+#define LLVM_MANDIR "/opt/llvm-android/man"
+
+/* Define to path to circo program if found or 'echo circo' otherwise */
+/* #undef LLVM_PATH_CIRCO */
+
+/* Define to path to dot program if found or 'echo dot' otherwise */
+/* #undef LLVM_PATH_DOT */
+
+/* Define to path to dotty program if found or 'echo dotty' otherwise */
+/* #undef LLVM_PATH_DOTTY */
+
+/* Define to path to fdp program if found or 'echo fdp' otherwise */
+/* #undef LLVM_PATH_FDP */
+
+/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
+/* #undef LLVM_PATH_GRAPHVIZ */
+
+/* Define to path to gv program if found or 'echo gv' otherwise */
+/* #undef LLVM_PATH_GV */
+
+/* Define to path to neato program if found or 'echo neato' otherwise */
+/* #undef LLVM_PATH_NEATO */
+
+/* Define to path to twopi program if found or 'echo twopi' otherwise */
+/* #undef LLVM_PATH_TWOPI */
+
+/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
+/* #undef LLVM_PATH_XDOT_PY */
+
+/* Installation prefix directory */
+#define LLVM_PREFIX "/opt/llvm-android"
+
+/* Define if we have the Intel JIT API runtime support library */
+#define LLVM_USE_INTEL_JITEVENTS 0
+
+/* Define if we have the oprofile JIT-support library */
+#define LLVM_USE_OPROFILE 0
+
+/* Major version of the LLVM API */
+#define LLVM_VERSION_MAJOR 3
+
+/* Minor version of the LLVM API */
+#define LLVM_VERSION_MINOR 5
+
+/* Define if the OS needs help to load dependent libraries for dlopen(). */
+/* #undef LTDL_DLOPEN_DEPLIBS */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#define LTDL_OBJDIR ".libs/"
+
+/* Define to the name of the environment variable that determines the dynamic
+   library search path. */
+#define LTDL_SHLIBPATH_VAR "LD_LIBRARY_PATH"
+
+/* Define to the extension used for shared libraries, say, ".so". */
+#define LTDL_SHLIB_EXT ".so"
+
+/* Define to the system default library search path. */
+#define LTDL_SYSSEARCHPATH "/lib:/usr/lib:/usr/local/lib:/lib:/usr/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib32:/usr/lib32:/usr/local/lib32:/usr/x86_64-pc-linux-gnu/lib:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/32:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32"
+
+/* Define if /dev/zero should be used when mapping RWX memory, or undefine if
+   its not necessary */
+/* #undef NEED_DEV_ZERO_FOR_MMAP */
+
+/* Define if dlsym() requires a leading underscore in symbol names. */
+/* #undef NEED_USCORE */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "http://llvm.org/bugs/"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "LLVM"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "LLVM 3.4"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "llvm"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "3.4"
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+/* #undef TM_IN_SYS_TIME */
+
+/* Define if use udis86 library */
+#define USE_UDIS86 0
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to a type to use for `error_t' if it is not otherwise available. */
+/* #undef error_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef pid_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+#include "llvm/Config/llvm-platform-config.h"
+
+#endif
diff --git a/device/include/llvm/Config/llvm-config.h b/device/include/llvm/Config/llvm-config.h
new file mode 100644
index 0000000..252a5db
--- /dev/null
+++ b/device/include/llvm/Config/llvm-config.h
@@ -0,0 +1,94 @@
+/* include/llvm/Config/llvm-config.h.  Generated from llvm-config.h.in by configure.  */
+/*===-- llvm/config/llvm-config.h - llvm configure variable -------*- C -*-===*/
+/*                                                                            */
+/*                     The LLVM Compiler Infrastructure                       */
+/*                                                                            */
+/* This file is distributed under the University of Illinois Open Source      */
+/* License. See LICENSE.TXT for details.                                      */
+/*                                                                            */
+/*===----------------------------------------------------------------------===*/
+
+/* This file enumerates all of the llvm variables from configure so that
+   they can be in exported headers and won't override package specific
+   directives.  This is a C file so we can include it in the llvm-c headers.  */
+
+/* To avoid multiple inclusions of these variables when we include the exported
+   headers and config.h, conditionally include these.  */
+/* TODO: This is a bit of a hack.  */
+#ifndef CONFIG_H
+
+/* Installation directory for binary executables */
+#define LLVM_BINDIR "/opt/llvm-android/bin"
+
+/* Time at which LLVM was configured */
+#define LLVM_CONFIGTIME "Tue May  8 14:22:45 CST 2012"
+
+/* Installation directory for data files */
+#define LLVM_DATADIR "/opt/llvm-android/share/llvm"
+
+/* Target triple LLVM will generate code for by default */
+#define LLVM_DEFAULT_TARGET_TRIPLE "i386-unknown-linux"
+
+/* Installation directory for documentation */
+#define LLVM_DOCSDIR "/opt/llvm-android/share/doc/llvm"
+
+/* Define if threads enabled */
+#define LLVM_ENABLE_THREADS 1
+
+/* Installation directory for config files */
+#define LLVM_ETCDIR "/opt/llvm-android/etc/llvm"
+
+/* Has gcc/MSVC atomic intrinsics */
+#define LLVM_HAS_ATOMICS 1
+
+/* Installation directory for include files */
+#define LLVM_INCLUDEDIR "/opt/llvm-android/include"
+
+/* Installation directory for .info files */
+#define LLVM_INFODIR "/opt/llvm-android/info"
+
+/* Installation directory for libraries */
+#define LLVM_LIBDIR "/opt/llvm-android/lib"
+
+/* Installation directory for man pages */
+#define LLVM_MANDIR "/opt/llvm-android/man"
+
+/* Define to path to circo program if found or 'echo circo' otherwise */
+/* #undef LLVM_PATH_CIRCO */
+
+/* Define to path to dot program if found or 'echo dot' otherwise */
+/* #undef LLVM_PATH_DOT */
+
+/* Define to path to dotty program if found or 'echo dotty' otherwise */
+/* #undef LLVM_PATH_DOTTY */
+
+/* Define to path to fdp program if found or 'echo fdp' otherwise */
+/* #undef LLVM_PATH_FDP */
+
+/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
+/* #undef LLVM_PATH_GRAPHVIZ */
+
+/* Define to path to gv program if found or 'echo gv' otherwise */
+/* #undef LLVM_PATH_GV */
+
+/* Define to path to neato program if found or 'echo neato' otherwise */
+/* #undef LLVM_PATH_NEATO */
+
+/* Define to path to twopi program if found or 'echo twopi' otherwise */
+/* #undef LLVM_PATH_TWOPI */
+
+/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
+/* #undef LLVM_PATH_XDOT_PY */
+
+/* Installation prefix directory */
+#define LLVM_PREFIX "/opt/llvm-android"
+
+/* Major version of the LLVM API */
+#define LLVM_VERSION_MAJOR 3
+
+/* Minor version of the LLVM API */
+#define LLVM_VERSION_MINOR 5
+
+#include "llvm/Config/llvm-platform-config.h"
+
+#endif
diff --git a/host/include/llvm/Config/AsmParsers.def b/host/include/llvm/Config/AsmParsers.def
new file mode 100644
index 0000000..8fd67da
--- /dev/null
+++ b/host/include/llvm/Config/AsmParsers.def
@@ -0,0 +1,32 @@
+//===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file enumerates all of the assembly-language parsers
+// supported by this build of LLVM. Clients of this file should define
+// the LLVM_ASM_PARSER macro to be a function-like macro with a
+// single parameter (the name of the target whose assembly can be
+// generated); including this file will then enumerate all of the
+// targets with assembly parsers.
+//
+// The set of targets supported by LLVM is generated at configuration
+// time, at which point this header is generated. Do not modify this
+// header directly.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ASM_PARSER
+#  error Please define the macro LLVM_ASM_PARSER(TargetName)
+#endif
+
+LLVM_ASM_PARSER(ARM)
+LLVM_ASM_PARSER(Mips)
+LLVM_ASM_PARSER(X86)
+LLVM_ASM_PARSER(AArch64)
+
+#undef LLVM_ASM_PARSER
diff --git a/host/include/llvm/Config/AsmPrinters.def b/host/include/llvm/Config/AsmPrinters.def
new file mode 100644
index 0000000..07f6adf
--- /dev/null
+++ b/host/include/llvm/Config/AsmPrinters.def
@@ -0,0 +1,32 @@
+//===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file enumerates all of the assembly-language printers
+// supported by this build of LLVM. Clients of this file should define
+// the LLVM_ASM_PRINTER macro to be a function-like macro with a
+// single parameter (the name of the target whose assembly can be
+// generated); including this file will then enumerate all of the
+// targets with assembly printers.
+//
+// The set of targets supported by LLVM is generated at configuration
+// time, at which point this header is generated. Do not modify this
+// header directly.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_ASM_PRINTER
+#  error Please define the macro LLVM_ASM_PRINTER(TargetName)
+#endif
+
+LLVM_ASM_PRINTER(ARM)
+LLVM_ASM_PRINTER(Mips)
+LLVM_ASM_PRINTER(X86)
+LLVM_ASM_PRINTER(AArch64)
+
+#undef LLVM_ASM_PRINTER
diff --git a/host/include/llvm/Config/Disassemblers.def b/host/include/llvm/Config/Disassemblers.def
new file mode 100644
index 0000000..18557af
--- /dev/null
+++ b/host/include/llvm/Config/Disassemblers.def
@@ -0,0 +1,32 @@
+//===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file enumerates all of the assembly-language parsers
+// supported by this build of LLVM. Clients of this file should define
+// the LLVM_ASM_PARSER macro to be a function-like macro with a
+// single parameter (the name of the target whose assembly can be
+// generated); including this file will then enumerate all of the
+// targets with assembly parsers.
+//
+// The set of targets supported by LLVM is generated at configuration
+// time, at which point this header is generated. Do not modify this
+// header directly.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_DISASSEMBLER
+#  error Please define the macro LLVM_DISASSEMBLER(TargetName)
+#endif
+
+LLVM_DISASSEMBLER(ARM)
+LLVM_DISASSEMBLER(Mips)
+LLVM_DISASSEMBLER(X86)
+LLVM_DISASSEMBLER(AArch64)
+
+#undef LLVM_DISASSEMBLER
diff --git a/host/include/llvm/Config/Targets.def b/host/include/llvm/Config/Targets.def
new file mode 100644
index 0000000..2985cf3
--- /dev/null
+++ b/host/include/llvm/Config/Targets.def
@@ -0,0 +1,31 @@
+/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
+|*                                                                            *|
+|*                     The LLVM Compiler Infrastructure                       *|
+|*                                                                            *|
+|* This file is distributed under the University of Illinois Open Source      *|
+|* License. See LICENSE.TXT for details.                                      *|
+|*                                                                            *|
+|*===----------------------------------------------------------------------===*|
+|*                                                                            *|
+|* This file enumerates all of the target architectures supported by          *|
+|* this build of LLVM. Clients of this file should define the                 *|
+|* LLVM_TARGET macro to be a function-like macro with a single                *|
+|* parameter (the name of the target); including this file will then          *|
+|* enumerate all of the targets.                                              *|
+|*                                                                            *|
+|* The set of targets supported by LLVM is generated at configuration         *|
+|* time, at which point this header is generated. Do not modify this          *|
+|* header directly.                                                           *|
+|*                                                                            *|
+\*===----------------------------------------------------------------------===*/
+
+#ifndef LLVM_TARGET
+#  error Please define the macro LLVM_TARGET(TargetName)
+#endif
+
+LLVM_TARGET(ARM)
+LLVM_TARGET(Mips)
+LLVM_TARGET(X86)
+LLVM_TARGET(AArch64)
+
+#undef LLVM_TARGET
diff --git a/host/include/llvm/Config/config.h b/host/include/llvm/Config/config.h
new file mode 100644
index 0000000..42115e4
--- /dev/null
+++ b/host/include/llvm/Config/config.h
@@ -0,0 +1,725 @@
+/* include/llvm/Config/config.h.  Generated from config.h.in by configure.  */
+/* include/llvm/Config/config.h.in.  Generated from autoconf/configure.ac by autoheader.  */
+
+#ifndef CONFIG_H
+#define CONFIG_H
+
+/* Bug report URL. */
+#define BUG_REPORT_URL "http://llvm.org/bugs/"
+
+/* Relative directory for resource files */
+#define CLANG_RESOURCE_DIR ""
+
+/* Directories clang will search for headers */
+#define C_INCLUDE_DIRS ""
+
+/* Default <path> to all compiler invocations for --sysroot=<path>. */
+#define DEFAULT_SYSROOT ""
+
+/* Define if position independent code is enabled */
+#define ENABLE_PIC 1
+
+/* Define if timestamp information (e.g., __DATE___) is allowed */
+#define ENABLE_TIMESTAMPS 1
+
+/* Directory where gcc is installed. */
+#define GCC_INSTALL_PREFIX ""
+
+/* Define to 1 if you have the `argz_append' function. */
+/* #undef HAVE_ARGZ_APPEND */
+
+/* Define to 1 if you have the `argz_create_sep' function. */
+/* #undef HAVE_ARGZ_CREATE_SEP */
+
+/* Define to 1 if you have the <argz.h> header file. */
+/* #undef HAVE_ARGZ_H */
+
+/* Define to 1 if you have the `argz_insert' function. */
+/* #undef HAVE_ARGZ_INSERT */
+
+/* Define to 1 if you have the `argz_next' function. */
+/* #undef HAVE_ARGZ_NEXT */
+
+/* Define to 1 if you have the `argz_stringify' function. */
+/* #undef HAVE_ARGZ_STRINGIFY */
+
+/* Define to 1 if you have the <assert.h> header file. */
+#define HAVE_ASSERT_H 1
+
+/* Define to 1 if you have the `backtrace' function. */
+/* #define HAVE_BACKTRACE 1 */ /* Defined by AndroidConfig.h */
+
+/* Define to 1 if you have the `bcopy' function. */
+/* #undef HAVE_BCOPY */
+
+/* Define to 1 if you have the `ceilf' function. */
+#define HAVE_CEILF 1
+
+/* Define if the neat program is available */
+/* #undef HAVE_CIRCO */
+
+/* Define to 1 if you have the `closedir' function. */
+#define HAVE_CLOSEDIR 1
+
+/* Define to 1 if you have the <CrashReporterClient.h> header file. */
+/* #undef HAVE_CRASHREPORTERCLIENT_H */
+
+/* Define if __crashreporter_info__ exists. */
+#define HAVE_CRASHREPORTER_INFO 0
+
+/* Define to 1 if you have the <ctype.h> header file. */
+#define HAVE_CTYPE_H 1
+
+/* Define to 1 if you have the <cxxabi.h> header file. */
+#define HAVE_CXXABI_H 0
+
+/* Define to 1 if you have the declaration of `strerror_s', and to 0 if you
+   don't. */
+#define HAVE_DECL_STRERROR_S 0
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#define HAVE_DIRENT_H 1
+
+/* Define if you have the GNU dld library. */
+/* #undef HAVE_DLD */
+
+/* Define to 1 if you have the <dld.h> header file. */
+/* #undef HAVE_DLD_H */
+
+/* Define to 1 if you have the `dlerror' function. */
+#define HAVE_DLERROR 1
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#define HAVE_DLFCN_H 1
+
+/* Define if dlopen() is available on this platform. */
+#define HAVE_DLOPEN 1
+
+/* Define to 1 if you have the <dl.h> header file. */
+/* #undef HAVE_DL_H */
+
+/* Define if the dot program is available */
+/* #undef HAVE_DOT */
+
+/* Define if the dotty program is available */
+/* #undef HAVE_DOTTY */
+
+/* Define if you have the _dyld_func_lookup function. */
+/* #undef HAVE_DYLD */
+
+/* Define to 1 if you have the <errno.h> header file. */
+#define HAVE_ERRNO_H 1
+
+/* Define to 1 if the system has the type `error_t'. */
+#define HAVE_ERROR_T 1
+
+/* Define to 1 if you have the <execinfo.h> header file. */
+#define HAVE_EXECINFO_H 1
+
+/* Define to 1 if you have the <fcntl.h> header file. */
+#define HAVE_FCNTL_H 1
+
+/* Define if the neat program is available */
+/* #undef HAVE_FDP */
+
+/* Define to 1 if you have the <fenv.h> header file. */
+#define HAVE_FENV_H 1
+
+/* Define if libffi is available on this platform. */
+/* #undef HAVE_FFI_CALL */
+
+/* Define to 1 if you have the <ffi/ffi.h> header file. */
+/* #undef HAVE_FFI_FFI_H */
+
+/* Define to 1 if you have the <ffi.h> header file. */
+/* #undef HAVE_FFI_H */
+
+/* Set to 1 if the finite function is found in <ieeefp.h> */
+/* #undef HAVE_FINITE_IN_IEEEFP_H */
+
+/* Define to 1 if you have the `floorf' function. */
+#define HAVE_FLOORF 1
+
+/* Define to 1 if you have the `fmodf' function. */
+#define HAVE_FMODF 1
+
+#ifdef __APPLE__
+/* Define to 1 if you have the `futimes' function. */
+#define HAVE_FUTIMES 1
+#else
+/* Define to 1 if you have the `futimens' function. */
+#define HAVE_FUTIMENS 1
+#endif  // __APPLE__
+
+/* Define to 1 if you have the `getcwd' function. */
+#define HAVE_GETCWD 1
+
+/* Define to 1 if you have the `getpagesize' function. */
+#define HAVE_GETPAGESIZE 1
+
+/* Define to 1 if you have the `getrlimit' function. */
+#define HAVE_GETRLIMIT 1
+
+/* Define to 1 if you have the `getrusage' function. */
+#define HAVE_GETRUSAGE 1
+
+/* Define to 1 if you have the `gettimeofday' function. */
+#define HAVE_GETTIMEOFDAY 1
+
+/* Define if the Graphviz program is available */
+/* #undef HAVE_GRAPHVIZ */
+
+/* Define if the gv program is available */
+/* #undef HAVE_GV */
+
+/* Define to 1 if you have the `index' function. */
+/* #undef HAVE_INDEX */
+
+/* Define to 1 if the system has the type `int64_t'. */
+#define HAVE_INT64_T 1
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#define HAVE_INTTYPES_H 1
+
+/* Define to 1 if you have the `isatty' function. */
+#define HAVE_ISATTY 1
+
+/* Set to 1 if the isinf function is found in <cmath> */
+#define HAVE_ISINF_IN_CMATH 1
+
+/* Set to 1 if the isinf function is found in <math.h> */
+#define HAVE_ISINF_IN_MATH_H 1
+
+/* Set to 1 if the isnan function is found in <cmath> */
+#define HAVE_ISNAN_IN_CMATH 1
+
+/* Set to 1 if the isnan function is found in <math.h> */
+#define HAVE_ISNAN_IN_MATH_H 1
+
+/* Define if you have the libdl library or equivalent. */
+#define HAVE_LIBDL 1
+
+/* Define to 1 if you have the `imagehlp' library (-limagehlp). */
+/* #undef HAVE_LIBIMAGEHLP */
+
+/* Define to 1 if you have the `m' library (-lm). */
+#define HAVE_LIBM 1
+
+/* Define to 1 if you have the `psapi' library (-lpsapi). */
+/* #undef HAVE_LIBPSAPI */
+
+/* Define to 1 if you have the `pthread' library (-lpthread). */
+#define HAVE_LIBPTHREAD 1
+
+/* Define to 1 if you have the `shell32' library (-lshell32). */
+#define HAVE_LIBSHELL32 1
+
+/* Define to 1 if you have the `udis86' library (-ludis86). */
+/* #undef HAVE_LIBUDIS86 */
+
+/* Define to 1 if you have the <limits.h> header file. */
+#define HAVE_LIMITS_H 1
+
+/* Define if you can use -Wl,-export-dynamic. */
+#define HAVE_LINK_EXPORT_DYNAMIC 1
+
+/* Define to 1 if you have the <link.h> header file. */
+#define HAVE_LINK_H 1
+
+/* Define if you can use -Wl,-R. to pass -R. to the linker, in order to add
+   the current directory to the dynamic linker search path. */
+#define HAVE_LINK_R 1
+
+/* Define to 1 if you have the `longjmp' function. */
+#define HAVE_LONGJMP 1
+
+/* Define to 1 if you have the <mach/mach.h> header file. */
+/* #undef HAVE_MACH_MACH_H */
+
+/* Define to 1 if you have the <mach-o/dyld.h> header file. */
+/* #undef HAVE_MACH_O_DYLD_H */
+
+/* Define if mallinfo() is available on this platform. */
+#if !defined(__APPLE__)
+#define HAVE_MALLINFO 1
+#else
+/* #undef HAVE_MALLINFO */
+#endif
+
+/* Define to 1 if you have the <malloc.h> header file. */
+/* #define HAVE_MALLOC_H 1 */ /* Defined by AndroidConfig.h */
+
+/* Define to 1 if you have the <malloc/malloc.h> header file. */
+/* #undef HAVE_MALLOC_MALLOC_H */
+
+/* Define to 1 if you have the `malloc_zone_statistics' function. */
+/* #undef HAVE_MALLOC_ZONE_STATISTICS */
+
+/* Define to 1 if you have the `memcpy' function. */
+#define HAVE_MEMCPY 1
+
+/* Define to 1 if you have the `memmove' function. */
+#define HAVE_MEMMOVE 1
+
+/* Define to 1 if you have the <memory.h> header file. */
+#define HAVE_MEMORY_H 1
+
+/* Define to 1 if you have the `mkdtemp' function. */
+#define HAVE_MKDTEMP 1
+
+/* Define to 1 if you have the `mkstemp' function. */
+#define HAVE_MKSTEMP 1
+
+/* Define to 1 if you have the `mktemp' function. */
+#define HAVE_MKTEMP 1
+
+/* Define to 1 if you have a working `mmap' system call. */
+#define HAVE_MMAP 1
+
+/* Define if mmap() uses MAP_ANONYMOUS to map anonymous pages, or undefine if
+   it uses MAP_ANON */
+#if !defined(__APPLE__)
+#define HAVE_MMAP_ANONYMOUS
+#else
+/* #undef HAVE_MMAP_ANONYMOUS */
+#endif
+
+/* Define if mmap() can map files into memory */
+#define HAVE_MMAP_FILE
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+/* #undef HAVE_NDIR_H */
+
+/* Define to 1 if you have the `nearbyintf' function. */
+#define HAVE_NEARBYINTF 1
+
+/* Define if the neat program is available */
+/* #undef HAVE_NEATO */
+
+/* Define to 1 if you have the `opendir' function. */
+#define HAVE_OPENDIR 1
+
+/* Define to 1 if you have the `posix_spawn' function. */
+#define HAVE_POSIX_SPAWN 1
+
+/* Define to 1 if you have the `powf' function. */
+#define HAVE_POWF 1
+
+/* Define to 1 if you have the `pread' function. */
+#if !defined(_WIN32) && !defined(_WIN64)
+#define HAVE_PREAD 1
+#endif
+
+/* Define if libtool can extract symbol lists from object files. */
+#define HAVE_PRELOADED_SYMBOLS 1
+
+/* Define to have the %a format string */
+#define HAVE_PRINTF_A 1
+
+#if !defined(_WIN32) && !defined(_WIN64)
+
+/* Have pthread_getspecific */
+#define HAVE_PTHREAD_GETSPECIFIC 1
+
+/* Define to 1 if you have the <pthread.h> header file. */
+#define HAVE_PTHREAD_H 1
+
+/* Have pthread_mutex_lock */
+#define HAVE_PTHREAD_MUTEX_LOCK 1
+
+/* Have pthread_rwlock_init */
+#define HAVE_PTHREAD_RWLOCK_INIT 1
+
+#endif /* !defined(_WIN32) && !defined(_WIN64) */
+
+/* Define to 1 if srand48/lrand48/drand48 exist in <stdlib.h> */
+#define HAVE_RAND48 1
+
+/* Define to 1 if you have the `readdir' function. */
+#define HAVE_READDIR 1
+
+/* Define to 1 if you have the `realpath' function. */
+#define HAVE_REALPATH 1
+
+/* Define to 1 if you have the `rindex' function. */
+/* #undef HAVE_RINDEX */
+
+/* Define to 1 if you have the `rintf' function. */
+#define HAVE_RINTF 1
+
+/* Define to 1 if you have the `round' function. */
+#define HAVE_ROUND 1
+
+/* Define to 1 if you have the `roundf' function. */
+#define HAVE_ROUNDF 1
+
+/* Define to 1 if you have the `sbrk' function. */
+#define HAVE_SBRK 1
+
+/* Define to 1 if you have the `setenv' function. */
+#define HAVE_SETENV 1
+
+/* Define to 1 if you have the `setjmp' function. */
+#define HAVE_SETJMP 1
+
+/* Define to 1 if you have the <setjmp.h> header file. */
+#define HAVE_SETJMP_H 1
+
+/* Define to 1 if you have the `setrlimit' function. */
+#define HAVE_SETRLIMIT 1
+
+/* Define if you have the shl_load function. */
+/* #undef HAVE_SHL_LOAD */
+
+/* Define to 1 if you have the `siglongjmp' function. */
+#define HAVE_SIGLONGJMP 1
+
+/* Define to 1 if you have the <signal.h> header file. */
+#define HAVE_SIGNAL_H 1
+
+/* Define to 1 if you have the `sigsetjmp' function. */
+/* #undef HAVE_SIGSETJMP */
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#define HAVE_STDINT_H 1
+
+/* Define to 1 if you have the <stdio.h> header file. */
+#define HAVE_STDIO_H 1
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#define HAVE_STDLIB_H 1
+
+/* Set to 1 if the std::isinf function is found in <cmath> */
+#define HAVE_STD_ISINF_IN_CMATH 1
+
+/* Set to 1 if the std::isnan function is found in <cmath> */
+#define HAVE_STD_ISNAN_IN_CMATH 1
+
+/* Define to 1 if you have the `strchr' function. */
+#define HAVE_STRCHR 1
+
+/* Define to 1 if you have the `strcmp' function. */
+#define HAVE_STRCMP 1
+
+/* Define to 1 if you have the `strdup' function. */
+#define HAVE_STRDUP 1
+
+/* Define to 1 if you have the `strerror' function. */
+#define HAVE_STRERROR 1
+
+/* Define to 1 if you have the `strerror_r' function. */
+#ifndef USE_MINGW
+#define HAVE_STRERROR_R 1
+#endif
+
+/* Define to 1 if you have the <strings.h> header file. */
+#define HAVE_STRINGS_H 1
+
+/* Define to 1 if you have the <string.h> header file. */
+#define HAVE_STRING_H 1
+
+/* Define to 1 if you have the `strrchr' function. */
+#define HAVE_STRRCHR 1
+
+/* Define to 1 if you have the `strtof' function. */
+#define HAVE_STRTOF 1
+
+/* Define to 1 if you have the `strtoll' function. */
+#define HAVE_STRTOLL 1
+
+/* Define to 1 if you have the `strtoq' function. */
+#define HAVE_STRTOQ 1
+
+/* Define to 1 if you have the `sysconf' function. */
+#define HAVE_SYSCONF 1
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_DIR_H */
+
+/* Define to 1 if you have the <sys/dl.h> header file. */
+/* #undef HAVE_SYS_DL_H */
+
+/* Define to 1 if you have the <sys/ioctl.h> header file. */
+#define HAVE_SYS_IOCTL_H 1
+
+/* Define to 1 if you have the <sys/mman.h> header file. */
+#define HAVE_SYS_MMAN_H 1
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+/* #undef HAVE_SYS_NDIR_H */
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#define HAVE_SYS_PARAM_H 1
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#define HAVE_SYS_RESOURCE_H 1
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#define HAVE_SYS_STAT_H 1
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#define HAVE_SYS_TIME_H 1
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#define HAVE_SYS_TYPES_H 1
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+/* #define HAVE_SYS_UIO_H 1 */
+
+/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
+#define HAVE_SYS_WAIT_H 1
+
+/* Define to 1 if you have the <termios.h> header file. */
+#define HAVE_TERMIOS_H 1
+
+/* Define if the neat program is available */
+/* #undef HAVE_TWOPI */
+
+/* Define to 1 if the system has the type `uint64_t'. */
+#define HAVE_UINT64_T 1
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#define HAVE_UNISTD_H 1
+
+/* Define to 1 if you have the <utime.h> header file. */
+#define HAVE_UTIME_H 1
+
+/* Define to 1 if the system has the type `u_int64_t'. */
+/* #undef HAVE_U_INT64_T */
+
+/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
+/* #undef HAVE_VALGRIND_VALGRIND_H */
+
+#if defined(_WIN32) || defined(_WIN64)
+/* Define to 1 if you have the <windows.h> header file. */
+#define HAVE_WINDOWS_H 1
+
+/* Define to 1 if you have the `writev' function. */
+/* #undef HAVE_WRITEV */
+
+#else
+/* Define to 1 if you have the <windows.h> header file. */
+/* #undef HAVE_WINDOWS_H */
+
+/* Define to 1 if you have the `writev' function. */
+#define HAVE_WRITEV 1
+#endif
+
+/* Define if the xdot.py program is available */
+/* #undef HAVE_XDOT_PY */
+
+/* Have host's _alloca */
+/* #undef HAVE__ALLOCA */
+
+/* Have host's __alloca */
+/* #undef HAVE___ALLOCA */
+
+/* Have host's __ashldi3 */
+/* #undef HAVE___ASHLDI3 */
+
+/* Have host's __ashrdi3 */
+/* #undef HAVE___ASHRDI3 */
+
+/* Have host's __chkstk */
+/* #undef HAVE___CHKSTK */
+
+/* Have host's __cmpdi2 */
+/* #undef HAVE___CMPDI2 */
+
+/* Have host's __divdi3 */
+/* #undef HAVE___DIVDI3 */
+
+/* Define to 1 if you have the `__dso_handle' function. */
+/* #undef HAVE___DSO_HANDLE */
+
+/* Have host's __fixdfdi */
+/* #undef HAVE___FIXDFDI */
+
+/* Have host's __fixsfdi */
+/* #undef HAVE___FIXSFDI */
+
+/* Have host's __floatdidf */
+/* #undef HAVE___FLOATDIDF */
+
+/* Have host's __lshrdi3 */
+/* #undef HAVE___LSHRDI3 */
+
+/* Have host's __main */
+/* #undef HAVE___MAIN */
+
+/* Have host's __moddi3 */
+/* #undef HAVE___MODDI3 */
+
+/* Have host's __udivdi3 */
+/* #undef HAVE___UDIVDI3 */
+
+/* Have host's __umoddi3 */
+/* #undef HAVE___UMODDI3 */
+
+/* Have host's ___chkstk */
+/* #undef HAVE____CHKSTK */
+
+/* Linker version detected at compile time. */
+#define HOST_LINK_VERSION "2.20.1"
+
+/* Installation directory for binary executables */
+#define LLVM_BINDIR "/opt/llvm-android/bin"
+
+/* Time at which LLVM was configured */
+#define LLVM_CONFIGTIME "Tue May  8 14:22:45 CST 2012"
+
+/* Installation directory for data files */
+#define LLVM_DATADIR "/opt/llvm-android/share/llvm"
+
+/* Target triple LLVM will generate code for by default */
+#define LLVM_DEFAULT_TARGET_TRIPLE "i386-unknown-linux"
+
+/* Installation directory for documentation */
+#define LLVM_DOCSDIR "/opt/llvm-android/share/doc/llvm"
+
+/* Define if threads enabled */
+#define LLVM_ENABLE_THREADS 1
+
+/* Installation directory for config files */
+#define LLVM_ETCDIR "/opt/llvm-android/etc/llvm"
+
+#if !defined(_WIN32) && !defined(_WIN64)
+
+/* Has gcc/MSVC atomic intrinsics */
+#define LLVM_HAS_ATOMICS 1
+
+#else
+
+#define LLVM_HAS_ATOMICS 0
+
+#endif /* !defined(_WIN32) && !defined(_WIN64) */
+
+/* Installation directory for include files */
+#define LLVM_INCLUDEDIR "/opt/llvm-android/include"
+
+/* Installation directory for .info files */
+#define LLVM_INFODIR "/opt/llvm-android/info"
+
+/* Installation directory for libraries */
+#define LLVM_LIBDIR "/opt/llvm-android/lib"
+
+/* Installation directory for man pages */
+#define LLVM_MANDIR "/opt/llvm-android/man"
+
+/* Define to path to circo program if found or 'echo circo' otherwise */
+/* #undef LLVM_PATH_CIRCO */
+
+/* Define to path to dot program if found or 'echo dot' otherwise */
+/* #undef LLVM_PATH_DOT */
+
+/* Define to path to dotty program if found or 'echo dotty' otherwise */
+/* #undef LLVM_PATH_DOTTY */
+
+/* Define to path to fdp program if found or 'echo fdp' otherwise */
+/* #undef LLVM_PATH_FDP */
+
+/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
+/* #undef LLVM_PATH_GRAPHVIZ */
+
+/* Define to path to gv program if found or 'echo gv' otherwise */
+/* #undef LLVM_PATH_GV */
+
+/* Define to path to neato program if found or 'echo neato' otherwise */
+/* #undef LLVM_PATH_NEATO */
+
+/* Define to path to twopi program if found or 'echo twopi' otherwise */
+/* #undef LLVM_PATH_TWOPI */
+
+/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
+/* #undef LLVM_PATH_XDOT_PY */
+
+/* Installation prefix directory */
+#define LLVM_PREFIX "/opt/llvm-android"
+
+/* Define if we have the Intel JIT API runtime support library */
+#define LLVM_USE_INTEL_JITEVENTS 0
+
+/* Define if we have the oprofile JIT-support library */
+#define LLVM_USE_OPROFILE 0
+
+/* Major version of the LLVM API */
+#define LLVM_VERSION_MAJOR 3
+
+/* Minor version of the LLVM API */
+#define LLVM_VERSION_MINOR 5
+
+/* Define if the OS needs help to load dependent libraries for dlopen(). */
+/* #undef LTDL_DLOPEN_DEPLIBS */
+
+/* Define to the sub-directory in which libtool stores uninstalled libraries.
+   */
+#define LTDL_OBJDIR ".libs/"
+
+/* Define to the name of the environment variable that determines the dynamic
+   library search path. */
+#define LTDL_SHLIBPATH_VAR "LD_LIBRARY_PATH"
+
+/* Define to the extension used for shared libraries, say, ".so". */
+#define LTDL_SHLIB_EXT ".so"
+
+/* Define to the system default library search path. */
+#define LTDL_SYSSEARCHPATH "/lib:/usr/lib:/usr/local/lib:/lib:/usr/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib32:/usr/lib32:/usr/local/lib32:/usr/x86_64-pc-linux-gnu/lib:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/32:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32"
+
+/* Define if /dev/zero should be used when mapping RWX memory, or undefine if
+   its not necessary */
+/* #undef NEED_DEV_ZERO_FOR_MMAP */
+
+/* Define if dlsym() requires a leading underscore in symbol names. */
+/* #undef NEED_USCORE */
+
+/* Define to the address where bug reports for this package should be sent. */
+#define PACKAGE_BUGREPORT "http://llvm.org/bugs/"
+
+/* Define to the full name of this package. */
+#define PACKAGE_NAME "LLVM"
+
+/* Define to the full name and version of this package. */
+#define PACKAGE_STRING "LLVM 3.5.svn"
+
+/* Define to the one symbol short name of this package. */
+#define PACKAGE_TARNAME "llvm"
+
+/* Define to the version of this package. */
+#define PACKAGE_VERSION "3.5"
+
+/* Define as the return type of signal handlers (`int' or `void'). */
+#define RETSIGTYPE void
+
+/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
+/* #undef STAT_MACROS_BROKEN */
+
+/* Define to 1 if you have the ANSI C header files. */
+#define STDC_HEADERS 1
+
+/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
+#define TIME_WITH_SYS_TIME 1
+
+/* Define to 1 if your <sys/time.h> declares `struct tm'. */
+/* #undef TM_IN_SYS_TIME */
+
+/* Define if use udis86 library */
+#define USE_UDIS86 0
+
+/* Define to empty if `const' does not conform to ANSI C. */
+/* #undef const */
+
+/* Define to a type to use for `error_t' if it is not otherwise available. */
+/* #undef error_t */
+
+/* Define to `int' if <sys/types.h> does not define. */
+/* #undef pid_t */
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+/* #undef size_t */
+
+#include "llvm/Config/llvm-platform-config.h"
+
+#endif
diff --git a/host/include/llvm/Config/llvm-config.h b/host/include/llvm/Config/llvm-config.h
new file mode 100644
index 0000000..95f85fe
--- /dev/null
+++ b/host/include/llvm/Config/llvm-config.h
@@ -0,0 +1,102 @@
+/* include/llvm/Config/llvm-config.h.  Generated from llvm-config.h.in by configure.  */
+/*===-- llvm/config/llvm-config.h - llvm configure variable -------*- C -*-===*/
+/*                                                                            */
+/*                     The LLVM Compiler Infrastructure                       */
+/*                                                                            */
+/* This file is distributed under the University of Illinois Open Source      */
+/* License. See LICENSE.TXT for details.                                      */
+/*                                                                            */
+/*===----------------------------------------------------------------------===*/
+
+/* This file enumerates all of the llvm variables from configure so that
+   they can be in exported headers and won't override package specific
+   directives.  This is a C file so we can include it in the llvm-c headers.  */
+
+/* To avoid multiple inclusions of these variables when we include the exported
+   headers and config.h, conditionally include these.  */
+/* TODO: This is a bit of a hack.  */
+#ifndef CONFIG_H
+
+/* Installation directory for binary executables */
+#define LLVM_BINDIR "/opt/llvm-android/bin"
+
+/* Time at which LLVM was configured */
+#define LLVM_CONFIGTIME "Tue May  8 14:22:45 CST 2012"
+
+/* Installation directory for data files */
+#define LLVM_DATADIR "/opt/llvm-android/share/llvm"
+
+/* Target triple LLVM will generate code for by default */
+#define LLVM_DEFAULT_TARGET_TRIPLE "i386-unknown-linux"
+
+/* Installation directory for documentation */
+#define LLVM_DOCSDIR "/opt/llvm-android/share/doc/llvm"
+
+/* Define if threads enabled */
+#define LLVM_ENABLE_THREADS 1
+
+/* Installation directory for config files */
+#define LLVM_ETCDIR "/opt/llvm-android/etc/llvm"
+
+#if !defined(_WIN32) && !defined(_WIN64)
+
+/* Has gcc/MSVC atomic intrinsics */
+#define LLVM_HAS_ATOMICS 1
+
+#else
+
+#define LLVM_HAS_ATOMICS 0
+
+#endif /* !defined(_WIN32) && !defined(_WIN64) */
+
+/* Installation directory for include files */
+#define LLVM_INCLUDEDIR "/opt/llvm-android/include"
+
+/* Installation directory for .info files */
+#define LLVM_INFODIR "/opt/llvm-android/info"
+
+/* Installation directory for libraries */
+#define LLVM_LIBDIR "/opt/llvm-android/lib"
+
+/* Installation directory for man pages */
+#define LLVM_MANDIR "/opt/llvm-android/man"
+
+/* Define to path to circo program if found or 'echo circo' otherwise */
+/* #undef LLVM_PATH_CIRCO */
+
+/* Define to path to dot program if found or 'echo dot' otherwise */
+/* #undef LLVM_PATH_DOT */
+
+/* Define to path to dotty program if found or 'echo dotty' otherwise */
+/* #undef LLVM_PATH_DOTTY */
+
+/* Define to path to fdp program if found or 'echo fdp' otherwise */
+/* #undef LLVM_PATH_FDP */
+
+/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
+/* #undef LLVM_PATH_GRAPHVIZ */
+
+/* Define to path to gv program if found or 'echo gv' otherwise */
+/* #undef LLVM_PATH_GV */
+
+/* Define to path to neato program if found or 'echo neato' otherwise */
+/* #undef LLVM_PATH_NEATO */
+
+/* Define to path to twopi program if found or 'echo twopi' otherwise */
+/* #undef LLVM_PATH_TWOPI */
+
+/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
+/* #undef LLVM_PATH_XDOT_PY */
+
+/* Installation prefix directory */
+#define LLVM_PREFIX "/opt/llvm-android"
+
+/* Major version of the LLVM API */
+#define LLVM_VERSION_MAJOR 3
+
+/* Minor version of the LLVM API */
+#define LLVM_VERSION_MINOR 5
+
+#include "llvm/Config/llvm-platform-config.h"
+
+#endif
diff --git a/include/llvm/Config/llvm-platform-config.h b/include/llvm/Config/llvm-platform-config.h
new file mode 100644
index 0000000..cd005be
--- /dev/null
+++ b/include/llvm/Config/llvm-platform-config.h
@@ -0,0 +1,160 @@
+#ifndef LLVM_NATIVE_CONFIG_H
+
+/*===-- llvm/config/llvm-native-config.h --------------------------*- C -*-===*/
+/*                                                                            */
+/*                     The LLVM Compiler Infrastructure                       */
+/*                                                                            */
+/* This file is distributed under the University of Illinois Open Source      */
+/* License. See LICENSE.TXT for details.                                      */
+/*                                                                            */
+/*===----------------------------------------------------------------------===*/
+
+#if defined(__i386__) || defined(__x86_64__)
+
+/* LLVM architecture name for the native architecture, if available */
+#define LLVM_NATIVE_ARCH X86
+
+/* Host triple LLVM will be executed on */
+#define LLVM_HOST_TRIPLE "i686-unknown-linux-gnu"
+
+/* LLVM name for the native AsmParser init function, if available */
+#define LLVM_NATIVE_ASMPARSER LLVMInitializeX86AsmParser
+
+/* LLVM name for the native AsmPrinter init function, if available */
+#define LLVM_NATIVE_ASMPRINTER LLVMInitializeX86AsmPrinter
+
+/* LLVM name for the native Disassembler init function, if available */
+#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeX86Disassembler
+
+/* LLVM name for the native Target init function, if available */
+#define LLVM_NATIVE_TARGET LLVMInitializeX86Target
+
+/* LLVM name for the native TargetInfo init function, if available */
+#define LLVM_NATIVE_TARGETINFO LLVMInitializeX86TargetInfo
+
+/* LLVM name for the native target MC init function, if available */
+#define LLVM_NATIVE_TARGETMC LLVMInitializeX86TargetMC
+
+
+#elif defined(__arm__)
+
+/* LLVM architecture name for the native architecture, if available */
+#define LLVM_NATIVE_ARCH ARM
+
+/* Host triple LLVM will be executed on */
+#define LLVM_HOST_TRIPLE "arm-unknown-linux-gnu"
+
+/* LLVM name for the native AsmParser init function, if available */
+#define LLVM_NATIVE_ASMPARSER LLVMInitializeARMAsmParser
+
+/* LLVM name for the native AsmPrinter init function, if available */
+#define LLVM_NATIVE_ASMPRINTER LLVMInitializeARMAsmPrinter
+
+/* LLVM name for the native Disassembler init function, if available */
+#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeARMDisassembler
+
+/* LLVM name for the native Target init function, if available */
+#define LLVM_NATIVE_TARGET LLVMInitializeARMTarget
+
+/* LLVM name for the native TargetInfo init function, if available */
+#define LLVM_NATIVE_TARGETINFO LLVMInitializeARMTargetInfo
+
+/* LLVM name for the native target MC init function, if available */
+#define LLVM_NATIVE_TARGETMC LLVMInitializeARMTargetMC
+
+
+#elif defined(__mips__)
+
+/* LLVM architecture name for the native architecture, if available */
+#define LLVM_NATIVE_ARCH Mips
+
+/* Host triple LLVM will be executed on */
+#define LLVM_HOST_TRIPLE "mipsel-unknown-linux-gnu"
+
+/* LLVM name for the native AsmParser init function, if available */
+#define LLVM_NATIVE_ASMPARSER LLVMInitializeMipsAsmParser
+
+/* LLVM name for the native AsmPrinter init function, if available */
+#define LLVM_NATIVE_ASMPRINTER LLVMInitializeMipsAsmPrinter
+
+/* LLVM name for the native Disassembler init function, if available */
+#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeMipsDisassembler
+
+/* LLVM name for the native Target init function, if available */
+#define LLVM_NATIVE_TARGET LLVMInitializeMipsTarget
+
+/* LLVM name for the native TargetInfo init function, if available */
+#define LLVM_NATIVE_TARGETINFO LLVMInitializeMipsTargetInfo
+
+/* LLVM name for the native target MC init function, if available */
+#define LLVM_NATIVE_TARGETMC LLVMInitializeMipsTargetMC
+
+#elif defined(__aarch64__)
+
+/* LLVM architecture name for the native architecture, if available */
+#define LLVM_NATIVE_ARCH AArch64
+
+/* Host triple LLVM will be executed on */
+#define LLVM_HOST_TRIPLE "aarch64-none-linux-gnu"
+
+/* LLVM name for the native AsmParser init function, if available */
+#define LLVM_NATIVE_ASMPARSER LLVMInitializeAArch64AsmParser
+
+/* LLVM name for the native AsmPrinter init function, if available */
+#define LLVM_NATIVE_ASMPRINTER LLVMInitializeAArch64AsmPrinter
+
+/* LLVM name for the native Disassembler init function, if available */
+#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeAArch64Disassembler
+
+/* LLVM name for the native Target init function, if available */
+#define LLVM_NATIVE_TARGET LLVMInitializeAArch64Target
+
+/* LLVM name for the native TargetInfo init function, if available */
+#define LLVM_NATIVE_TARGETINFO LLVMInitializeAArch64TargetInfo
+
+/* LLVM name for the native target MC init function, if available */
+#define LLVM_NATIVE_TARGETMC LLVMInitializeAArch64TargetMC
+
+#else
+
+#error "Unknown native architecture"
+
+#endif
+
+
+
+#if defined(_WIN32) || defined(_WIN64)
+
+/* Define if this is Unixish platform */
+/* #undef LLVM_ON_UNIX */
+
+/* Define if this is Win32ish platform */
+#define LLVM_ON_WIN32 1
+
+/* Define to 1 if you have the <windows.h> header file. */
+#define HAVE_WINDOWS_H 1
+
+/* Define to 1 if you have the `psapi' library (-lpsapi). */
+#define HAVE_LIBPSAPI 1
+
+/* Define to 1 if you have the `imagehlp' library (-limagehlp). */
+#define HAVE_LIBIMAGEHLP 1
+
+/* Type of 1st arg on ELM Callback */
+#define WIN32_ELMCB_PCSTR PSTR
+
+
+#else /* Linux, Mac OS X, ... Unixish platform */
+
+/* Define if this is Unixish platform */
+#define LLVM_ON_UNIX 1
+
+/* Define if this is Win32ish platform */
+/* #undef LLVM_ON_WIN32 */
+
+/* Type of 1st arg on ELM Callback */
+/* #undef WIN32_ELMCB_PCSTR */
+
+#endif
+
+#endif // LLVM_NATIVE_CONFIG_H
diff --git a/include/llvm/Support/DataTypes.h b/include/llvm/Support/DataTypes.h
new file mode 100644
index 0000000..a4a65b8
--- /dev/null
+++ b/include/llvm/Support/DataTypes.h
@@ -0,0 +1,213 @@
+/* include/llvm/Support/DataTypes.h.  Generated from DataTypes.h.in by configure.  */
+/*===-- include/Support/DataTypes.h - Define fixed size types -----*- C -*-===*\
+|*                                                                            *|
+|*                     The LLVM Compiler Infrastructure                       *|
+|*                                                                            *|
+|* This file is distributed under the University of Illinois Open Source      *|
+|* License. See LICENSE.TXT for details.                                      *|
+|*                                                                            *|
+|*===----------------------------------------------------------------------===*|
+|*                                                                            *|
+|* This file contains definitions to figure out the size of _HOST_ data types.*|
+|* This file is important because different host OS's define different macros,*|
+|* which makes portability tough.  This file exports the following            *|
+|* definitions:                                                               *|
+|*                                                                            *|
+|*   [u]int(32|64)_t : typedefs for signed and unsigned 32/64 bit system types*|
+|*   [U]INT(8|16|32|64)_(MIN|MAX) : Constants for the min and max values.     *|
+|*                                                                            *|
+|* No library is required when using these functions.                         *|
+|*                                                                            *|
+|*===----------------------------------------------------------------------===*/
+
+/* Please leave this file C-compatible. */
+
+/* Please keep this file in sync with DataTypes.h.cmake */
+
+#ifndef SUPPORT_DATATYPES_H
+#define SUPPORT_DATATYPES_H
+
+#define HAVE_SYS_TYPES_H 1
+#define HAVE_INTTYPES_H 1
+#define HAVE_STDINT_H 1
+#define HAVE_UINT64_T 1
+/* #undef HAVE_U_INT64_T */
+
+#ifdef __cplusplus
+#include <cmath>
+#else
+#include <math.h>
+#endif
+
+#ifndef _MSC_VER
+
+/* Note that this header's correct operation depends on __STDC_LIMIT_MACROS
+   being defined.  We would define it here, but in order to prevent Bad Things
+   happening when system headers or C++ STL headers include stdint.h before we
+   define it here, we define it on the g++ command line (in Makefile.rules). */
+#if !defined(__STDC_LIMIT_MACROS)
+# error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h"
+#endif
+
+#if !defined(__STDC_CONSTANT_MACROS)
+# error "Must #define __STDC_CONSTANT_MACROS before " \
+        "#including Support/DataTypes.h"
+#endif
+
+/* Note that <inttypes.h> includes <stdint.h>, if this is a C99 system. */
+#ifdef HAVE_SYS_TYPES_H
+#include <sys/types.h>
+#endif
+
+#ifdef HAVE_INTTYPES_H
+#include <inttypes.h>
+#endif
+
+#ifdef HAVE_STDINT_H
+#include <stdint.h>
+#endif
+
+#ifdef _AIX
+#include "llvm/Support/AIXDataTypesFix.h"
+#endif
+
+/* Handle incorrect definition of uint64_t as u_int64_t */
+#ifndef HAVE_UINT64_T
+#ifdef HAVE_U_INT64_T
+typedef u_int64_t uint64_t;
+#else
+# error "Don't have a definition for uint64_t on this platform"
+#endif
+#endif
+
+#ifdef _OpenBSD_
+#define INT8_MAX 127
+#define INT8_MIN -128
+#define UINT8_MAX 255
+#define INT16_MAX 32767
+#define INT16_MIN -32768
+#define UINT16_MAX 65535
+#define INT32_MAX 2147483647
+#define INT32_MIN -2147483648
+#define UINT32_MAX 4294967295U
+#endif
+
+#else /* _MSC_VER */
+/* Visual C++ doesn't provide standard integer headers, but it does provide
+   built-in data types. */
+#include <stdlib.h>
+#include <stddef.h>
+#include <sys/types.h>
+#ifdef __cplusplus
+#include <cmath>
+#else
+#include <math.h>
+#endif
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+typedef signed int int32_t;
+typedef unsigned int uint32_t;
+typedef short int16_t;
+typedef unsigned short uint16_t;
+typedef signed char int8_t;
+typedef unsigned char uint8_t;
+typedef signed int ssize_t;
+#ifndef INT8_MAX
+# define INT8_MAX 127
+#endif
+#ifndef INT8_MIN
+# define INT8_MIN -128
+#endif
+#ifndef UINT8_MAX
+# define UINT8_MAX 255
+#endif
+#ifndef INT16_MAX
+# define INT16_MAX 32767
+#endif
+#ifndef INT16_MIN
+# define INT16_MIN -32768
+#endif
+#ifndef UINT16_MAX
+# define UINT16_MAX 65535
+#endif
+#ifndef INT32_MAX
+# define INT32_MAX 2147483647
+#endif
+#ifndef INT32_MIN
+/* MSC treats -2147483648 as -(2147483648U). */
+# define INT32_MIN (-INT32_MAX - 1)
+#endif
+#ifndef UINT32_MAX
+# define UINT32_MAX 4294967295U
+#endif
+/* Certain compatibility updates to VC++ introduce the `cstdint'
+ * header, which defines the INT*_C macros. On default installs they
+ * are absent. */
+#ifndef INT8_C
+# define INT8_C(C)   C##i8
+#endif
+#ifndef UINT8_C
+# define UINT8_C(C)  C##ui8
+#endif
+#ifndef INT16_C
+# define INT16_C(C)  C##i16
+#endif
+#ifndef UINT16_C
+# define UINT16_C(C) C##ui16
+#endif
+#ifndef INT32_C
+# define INT32_C(C)  C##i32
+#endif
+#ifndef UINT32_C
+# define UINT32_C(C) C##ui32
+#endif
+#ifndef INT64_C
+# define INT64_C(C)  C##i64
+#endif
+#ifndef UINT64_C
+# define UINT64_C(C) C##ui64
+#endif
+
+#ifndef PRId64
+# define PRId64 "I64d"
+#endif
+#ifndef PRIi64
+# define PRIi64 "I64i"
+#endif
+#ifndef PRIo64
+# define PRIo64 "I64o"
+#endif
+#ifndef PRIu64
+# define PRIu64 "I64u"
+#endif
+#ifndef PRIx64
+# define PRIx64 "I64x"
+#endif
+#ifndef PRIX64
+# define PRIX64 "I64X"
+#endif
+
+#endif /* _MSC_VER */
+
+/* Set defaults for constants which we cannot find. */
+#if !defined(INT64_MAX)
+# define INT64_MAX 9223372036854775807LL
+#endif
+#if !defined(INT64_MIN)
+# define INT64_MIN ((-INT64_MAX)-1)
+#endif
+#if !defined(UINT64_MAX)
+# define UINT64_MAX 0xffffffffffffffffULL
+#endif
+
+#if __GNUC__ > 3
+#define END_WITH_NULL __attribute__((sentinel))
+#else
+#define END_WITH_NULL
+#endif
+
+#ifndef HUGE_VALF
+#define HUGE_VALF (float)HUGE_VAL
+#endif
+
+#endif  /* SUPPORT_DATATYPES_H */
diff --git a/lib/Analysis/Android.mk b/lib/Analysis/Android.mk
new file mode 100644
index 0000000..a8fef77
--- /dev/null
+++ b/lib/Analysis/Android.mk
@@ -0,0 +1,81 @@
+LOCAL_PATH:= $(call my-dir)
+
+analysis_SRC_FILES := \
+  AliasAnalysis.cpp \
+  AliasAnalysisCounter.cpp \
+  AliasAnalysisEvaluator.cpp \
+  AliasDebugger.cpp \
+  AliasSetTracker.cpp \
+  Analysis.cpp \
+  BasicAliasAnalysis.cpp \
+  BlockFrequencyInfo.cpp \
+  BlockFrequencyInfoImpl.cpp \
+  BranchProbabilityInfo.cpp \
+  CFG.cpp \
+  CFGPrinter.cpp \
+  CaptureTracking.cpp \
+  CodeMetrics.cpp \
+  ConstantFolding.cpp \
+  CostModel.cpp \
+  Delinearization.cpp \
+  DependenceAnalysis.cpp \
+  DomPrinter.cpp \
+  DominanceFrontier.cpp \
+  IVUsers.cpp \
+  InstCount.cpp \
+  InstructionSimplify.cpp \
+  Interval.cpp \
+  IntervalPartition.cpp \
+  LazyValueInfo.cpp \
+  LibCallAliasAnalysis.cpp \
+  LibCallSemantics.cpp \
+  Lint.cpp \
+  Loads.cpp \
+  LoopInfo.cpp \
+  LoopPass.cpp \
+  MemDepPrinter.cpp \
+  MemoryBuiltins.cpp \
+  MemoryDependenceAnalysis.cpp \
+  ModuleDebugInfoPrinter.cpp \
+  NoAliasAnalysis.cpp \
+  PHITransAddr.cpp \
+  PostDominators.cpp \
+  PtrUseVisitor.cpp \
+  RegionInfo.cpp \
+  RegionPass.cpp \
+  RegionPrinter.cpp \
+  ScalarEvolution.cpp \
+  ScalarEvolutionAliasAnalysis.cpp \
+  ScalarEvolutionExpander.cpp \
+  ScalarEvolutionNormalization.cpp \
+  SparsePropagation.cpp \
+  TargetTransformInfo.cpp \
+  Trace.cpp \
+  TypeBasedAliasAnalysis.cpp \
+  ValueTracking.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= libLLVMAnalysis
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(analysis_SRC_FILES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= libLLVMAnalysis
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(analysis_SRC_FILES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Analysis/IPA/Android.mk b/lib/Analysis/IPA/Android.mk
new file mode 100644
index 0000000..d56d931
--- /dev/null
+++ b/lib/Analysis/IPA/Android.mk
@@ -0,0 +1,40 @@
+LOCAL_PATH:= $(call my-dir)
+
+analysis_ipa_SRC_FILES := \
+  CallGraph.cpp \
+  CallGraphSCCPass.cpp \
+  CallPrinter.cpp \
+  FindUsedTypes.cpp \
+  GlobalsModRef.cpp \
+  IPA.cpp \
+  InlineCost.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(analysis_ipa_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMipa
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(analysis_ipa_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMipa
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/AsmParser/Android.mk b/lib/AsmParser/Android.mk
new file mode 100644
index 0000000..7bd29a7
--- /dev/null
+++ b/lib/AsmParser/Android.mk
@@ -0,0 +1,34 @@
+LOCAL_PATH:= $(call my-dir)
+
+asm_parser_SRC_FILES := \
+  LLLexer.cpp \
+  LLParser.cpp \
+  Parser.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(asm_parser_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMAsmParser
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LOCAL_PATH)/../../llvm-host-build.mk
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(asm_parser_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMAsmParser
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LOCAL_PATH)/../../llvm-device-build.mk
+include $(BUILD_STATIC_LIBRARY)
+endif
\ No newline at end of file
diff --git a/lib/Bitcode/Reader/Android.mk b/lib/Bitcode/Reader/Android.mk
new file mode 100644
index 0000000..3bdcdda
--- /dev/null
+++ b/lib/Bitcode/Reader/Android.mk
@@ -0,0 +1,36 @@
+LOCAL_PATH:= $(call my-dir)
+
+bitcode_reader_SRC_FILES := \
+	BitReader.cpp	\
+	BitcodeReader.cpp \
+	BitstreamReader.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMBitReader
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+include $(CLEAR_VARS)
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+
+LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMBitReader
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Bitcode/Writer/Android.mk b/lib/Bitcode/Writer/Android.mk
new file mode 100644
index 0000000..6aa208c
--- /dev/null
+++ b/lib/Bitcode/Writer/Android.mk
@@ -0,0 +1,37 @@
+LOCAL_PATH:= $(call my-dir)
+
+bitcode_writer_SRC_FILES := \
+	BitWriter.cpp	\
+	BitcodeWriter.cpp	\
+	BitcodeWriterPass.cpp	\
+	ValueEnumerator.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMBitWriter
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+include $(CLEAR_VARS)
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+
+LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMBitWriter
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/CodeGen/Android.mk b/lib/CodeGen/Android.mk
new file mode 100644
index 0000000..7feb42c
--- /dev/null
+++ b/lib/CodeGen/Android.mk
@@ -0,0 +1,144 @@
+LOCAL_PATH:= $(call my-dir)
+
+codegen_SRC_FILES := \
+  AggressiveAntiDepBreaker.cpp \
+  AllocationOrder.cpp \
+  Analysis.cpp \
+  AtomicExpandLoadLinkedPass.cpp \
+  BasicTargetTransformInfo.cpp \
+  BranchFolding.cpp \
+  CalcSpillWeights.cpp \
+  CallingConvLower.cpp \
+  CodeGen.cpp \
+  CodeGenPrepare.cpp \
+  CriticalAntiDepBreaker.cpp \
+  DeadMachineInstructionElim.cpp \
+  DFAPacketizer.cpp \
+  DwarfEHPrepare.cpp \
+  EarlyIfConversion.cpp \
+  EdgeBundles.cpp \
+  ErlangGC.cpp \
+  ExecutionDepsFix.cpp \
+  ExpandISelPseudos.cpp \
+  ExpandPostRAPseudos.cpp \
+  GCMetadata.cpp \
+  GCMetadataPrinter.cpp \
+  GCStrategy.cpp \
+  IfConversion.cpp \
+  InlineSpiller.cpp \
+  InterferenceCache.cpp \
+  IntrinsicLowering.cpp \
+  JITCodeEmitter.cpp \
+  LatencyPriorityQueue.cpp \
+  LexicalScopes.cpp \
+  LiveDebugVariables.cpp \
+  LiveIntervalAnalysis.cpp \
+  LiveInterval.cpp \
+  LiveIntervalUnion.cpp \
+  LivePhysRegs.cpp \
+  LiveRangeCalc.cpp \
+  LiveRangeEdit.cpp \
+  LiveRegMatrix.cpp \
+  LiveStackAnalysis.cpp \
+  LiveVariables.cpp \
+  LLVMTargetMachine.cpp \
+  LocalStackSlotAllocation.cpp \
+  MachineBasicBlock.cpp \
+  MachineBlockFrequencyInfo.cpp \
+  MachineBlockPlacement.cpp \
+  MachineBranchProbabilityInfo.cpp \
+  MachineCodeEmitter.cpp \
+  MachineCopyPropagation.cpp \
+  MachineCSE.cpp \
+  MachineDominators.cpp \
+  MachineFunctionAnalysis.cpp \
+  MachineFunction.cpp \
+  MachineFunctionPass.cpp \
+  MachineFunctionPrinterPass.cpp \
+  MachineInstrBundle.cpp \
+  MachineInstr.cpp \
+  MachineLICM.cpp \
+  MachineLoopInfo.cpp \
+  MachineModuleInfo.cpp \
+  MachineModuleInfoImpls.cpp \
+  MachinePassRegistry.cpp \
+  MachinePostDominators.cpp \
+  MachineRegisterInfo.cpp \
+  MachineScheduler.cpp \
+  MachineSink.cpp \
+  MachineSSAUpdater.cpp \
+  MachineTraceMetrics.cpp \
+  MachineVerifier.cpp \
+  OcamlGC.cpp \
+  OptimizePHIs.cpp \
+  Passes.cpp \
+  PeepholeOptimizer.cpp \
+  PHIElimination.cpp \
+  PHIEliminationUtils.cpp \
+  PostRASchedulerList.cpp \
+  ProcessImplicitDefs.cpp \
+  PrologEpilogInserter.cpp \
+  PseudoSourceValue.cpp \
+  RegAllocBase.cpp \
+  RegAllocBasic.cpp \
+  RegAllocFast.cpp \
+  RegAllocGreedy.cpp \
+  RegAllocPBQP.cpp \
+  RegisterClassInfo.cpp \
+  RegisterCoalescer.cpp \
+  RegisterPressure.cpp \
+  RegisterScavenging.cpp \
+  ScheduleDAG.cpp \
+  ScheduleDAGInstrs.cpp \
+  ScheduleDAGPrinter.cpp \
+  ScoreboardHazardRecognizer.cpp \
+  ShadowStackGC.cpp \
+  SjLjEHPrepare.cpp \
+  SlotIndexes.cpp \
+  Spiller.cpp \
+  SpillPlacement.cpp \
+  SplitKit.cpp \
+  StackColoring.cpp \
+  StackMapLivenessAnalysis.cpp \
+  StackMaps.cpp \
+  StackProtector.cpp \
+  StackSlotColoring.cpp \
+  TailDuplication.cpp \
+  TargetFrameLoweringImpl.cpp \
+  TargetInstrInfo.cpp \
+  TargetLoweringBase.cpp \
+  TargetLoweringObjectFileImpl.cpp \
+  TargetOptionsImpl.cpp \
+  TargetRegisterInfo.cpp \
+  TargetSchedule.cpp \
+  TwoAddressInstructionPass.cpp \
+  UnreachableBlockElim.cpp \
+  VirtRegMap.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(codegen_SRC_FILES)
+LOCAL_MODULE:= libLLVMCodeGen
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(codegen_SRC_FILES)
+LOCAL_MODULE:= libLLVMCodeGen
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/CodeGen/AsmPrinter/Android.mk b/lib/CodeGen/AsmPrinter/Android.mk
new file mode 100644
index 0000000..645995a
--- /dev/null
+++ b/lib/CodeGen/AsmPrinter/Android.mk
@@ -0,0 +1,70 @@
+LOCAL_PATH := $(call my-dir)
+
+codegen_asmprinter_SRC_FILES := \
+  AsmPrinter.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=	\
+	AddressPool.cpp \
+	AsmPrinter.cpp	\
+	AsmPrinterDwarf.cpp	\
+	AsmPrinterInlineAsm.cpp	\
+	ARMException.cpp	\
+	DIE.cpp	\
+	DIEHash.cpp \
+	DwarfAccelTable.cpp \
+	DwarfCFIException.cpp \
+	DwarfDebug.cpp	\
+	DwarfException.cpp	\
+	DwarfFile.cpp \
+	DwarfStringPool.cpp \
+	DwarfUnit.cpp \
+	ErlangGCPrinter.cpp \
+	OcamlGCPrinter.cpp \
+	Win64Exception.cpp \
+	WinCodeViewLineTables.cpp
+
+LOCAL_MODULE:= libLLVMAsmPrinter
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=	\
+	AddressPool.cpp \
+	AsmPrinter.cpp \
+	AsmPrinterDwarf.cpp \
+	AsmPrinterInlineAsm.cpp \
+	ARMException.cpp        \
+	DIE.cpp \
+	DIEHash.cpp \
+	DwarfAccelTable.cpp \
+	DwarfCFIException.cpp \
+	DwarfDebug.cpp  \
+	DwarfException.cpp      \
+	DwarfFile.cpp \
+	DwarfStringPool.cpp \
+	DwarfUnit.cpp \
+	ErlangGCPrinter.cpp \
+	OcamlGCPrinter.cpp \
+	Win64Exception.cpp \
+	WinCodeViewLineTables.cpp
+
+LOCAL_MODULE:= libLLVMAsmPrinter
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/CodeGen/SelectionDAG/Android.mk b/lib/CodeGen/SelectionDAG/Android.mk
new file mode 100644
index 0000000..0e52ee3
--- /dev/null
+++ b/lib/CodeGen/SelectionDAG/Android.mk
@@ -0,0 +1,56 @@
+LOCAL_PATH:= $(call my-dir)
+
+codegen_selectiondag_SRC_FILES := \
+  DAGCombiner.cpp \
+  FastISel.cpp \
+  FunctionLoweringInfo.cpp \
+  InstrEmitter.cpp \
+  LegalizeDAG.cpp \
+  LegalizeFloatTypes.cpp \
+  LegalizeIntegerTypes.cpp \
+  LegalizeTypes.cpp \
+  LegalizeTypesGeneric.cpp \
+  LegalizeVectorOps.cpp \
+  LegalizeVectorTypes.cpp \
+  ResourcePriorityQueue.cpp \
+  ScheduleDAGFast.cpp \
+  ScheduleDAGRRList.cpp \
+  ScheduleDAGSDNodes.cpp \
+  ScheduleDAGVLIW.cpp \
+  SelectionDAG.cpp \
+  SelectionDAGBuilder.cpp \
+  SelectionDAGDumper.cpp \
+  SelectionDAGISel.cpp \
+  SelectionDAGPrinter.cpp \
+  TargetLowering.cpp \
+  TargetSelectionDAGInfo.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMSelectionDAG
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMSelectionDAG
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/ExecutionEngine/Android.mk b/lib/ExecutionEngine/Android.mk
new file mode 100644
index 0000000..9f1befd
--- /dev/null
+++ b/lib/ExecutionEngine/Android.mk
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := \
+	ExecutionEngineBindings.cpp \
+	ExecutionEngine.cpp \
+	RTDyldMemoryManager.cpp \
+	TargetSelect.cpp
+
+LOCAL_MODULE:= libLLVMExecutionEngine
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/ExecutionEngine/JIT/Android.mk b/lib/ExecutionEngine/JIT/Android.mk
new file mode 100644
index 0000000..0466ba0
--- /dev/null
+++ b/lib/ExecutionEngine/JIT/Android.mk
@@ -0,0 +1,17 @@
+LOCAL_PATH:= $(call my-dir)
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=	\
+	JIT.cpp	\
+	JITEmitter.cpp	\
+	JITMemoryManager.cpp
+
+LOCAL_MODULE:= libLLVMJIT
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/ExecutionEngine/MCJIT/Android.mk b/lib/ExecutionEngine/MCJIT/Android.mk
new file mode 100644
index 0000000..0314958
--- /dev/null
+++ b/lib/ExecutionEngine/MCJIT/Android.mk
@@ -0,0 +1,16 @@
+LOCAL_PATH:= $(call my-dir)
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=	\
+	MCJIT.cpp \
+	SectionMemoryManager.cpp
+
+LOCAL_MODULE:= libLLVMMCJIT
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/ExecutionEngine/RuntimeDyld/Android.mk b/lib/ExecutionEngine/RuntimeDyld/Android.mk
new file mode 100644
index 0000000..e98e80a
--- /dev/null
+++ b/lib/ExecutionEngine/RuntimeDyld/Android.mk
@@ -0,0 +1,18 @@
+LOCAL_PATH:= $(call my-dir)
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=	\
+	GDBRegistrar.cpp \
+	RuntimeDyld.cpp \
+	RuntimeDyldELF.cpp \
+	RuntimeDyldMachO.cpp
+
+LOCAL_MODULE:= libLLVMRuntimeDyld
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/IR/Android.mk b/lib/IR/Android.mk
new file mode 100644
index 0000000..dd95703
--- /dev/null
+++ b/lib/IR/Android.mk
@@ -0,0 +1,80 @@
+LOCAL_PATH:= $(call my-dir)
+
+vmcore_SRC_FILES := \
+  AsmWriter.cpp \
+  Attributes.cpp \
+  AutoUpgrade.cpp \
+  BasicBlock.cpp \
+  ConstantFold.cpp \
+  ConstantRange.cpp \
+  Constants.cpp \
+  Core.cpp \
+  DataLayout.cpp \
+  DebugInfo.cpp \
+  DebugLoc.cpp \
+  DiagnosticInfo.cpp \
+  DiagnosticPrinter.cpp \
+  DIBuilder.cpp \
+  Dominators.cpp \
+  Function.cpp \
+  GVMaterializer.cpp \
+  Globals.cpp \
+  IRBuilder.cpp \
+  IRPrintingPasses.cpp \
+  InlineAsm.cpp \
+  Instruction.cpp \
+  Instructions.cpp \
+  IntrinsicInst.cpp \
+  LLVMContext.cpp \
+  LLVMContextImpl.cpp \
+  LeakDetector.cpp \
+  LegacyPassManager.cpp \
+  Mangler.cpp \
+  MDBuilder.cpp \
+  Metadata.cpp \
+  Module.cpp \
+  Pass.cpp \
+  PassManager.cpp \
+  PassRegistry.cpp \
+  Type.cpp \
+  TypeFinder.cpp \
+  Use.cpp \
+  User.cpp \
+  Value.cpp \
+  ValueSymbolTable.cpp \
+  ValueTypes.cpp \
+  Verifier.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+REQUIRES_RTTI := 1
+
+LOCAL_SRC_FILES := $(vmcore_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMCore
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+include $(CLEAR_VARS)
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+
+REQUIRES_RTTI := 1
+
+LOCAL_SRC_FILES := $(vmcore_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMCore
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/IRReader/Android.mk b/lib/IRReader/Android.mk
new file mode 100644
index 0000000..d620521
--- /dev/null
+++ b/lib/IRReader/Android.mk
@@ -0,0 +1,38 @@
+LOCAL_PATH:= $(call my-dir)
+
+irreader_SRC_FILES := \
+  IRReader.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+REQUIRES_RTTI := 1
+
+LOCAL_SRC_FILES := $(irreader_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMIRReader
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+REQUIRES_RTTI := 1
+
+LOCAL_SRC_FILES := $(irreader_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMIRReader
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
\ No newline at end of file
diff --git a/lib/Linker/Android.mk b/lib/Linker/Android.mk
new file mode 100644
index 0000000..161b2ae
--- /dev/null
+++ b/lib/Linker/Android.mk
@@ -0,0 +1,32 @@
+LOCAL_PATH:= $(call my-dir)
+
+linker_SRC_FILES := \
+  LinkModules.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_SRC_FILES := $(linker_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMLinker
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(linker_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMLinker
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/MC/Android.mk b/lib/MC/Android.mk
new file mode 100644
index 0000000..7751763
--- /dev/null
+++ b/lib/MC/Android.mk
@@ -0,0 +1,79 @@
+LOCAL_PATH:= $(call my-dir)
+
+mc_SRC_FILES := \
+  ELFObjectWriter.cpp \
+  MachObjectWriter.cpp \
+  MCAsmBackend.cpp \
+  MCAsmInfo.cpp \
+  MCAsmInfoCOFF.cpp \
+  MCAsmInfoDarwin.cpp \
+  MCAsmInfoELF.cpp \
+  MCAsmStreamer.cpp \
+  MCAssembler.cpp \
+  MCCodeEmitter.cpp \
+  MCCodeGenInfo.cpp \
+  MCContext.cpp \
+  MCDisassembler.cpp \
+  MCDwarf.cpp \
+  MCELF.cpp \
+  MCELFObjectTargetWriter.cpp \
+  MCELFStreamer.cpp \
+  MCExpr.cpp \
+  MCExternalSymbolizer.cpp \
+  MCFixup.cpp \
+  MCInst.cpp \
+  MCInstPrinter.cpp \
+  MCInstrAnalysis.cpp \
+  MCLabel.cpp \
+  MCLinkerOptimizationHint.cpp \
+  MCMachObjectTargetWriter.cpp \
+  MCMachOStreamer.cpp \
+  MCNullStreamer.cpp \
+  MCObjectFileInfo.cpp \
+  MCObjectStreamer.cpp \
+  MCObjectWriter.cpp \
+  MCRegisterInfo.cpp \
+  MCRelocationInfo.cpp \
+  MCSection.cpp \
+  MCSectionCOFF.cpp	\
+  MCSectionELF.cpp \
+  MCSectionMachO.cpp \
+  MCStreamer.cpp \
+  MCSubtargetInfo.cpp \
+  MCSymbol.cpp \
+  MCSymbolizer.cpp \
+  MCTargetOptions.cpp \
+  MCValue.cpp \
+  MCWin64EH.cpp \
+  WinCOFFObjectWriter.cpp \
+  WinCOFFStreamer.cpp \
+  SubtargetFeature.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(mc_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMMC
+
+LOCAL_MODULE_TAGS := optional
+
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+include $(CLEAR_VARS)
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+
+LOCAL_SRC_FILES := $(mc_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMMC
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/MC/MCDisassembler/Android.mk b/lib/MC/MCDisassembler/Android.mk
new file mode 100644
index 0000000..7f73df3
--- /dev/null
+++ b/lib/MC/MCDisassembler/Android.mk
@@ -0,0 +1,15 @@
+LOCAL_PATH:= $(call my-dir)
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=	\
+	Disassembler.cpp
+
+LOCAL_MODULE:= libLLVMMCDisassembler
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/MC/MCParser/Android.mk b/lib/MC/MCParser/Android.mk
new file mode 100644
index 0000000..505a12b
--- /dev/null
+++ b/lib/MC/MCParser/Android.mk
@@ -0,0 +1,40 @@
+LOCAL_PATH:= $(call my-dir)
+
+mc_parser_SRC_FILES := \
+  AsmLexer.cpp \
+  AsmParser.cpp \
+  COFFAsmParser.cpp \
+  DarwinAsmParser.cpp \
+  ELFAsmParser.cpp \
+  MCAsmLexer.cpp \
+  MCAsmParser.cpp \
+  MCAsmParserExtension.cpp \
+  MCTargetAsmParser.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMMCParser
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+include $(CLEAR_VARS)
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+
+LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMMCParser
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Object/Android.mk b/lib/Object/Android.mk
new file mode 100644
index 0000000..7dfa44f
--- /dev/null
+++ b/lib/Object/Android.mk
@@ -0,0 +1,45 @@
+LOCAL_PATH := $(call my-dir)
+
+object_SRC_FILES := \
+  Archive.cpp \
+  Binary.cpp \
+  COFFObjectFile.cpp \
+  ELF.cpp \
+  ELFObjectFile.cpp \
+  Error.cpp \
+  IRObjectFile.cpp \
+  MachOObjectFile.cpp \
+  MachOUniversal.cpp \
+  Object.cpp \
+  ObjectFile.cpp \
+  SymbolicFile.cpp
+
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMObject
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(object_SRC_FILES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= libLLVMObject
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(object_SRC_FILES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Option/Android.mk b/lib/Option/Android.mk
new file mode 100644
index 0000000..8680ce4
--- /dev/null
+++ b/lib/Option/Android.mk
@@ -0,0 +1,42 @@
+LOCAL_PATH:= $(call my-dir)
+
+option_SRC_FILES := \
+    Arg.cpp \
+    ArgList.cpp \
+    Option.cpp \
+    OptTable.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+# FIXME: This only requires RTTI because tblgen uses it.  Fix that.
+REQUIRES_RTTI := 1
+
+LOCAL_SRC_FILES := $(option_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMOption
+
+LOCAL_CFLAGS := -D__android__
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+include $(CLEAR_VARS)
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+
+LOCAL_SRC_FILES := $(option_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMOption
+
+LOCAL_CFLAGS := -D__android__
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/ProfileData/Android.mk b/lib/ProfileData/Android.mk
new file mode 100644
index 0000000..5ae5ba8
--- /dev/null
+++ b/lib/ProfileData/Android.mk
@@ -0,0 +1,33 @@
+LOCAL_PATH:= $(call my-dir)
+
+profiledata_SRC_FILES := \
+  InstrProf.cpp \
+  InstrProfReader.cpp \
+  InstrProfWriter.cpp
+
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= libLLVMProfileData
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(profiledata_SRC_FILES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= libLLVMProfileData
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(profiledata_SRC_FILES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Support/Android.mk b/lib/Support/Android.mk
new file mode 100644
index 0000000..ab65988
--- /dev/null
+++ b/lib/Support/Android.mk
@@ -0,0 +1,123 @@
+LOCAL_PATH:= $(call my-dir)
+
+support_SRC_FILES := \
+  Allocator.cpp \
+  APFloat.cpp \
+  APInt.cpp \
+  APSInt.cpp \
+  ARMBuildAttrs.cpp \
+  Atomic.cpp \
+  BlockFrequency.cpp \
+  BranchProbability.cpp \
+  CommandLine.cpp \
+  Compression.cpp \
+  ConvertUTF.c \
+  ConvertUTFWrapper.cpp \
+  CrashRecoveryContext.cpp \
+  DAGDeltaAlgorithm.cpp \
+  DataStream.cpp \
+  DataExtractor.cpp \
+  Debug.cpp \
+  DeltaAlgorithm.cpp \
+  Dwarf.cpp \
+  DynamicLibrary.cpp \
+  Errno.cpp \
+  ErrorHandling.cpp \
+  FileUtilities.cpp \
+  FoldingSet.cpp \
+  FormattedStream.cpp \
+  GraphWriter.cpp \
+  Hashing.cpp \
+  Host.cpp \
+  IntervalMap.cpp \
+  IntEqClasses.cpp \
+  IntrusiveRefCntPtr.cpp \
+  IsInf.cpp \
+  IsNAN.cpp \
+  LEB128.cpp \
+  LineIterator.cpp \
+  Locale.cpp \
+  LockFileManager.cpp \
+  MD5.cpp \
+  ManagedStatic.cpp \
+  Memory.cpp \
+  MemoryBuffer.cpp \
+  MemoryObject.cpp \
+  Mutex.cpp \
+  Path.cpp \
+  PluginLoader.cpp \
+  PrettyStackTrace.cpp \
+  Process.cpp \
+  Program.cpp \
+  Regex.cpp \
+  RWMutex.cpp \
+  SearchForAddressOfSpecialSymbol.cpp \
+  Signals.cpp \
+  SmallPtrSet.cpp \
+  SmallVector.cpp \
+  SourceMgr.cpp \
+  Statistic.cpp \
+  StreamableMemoryObject.cpp \
+  StringExtras.cpp \
+  StringMap.cpp \
+  StringPool.cpp \
+  StringRef.cpp \
+  SystemUtils.cpp \
+  TargetRegistry.cpp \
+  Threading.cpp \
+  ThreadLocal.cpp \
+  Timer.cpp \
+  TimeValue.cpp \
+  ToolOutputFile.cpp \
+  Triple.cpp \
+  Twine.cpp \
+  Unicode.cpp \
+  Valgrind.cpp \
+  Watchdog.cpp \
+  YAMLParser.cpp \
+  YAMLTraits.cpp \
+  circular_raw_ostream.cpp \
+  raw_os_ostream.cpp \
+  raw_ostream.cpp \
+  regcomp.c \
+  regerror.c \
+  regexec.c \
+  regfree.c \
+  regstrlcpy.c \
+  system_error.cpp
+
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+# FIXME: This only requires RTTI because tblgen uses it.  Fix that.
+REQUIRES_RTTI := 1
+
+LOCAL_SRC_FILES := $(support_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMSupport
+
+LOCAL_CFLAGS := -D__android__
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(support_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMSupport
+
+LOCAL_CFLAGS := -D__android__
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/TableGen/Android.mk b/lib/TableGen/Android.mk
new file mode 100644
index 0000000..1f01ef7
--- /dev/null
+++ b/lib/TableGen/Android.mk
@@ -0,0 +1,39 @@
+LOCAL_PATH:= $(call my-dir)
+
+libtablegen_SRC_FILES := \
+  Error.cpp \
+  Main.cpp \
+  Record.cpp \
+  StringMatcher.cpp \
+  TableGenBackend.cpp \
+  TGLexer.cpp \
+  TGParser.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(libtablegen_SRC_FILES)
+LOCAL_MODULE:= libLLVMTableGen
+
+LOCAL_MODULE_TAGS := optional
+
+REQUIRES_EH := 1
+REQUIRES_RTTI := 1
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+## For the device
+## =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+#include $(CLEAR_VARS)
+#
+#LOCAL_SRC_FILES := $(libtablegen_SRC_FILES)
+#LOCAL_MODULE:= libLLVMTableGen
+#
+#LOCAL_MODULE_TAGS := optional
+#
+#include $(LLVM_DEVICE_BUILD_MK)
+#include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AArch64/Android.mk b/lib/Target/AArch64/Android.mk
new file mode 100644
index 0000000..144c2d3
--- /dev/null
+++ b/lib/Target/AArch64/Android.mk
@@ -0,0 +1,67 @@
+LOCAL_PATH := $(call my-dir)
+
+arm64_codegen_TBLGEN_TABLES := \
+  AArch64GenRegisterInfo.inc \
+  AArch64GenInstrInfo.inc \
+  AArch64GenCodeEmitter.inc \
+  AArch64GenMCCodeEmitter.inc \
+  AArch64GenMCPseudoLowering.inc \
+  AArch64GenAsmWriter.inc \
+  AArch64GenAsmMatcher.inc \
+  AArch64GenDAGISel.inc \
+  AArch64GenFastISel.inc \
+  AArch64GenCallingConv.inc \
+  AArch64GenSubtargetInfo.inc \
+  AArch64GenDisassemblerTables.inc
+
+arm64_codegen_SRC_FILES := \
+  AArch64AsmPrinter.cpp \
+  AArch64FrameLowering.cpp \
+  AArch64ISelDAGToDAG.cpp \
+  AArch64MachineFunctionInfo.cpp \
+  AArch64RegisterInfo.cpp \
+  AArch64Subtarget.cpp \
+  AArch64TargetObjectFile.cpp \
+  AArch64BranchFixupPass.cpp \
+  AArch64InstrInfo.cpp \
+  AArch64ISelLowering.cpp \
+  AArch64MCInstLower.cpp \
+  AArch64SelectionDAGInfo.cpp \
+  AArch64TargetMachine.cpp \
+  AArch64TargetTransformInfo.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARM64CodeGen
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(arm64_codegen_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
+TBLGEN_TABLES := $(arm64_codegen_TBLGEN_TABLES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARM64CodeGen
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(arm64_codegen_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
+TBLGEN_TABLES := $(arm64_codegen_TBLGEN_TABLES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AArch64/AsmParser/Android.mk b/lib/Target/AArch64/AsmParser/Android.mk
new file mode 100644
index 0000000..0588511
--- /dev/null
+++ b/lib/Target/AArch64/AsmParser/Android.mk
@@ -0,0 +1,63 @@
+LOCAL_PATH := $(call my-dir)
+
+#===---------------------------------------------------------------===
+# libARMAsmParser (common)
+#===---------------------------------------------------------------===
+
+arm64_asm_parser_SRC_FILES := \
+  AArch64AsmParser.cpp
+
+arm64_asm_parser_TBLGEN_TABLES := \
+  AArch64GenInstrInfo.inc \
+  AArch64GenRegisterInfo.inc \
+  AArch64GenAsmMatcher.inc \
+  AArch64GenSubtargetInfo.inc
+
+arm64_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+arm64_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
+
+
+#===---------------------------------------------------------------===
+# libARM64AsmParser (host)
+#===---------------------------------------------------------------===
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARM64AsmParser
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(arm64_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES += $(arm64_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(arm64_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(arm64_asm_parser_TBLGEN_TD_DIR)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+ifneq (,$(filter windows darwin,$(HOST_OS)))
+# Override the default optimization level to work around taking forever (~50m)
+# to compile ARM64AsmParser.cpp on Mac with gcc 4.2,
+# or on Linux with mingw32msvc-gcc 4.2, which is used to cross-compile
+# the win_sdk.
+LOCAL_CFLAGS += -O0
+endif
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+
+#===---------------------------------------------------------------===
+# libARM64AsmParser (target)
+#===---------------------------------------------------------------===
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARM64AsmParser
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(arm64_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES += $(arm64_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(arm64_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(arm64_asm_parser_TBLGEN_TD_DIR)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AArch64/Disassembler/Android.mk b/lib/Target/AArch64/Disassembler/Android.mk
new file mode 100644
index 0000000..fcc53ad
--- /dev/null
+++ b/lib/Target/AArch64/Disassembler/Android.mk
@@ -0,0 +1,55 @@
+LOCAL_PATH := $(call my-dir)
+
+arm64_disassembler_TBLGEN_TABLES := \
+  AArch64GenDisassemblerTables.inc \
+  AArch64GenInstrInfo.inc \
+  AArch64GenSubtargetInfo.inc \
+  AArch64GenRegisterInfo.inc
+
+arm64_disassembler_SRC_FILES := \
+  AArch64Disassembler.cpp
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm64_disassembler_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm64_disassembler_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARM64Disassembler
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm64_disassembler_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm64_disassembler_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARM64Disassembler
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
diff --git a/lib/Target/AArch64/InstPrinter/Android.mk b/lib/Target/AArch64/InstPrinter/Android.mk
new file mode 100644
index 0000000..ac9b0df
--- /dev/null
+++ b/lib/Target/AArch64/InstPrinter/Android.mk
@@ -0,0 +1,57 @@
+LOCAL_PATH := $(call my-dir)
+
+arm64_asm_printer_TBLGEN_TABLES := \
+  AArch64GenAsmWriter.inc \
+  AArch64GenRegisterInfo.inc \
+  AArch64GenSubtargetInfo.inc \
+  AArch64GenInstrInfo.inc
+
+arm64_asm_printer_SRC_FILES := \
+  AArch64InstPrinter.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm64_asm_printer_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm64_asm_printer_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMARM64AsmPrinter
+
+LOCAL_C_INCLUDES += \
+    $(LOCAL_PATH)/..
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm64_asm_printer_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm64_asm_printer_SRC_FILES)
+
+LOCAL_C_INCLUDES+= \
+    $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARM64AsmPrinter
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
+
diff --git a/lib/Target/AArch64/MCTargetDesc/Android.mk b/lib/Target/AArch64/MCTargetDesc/Android.mk
new file mode 100644
index 0000000..edcf1f2
--- /dev/null
+++ b/lib/Target/AArch64/MCTargetDesc/Android.mk
@@ -0,0 +1,57 @@
+LOCAL_PATH := $(call my-dir)
+
+arm64_mc_desc_TBLGEN_TABLES := \
+  AArch64GenRegisterInfo.inc \
+  AArch64GenInstrInfo.inc \
+  AArch64GenMCCodeEmitter.inc \
+  AArch64GenSubtargetInfo.inc
+
+arm64_mc_desc_SRC_FILES := \
+  AArch64AsmBackend.cpp \
+  AArch64ELFObjectWriter.cpp \
+  AArch64ELFStreamer.cpp \
+  AArch64MCAsmInfo.cpp \
+  AArch64MCCodeEmitter.cpp \
+  AArch64MCExpr.cpp \
+  AArch64MCTargetDesc.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+
+LOCAL_MODULE:= libLLVMARM64Desc
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(arm64_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(arm64_mc_desc_TBLGEN_TABLES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARM64Desc
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(arm64_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(arm64_mc_desc_TBLGEN_TABLES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AArch64/TargetInfo/Android.mk b/lib/Target/AArch64/TargetInfo/Android.mk
new file mode 100644
index 0000000..cc650f6
--- /dev/null
+++ b/lib/Target/AArch64/TargetInfo/Android.mk
@@ -0,0 +1,55 @@
+LOCAL_PATH := $(call my-dir)
+
+arm64_target_info_TBLGEN_TABLES := \
+  AArch64GenSubtargetInfo.inc \
+  AArch64GenRegisterInfo.inc \
+  AArch64GenInstrInfo.inc
+
+arm64_target_info_SRC_FILES := \
+  AArch64TargetInfo.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm64_target_info_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm64_target_info_SRC_FILES)
+
+LOCAL_C_INCLUDES +=	\
+	$(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARM64Info
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm64_target_info_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm64_target_info_SRC_FILES)
+
+LOCAL_C_INCLUDES +=	\
+	$(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARM64Info
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/AArch64/Utils/Android.mk b/lib/Target/AArch64/Utils/Android.mk
new file mode 100644
index 0000000..b8bf795
--- /dev/null
+++ b/lib/Target/AArch64/Utils/Android.mk
@@ -0,0 +1,36 @@
+LOCAL_PATH := $(call my-dir)
+
+arm64_utils_SRC_FILES := \
+  AArch64BaseInfo.cpp
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(arm64_utils_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARM64Utils
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(arm64_utils_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARM64Utils
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/ARM/ARM.td b/lib/Target/ARM/ARM.td
index 7916ccc..25385a6 100644
--- a/lib/Target/ARM/ARM.td
+++ b/lib/Target/ARM/ARM.td
@@ -267,6 +267,10 @@
 def FeatureAAPCS : SubtargetFeature<"aapcs", "TargetABI", "ARM_ABI_AAPCS",
                                    "Use the AAPCS ABI">;
 
+// RenderScript-specific support for 64-bit long types on all targets
+def FeatureLong64 : SubtargetFeature<"long64", "UseLong64",
+                                     "true",
+                                     "long type is forced to be 64-bit">;
 
 class ProcNoItin<string Name, list<SubtargetFeature> Features>
  : Processor<Name, NoItineraries, Features>;
diff --git a/lib/Target/ARM/ARMSubtarget.cpp b/lib/Target/ARM/ARMSubtarget.cpp
index 1c9dd4d..5b204f6 100644
--- a/lib/Target/ARM/ARMSubtarget.cpp
+++ b/lib/Target/ARM/ARMSubtarget.cpp
@@ -141,6 +141,7 @@
   Thumb2DSP = false;
   UseNaClTrap = false;
   UnsafeFPMath = false;
+  UseLong64 = false;
 }
 
 void ARMSubtarget::resetSubtargetFeatures(const MachineFunction *MF) {
diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h
index 77e4719..dc42d41 100644
--- a/lib/Target/ARM/ARMSubtarget.h
+++ b/lib/Target/ARM/ARMSubtarget.h
@@ -197,6 +197,9 @@
   /// NaCl TRAP instruction is generated instead of the regular TRAP.
   bool UseNaClTrap;
 
+  /// Force long to be a 64-bit type (RenderScript-specific)
+  bool UseLong64;
+
   /// Target machine allowed unsafe FP math (such as use of NEON fp)
   bool UnsafeFPMath;
 
diff --git a/lib/Target/ARM/Android.mk b/lib/Target/ARM/Android.mk
new file mode 100644
index 0000000..095955b
--- /dev/null
+++ b/lib/Target/ARM/Android.mk
@@ -0,0 +1,86 @@
+LOCAL_PATH := $(call my-dir)
+
+arm_codegen_TBLGEN_TABLES := \
+  ARMGenRegisterInfo.inc \
+  ARMGenInstrInfo.inc \
+  ARMGenCodeEmitter.inc \
+  ARMGenMCCodeEmitter.inc \
+  ARMGenMCPseudoLowering.inc \
+  ARMGenAsmWriter.inc \
+  ARMGenAsmMatcher.inc \
+  ARMGenDAGISel.inc \
+  ARMGenFastISel.inc \
+  ARMGenCallingConv.inc \
+  ARMGenSubtargetInfo.inc \
+  ARMGenDisassemblerTables.inc
+
+arm_codegen_SRC_FILES := \
+  A15SDOptimizer.cpp \
+  ARMAsmPrinter.cpp \
+  ARMBaseInstrInfo.cpp \
+  ARMBaseRegisterInfo.cpp \
+  ARMCodeEmitter.cpp \
+  ARMConstantIslandPass.cpp \
+  ARMConstantPoolValue.cpp \
+  ARMExpandPseudoInsts.cpp \
+  ARMFastISel.cpp \
+  ARMFrameLowering.cpp \
+  ARMHazardRecognizer.cpp \
+  ARMISelDAGToDAG.cpp \
+  ARMISelLowering.cpp \
+  ARMInstrInfo.cpp \
+  ARMJITInfo.cpp \
+  ARMLoadStoreOptimizer.cpp \
+  ARMMCInstLower.cpp \
+  ARMMachineFunctionInfo.cpp \
+  ARMOptimizeBarriersPass.cpp \
+  ARMRegisterInfo.cpp \
+  ARMSelectionDAGInfo.cpp \
+  ARMSubtarget.cpp \
+  ARMTargetMachine.cpp \
+  ARMTargetObjectFile.cpp \
+  ARMTargetTransformInfo.cpp \
+  MLxExpansionPass.cpp \
+  Thumb1FrameLowering.cpp \
+  Thumb1InstrInfo.cpp \
+  Thumb1RegisterInfo.cpp \
+  Thumb2ITBlockPass.cpp \
+  Thumb2InstrInfo.cpp \
+  Thumb2RegisterInfo.cpp \
+  Thumb2SizeReduction.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARMCodeGen
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
+TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARMCodeGen
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
+TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/ARM/AsmParser/Android.mk b/lib/Target/ARM/AsmParser/Android.mk
new file mode 100644
index 0000000..5f88cc3
--- /dev/null
+++ b/lib/Target/ARM/AsmParser/Android.mk
@@ -0,0 +1,63 @@
+LOCAL_PATH := $(call my-dir)
+
+#===---------------------------------------------------------------===
+# libARMAsmParser (common)
+#===---------------------------------------------------------------===
+
+arm_asm_parser_SRC_FILES := \
+  ARMAsmParser.cpp
+
+arm_asm_parser_TBLGEN_TABLES := \
+  ARMGenInstrInfo.inc \
+  ARMGenRegisterInfo.inc \
+  ARMGenAsmMatcher.inc \
+  ARMGenSubtargetInfo.inc
+
+arm_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+arm_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
+
+
+#===---------------------------------------------------------------===
+# libARMAsmParser (host)
+#===---------------------------------------------------------------===
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARMAsmParser
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+ifneq (,$(filter windows darwin,$(HOST_OS)))
+# Override the default optimization level to work around taking forever (~50m)
+# to compile ARMAsmParser.cpp on Mac with gcc 4.2,
+# or on Linux with mingw32msvc-gcc 4.2, which is used to cross-compile
+# the win_sdk.
+LOCAL_CFLAGS += -O0
+endif
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+
+#===---------------------------------------------------------------===
+# libARMAsmParser (target)
+#===---------------------------------------------------------------===
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARMAsmParser
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/ARM/Disassembler/Android.mk b/lib/Target/ARM/Disassembler/Android.mk
new file mode 100644
index 0000000..3db61a5
--- /dev/null
+++ b/lib/Target/ARM/Disassembler/Android.mk
@@ -0,0 +1,55 @@
+LOCAL_PATH := $(call my-dir)
+
+arm_disassembler_TBLGEN_TABLES := \
+  ARMGenDisassemblerTables.inc \
+  ARMGenInstrInfo.inc \
+  ARMGenSubtargetInfo.inc \
+  ARMGenRegisterInfo.inc
+
+arm_disassembler_SRC_FILES := \
+  ARMDisassembler.cpp
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARMDisassembler
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARMDisassembler
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
diff --git a/lib/Target/ARM/InstPrinter/Android.mk b/lib/Target/ARM/InstPrinter/Android.mk
new file mode 100644
index 0000000..cefed76
--- /dev/null
+++ b/lib/Target/ARM/InstPrinter/Android.mk
@@ -0,0 +1,57 @@
+LOCAL_PATH := $(call my-dir)
+
+arm_asm_printer_TBLGEN_TABLES := \
+  ARMGenAsmWriter.inc \
+  ARMGenRegisterInfo.inc \
+  ARMGenSubtargetInfo.inc \
+  ARMGenInstrInfo.inc
+
+arm_asm_printer_SRC_FILES := \
+  ARMInstPrinter.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMARMAsmPrinter
+
+LOCAL_C_INCLUDES += \
+    $(LOCAL_PATH)/..
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES)
+
+LOCAL_C_INCLUDES+= \
+    $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARMAsmPrinter
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
+
diff --git a/lib/Target/ARM/MCTargetDesc/Android.mk b/lib/Target/ARM/MCTargetDesc/Android.mk
new file mode 100644
index 0000000..a5827f7
--- /dev/null
+++ b/lib/Target/ARM/MCTargetDesc/Android.mk
@@ -0,0 +1,63 @@
+LOCAL_PATH := $(call my-dir)
+
+arm_mc_desc_TBLGEN_TABLES := \
+  ARMGenRegisterInfo.inc \
+  ARMGenInstrInfo.inc \
+  ARMGenMCCodeEmitter.inc \
+  ARMGenSubtargetInfo.inc
+
+arm_mc_desc_SRC_FILES := \
+  ARMAsmBackend.cpp \
+  ARMELFObjectWriter.cpp \
+  ARMELFStreamer.cpp \
+  ARMMCAsmInfo.cpp \
+  ARMMCCodeEmitter.cpp \
+  ARMMCExpr.cpp \
+  ARMMCTargetDesc.cpp \
+  ARMMachObjectWriter.cpp \
+  ARMMachORelocationInfo.cpp \
+  ARMTargetStreamer.cpp \
+  ARMUnwindOpAsm.cpp \
+  ARMWinCOFFObjectWriter.cpp \
+  ARMWinCOFFStreamer.cpp \
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+
+LOCAL_MODULE:= libLLVMARMDesc
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMARMDesc
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/ARM/TargetInfo/Android.mk b/lib/Target/ARM/TargetInfo/Android.mk
new file mode 100644
index 0000000..e31c2b8
--- /dev/null
+++ b/lib/Target/ARM/TargetInfo/Android.mk
@@ -0,0 +1,55 @@
+LOCAL_PATH := $(call my-dir)
+
+arm_target_info_TBLGEN_TABLES := \
+  ARMGenSubtargetInfo.inc \
+  ARMGenRegisterInfo.inc \
+  ARMGenInstrInfo.inc
+
+arm_target_info_SRC_FILES := \
+  ARMTargetInfo.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES)
+
+LOCAL_C_INCLUDES +=	\
+	$(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARMInfo
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES)
+
+LOCAL_C_INCLUDES +=	\
+	$(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMARMInfo
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/Android.mk b/lib/Target/Android.mk
new file mode 100644
index 0000000..1b43ce4
--- /dev/null
+++ b/lib/Target/Android.mk
@@ -0,0 +1,39 @@
+LOCAL_PATH:= $(call my-dir)
+
+target_SRC_FILES := \
+  Target.cpp \
+  TargetIntrinsicInfo.cpp \
+  TargetJITInfo.cpp \
+  TargetLibraryInfo.cpp \
+  TargetLoweringObjectFile.cpp \
+  TargetMachineC.cpp \
+  TargetMachine.cpp \
+  TargetSubtargetInfo.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(target_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMTarget
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(target_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMTarget
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/Mips/Android.mk b/lib/Target/Mips/Android.mk
new file mode 100644
index 0000000..4e8831c
--- /dev/null
+++ b/lib/Target/Mips/Android.mk
@@ -0,0 +1,86 @@
+LOCAL_PATH := $(call my-dir)
+
+mips_codegen_TBLGEN_TABLES := \
+  MipsGenRegisterInfo.inc \
+  MipsGenInstrInfo.inc \
+  MipsGenCodeEmitter.inc \
+  MipsGenMCCodeEmitter.inc \
+  MipsGenMCPseudoLowering.inc \
+  MipsGenAsmWriter.inc \
+  MipsGenDAGISel.inc \
+  MipsGenCallingConv.inc \
+  MipsGenSubtargetInfo.inc
+
+mips_codegen_SRC_FILES := \
+  Mips16FrameLowering.cpp \
+  Mips16HardFloat.cpp \
+  Mips16HardFloatInfo.cpp \
+  Mips16ISelDAGToDAG.cpp \
+  Mips16ISelLowering.cpp \
+  Mips16InstrInfo.cpp \
+  Mips16RegisterInfo.cpp \
+  MipsAnalyzeImmediate.cpp \
+  MipsAsmPrinter.cpp \
+  MipsCodeEmitter.cpp \
+  MipsConstantIslandPass.cpp \
+  MipsDelaySlotFiller.cpp \
+  MipsFastISel.cpp \
+  MipsFrameLowering.cpp \
+  MipsInstrInfo.cpp \
+  MipsISelDAGToDAG.cpp \
+  MipsISelLowering.cpp \
+  MipsJITInfo.cpp \
+  MipsLongBranch.cpp \
+  MipsMachineFunction.cpp \
+  MipsMCInstLower.cpp \
+  MipsModuleISelDAGToDAG.cpp \
+  MipsOs16.cpp \
+  MipsOptimizePICCall.cpp \
+  MipsRegisterInfo.cpp \
+  MipsSEFrameLowering.cpp \
+  MipsSEISelDAGToDAG.cpp \
+  MipsSEISelLowering.cpp \
+  MipsSEInstrInfo.cpp \
+  MipsSERegisterInfo.cpp \
+  MipsSelectionDAGInfo.cpp \
+  MipsSubtarget.cpp \
+  MipsTargetMachine.cpp \
+  MipsTargetObjectFile.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsCodeGen
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
+
+TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsCodeGen
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
+
+TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/Mips/AsmParser/Android.mk b/lib/Target/Mips/AsmParser/Android.mk
new file mode 100644
index 0000000..7d8eec1
--- /dev/null
+++ b/lib/Target/Mips/AsmParser/Android.mk
@@ -0,0 +1,56 @@
+LOCAL_PATH := $(call my-dir)
+
+#===---------------------------------------------------------------===
+# libLLVMMipsAsmParser (common)
+#===---------------------------------------------------------------===
+
+mips_asm_parser_SRC_FILES := \
+  MipsAsmParser.cpp
+
+mips_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
+
+mips_asm_parser_TBLGEN_TABLES := \
+  MipsGenAsmMatcher.inc \
+  MipsGenInstrInfo.inc \
+  MipsGenRegisterInfo.inc \
+  MipsGenSubtargetInfo.inc
+
+mips_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+
+#===---------------------------------------------------------------===
+# libLLVMMipsAsmParser (host)
+#===---------------------------------------------------------------===
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsAsmParser
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+
+#===---------------------------------------------------------------===
+# libLLVMMipsAsmParser (target)
+#===---------------------------------------------------------------===
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsAsmParser
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/Mips/Disassembler/Android.mk b/lib/Target/Mips/Disassembler/Android.mk
new file mode 100644
index 0000000..20fd87a
--- /dev/null
+++ b/lib/Target/Mips/Disassembler/Android.mk
@@ -0,0 +1,48 @@
+LOCAL_PATH := $(call my-dir)
+
+mips_disassembler_TBLGEN_TABLES := \
+  MipsGenDisassemblerTables.inc \
+  MipsGenInstrInfo.inc \
+  MipsGenRegisterInfo.inc \
+  MipsGenSubtargetInfo.inc
+
+mips_disassembler_SRC_FILES := \
+  MipsDisassembler.cpp
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsDisassembler
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES)
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsDisassembler
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES)
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/Mips/InstPrinter/Android.mk b/lib/Target/Mips/InstPrinter/Android.mk
new file mode 100644
index 0000000..f4f3a4f
--- /dev/null
+++ b/lib/Target/Mips/InstPrinter/Android.mk
@@ -0,0 +1,48 @@
+LOCAL_PATH := $(call my-dir)
+
+mips_asm_printer_TBLGEN_TABLES := \
+  MipsGenAsmWriter.inc \
+  MipsGenRegisterInfo.inc \
+  MipsGenSubtargetInfo.inc \
+  MipsGenInstrInfo.inc
+
+mips_asm_printer_SRC_FILES := \
+  MipsInstPrinter.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsAsmPrinter
+LOCAL_MODULE_TAGS := optional
+
+TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES)
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsAsmPrinter
+LOCAL_MODULE_TAGS := optional
+
+TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES)
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/Mips/MCTargetDesc/Android.mk b/lib/Target/Mips/MCTargetDesc/Android.mk
new file mode 100644
index 0000000..7ee11a1
--- /dev/null
+++ b/lib/Target/Mips/MCTargetDesc/Android.mk
@@ -0,0 +1,58 @@
+LOCAL_PATH := $(call my-dir)
+
+mips_mc_desc_TBLGEN_TABLES := \
+  MipsGenRegisterInfo.inc \
+  MipsGenInstrInfo.inc \
+  MipsGenMCCodeEmitter.inc \
+  MipsGenSubtargetInfo.inc
+
+mips_mc_desc_SRC_FILES := \
+  MipsAsmBackend.cpp \
+  MipsELFObjectWriter.cpp \
+  MipsELFStreamer.cpp \
+  MipsMCAsmInfo.cpp \
+  MipsMCCodeEmitter.cpp \
+  MipsMCExpr.cpp \
+  MipsMCTargetDesc.cpp \
+  MipsNaClELFStreamer.cpp \
+  MipsTargetStreamer.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsDesc
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsDesc
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/Mips/TargetInfo/Android.mk b/lib/Target/Mips/TargetInfo/Android.mk
new file mode 100644
index 0000000..173d05b
--- /dev/null
+++ b/lib/Target/Mips/TargetInfo/Android.mk
@@ -0,0 +1,47 @@
+LOCAL_PATH := $(call my-dir)
+
+mips_target_info_TBLGEN_TABLES := \
+  MipsGenInstrInfo.inc \
+  MipsGenRegisterInfo.inc \
+  MipsGenSubtargetInfo.inc
+
+mips_target_info_SRC_FILES := \
+  MipsTargetInfo.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsInfo
+LOCAL_MODULE_TAGS := optional
+
+TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES)
+LOCAL_C_INCLUDES +=	$(LOCAL_PATH)/..
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMMipsInfo
+LOCAL_MODULE_TAGS := optional
+
+TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES)
+LOCAL_C_INCLUDES +=	$(LOCAL_PATH)/..
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
\ No newline at end of file
diff --git a/lib/Target/X86/Android.mk b/lib/Target/X86/Android.mk
new file mode 100644
index 0000000..73031de
--- /dev/null
+++ b/lib/Target/X86/Android.mk
@@ -0,0 +1,72 @@
+LOCAL_PATH := $(call my-dir)
+
+x86_codegen_TBLGEN_TABLES := \
+  X86GenAsmWriter.inc \
+  X86GenAsmWriter1.inc \
+  X86GenRegisterInfo.inc \
+  X86GenInstrInfo.inc \
+  X86GenDAGISel.inc \
+  X86GenFastISel.inc \
+  X86GenSubtargetInfo.inc \
+  X86GenCallingConv.inc
+
+x86_codegen_SRC_FILES := \
+  X86AsmPrinter.cpp \
+  X86COFFMachineModuleInfo.cpp \
+  X86CodeEmitter.cpp \
+  X86FastISel.cpp \
+  X86FixupLEAs.cpp \
+  X86FloatingPoint.cpp \
+  X86FrameLowering.cpp \
+  X86ISelDAGToDAG.cpp \
+  X86ISelLowering.cpp \
+  X86InstrInfo.cpp \
+  X86JITInfo.cpp \
+  X86MachineFunctionInfo.cpp \
+  X86MCInstLower.cpp \
+  X86PadShortFunction.cpp \
+  X86RegisterInfo.cpp \
+  X86SelectionDAGInfo.cpp \
+  X86Subtarget.cpp \
+  X86TargetMachine.cpp \
+  X86TargetObjectFile.cpp \
+  X86TargetTransformInfo.cpp \
+  X86VZeroUpper.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES)
+
+LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMX86CodeGen
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES)
+
+LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMX86CodeGen
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/X86/AsmParser/Android.mk b/lib/Target/X86/AsmParser/Android.mk
new file mode 100644
index 0000000..4235cb1
--- /dev/null
+++ b/lib/Target/X86/AsmParser/Android.mk
@@ -0,0 +1,59 @@
+LOCAL_PATH := $(call my-dir)
+
+# For the device only
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+x86_asm_parser_SRC_FILES :=	\
+	X86AsmInstrumentation.cpp \
+	X86AsmParser.cpp
+
+x86_asm_parser_TBLGEN_TABLES :=	\
+	X86GenAsmMatcher.inc	\
+	X86GenInstrInfo.inc	\
+	X86GenRegisterInfo.inc \
+	X86GenSubtargetInfo.inc
+
+x86_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+x86_asm_parser_C_INCLUDES +=	\
+	$(LOCAL_PATH)/..
+
+
+#===---------------------------------------------------------------===
+# libX86AsmParser (host)
+#===---------------------------------------------------------------===
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMX86AsmParser
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+
+#===---------------------------------------------------------------===
+# libX86AsmParser (target)
+#===---------------------------------------------------------------===
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMX86AsmParser
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES)
+LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES)
+TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/X86/Disassembler/Android.mk b/lib/Target/X86/Disassembler/Android.mk
new file mode 100644
index 0000000..0b3b8a5
--- /dev/null
+++ b/lib/Target/X86/Disassembler/Android.mk
@@ -0,0 +1,57 @@
+LOCAL_PATH := $(call my-dir)
+
+x86_disassembler_TBLGEN_TABLES := \
+  X86GenDisassemblerTables.inc \
+  X86GenInstrInfo.inc \
+  X86GenRegisterInfo.inc \
+  X86GenSubtargetInfo.inc
+
+x86_disassembler_SRC_FILES := \
+  X86Disassembler.cpp \
+  X86DisassemblerDecoder.cpp
+
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86Disassembler
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES)
+
+LOCAL_C_INCLUDES +=	\
+	$(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86Disassembler
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/X86/InstPrinter/Android.mk b/lib/Target/X86/InstPrinter/Android.mk
new file mode 100644
index 0000000..9881beb
--- /dev/null
+++ b/lib/Target/X86/InstPrinter/Android.mk
@@ -0,0 +1,57 @@
+LOCAL_PATH := $(call my-dir)
+
+x86_instprinter_TBLGEN_TABLES := \
+  X86GenAsmWriter.inc \
+  X86GenAsmWriter1.inc \
+  X86GenInstrInfo.inc \
+  X86GenRegisterInfo.inc \
+  X86GenSubtargetInfo.inc
+
+x86_instprinter_SRC_FILES := \
+  X86ATTInstPrinter.cpp \
+  X86IntelInstPrinter.cpp \
+  X86InstComments.cpp
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86AsmPrinter
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE := libLLVMX86AsmPrinter
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/X86/MCTargetDesc/Android.mk b/lib/Target/X86/MCTargetDesc/Android.mk
new file mode 100644
index 0000000..a3c9bc8
--- /dev/null
+++ b/lib/Target/X86/MCTargetDesc/Android.mk
@@ -0,0 +1,57 @@
+LOCAL_PATH := $(call my-dir)
+
+x86_mc_desc_TBLGEN_TABLES := \
+  X86GenRegisterInfo.inc \
+  X86GenInstrInfo.inc \
+  X86GenSubtargetInfo.inc
+
+x86_mc_desc_SRC_FILES := \
+  X86AsmBackend.cpp \
+  X86ELFObjectWriter.cpp \
+  X86ELFRelocationInfo.cpp \
+  X86MCTargetDesc.cpp \
+  X86MCAsmInfo.cpp \
+  X86MCCodeEmitter.cpp \
+  X86MachORelocationInfo.cpp \
+  X86MachObjectWriter.cpp \
+  X86WinCOFFObjectWriter.cpp \
+  X86WinCOFFStreamer.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+LOCAL_MODULE:= libLLVMX86Desc
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device only
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+
+LOCAL_MODULE:= libLLVMX86Desc
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES)
+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
+TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES)
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/X86/TargetInfo/Android.mk b/lib/Target/X86/TargetInfo/Android.mk
new file mode 100644
index 0000000..1a6c902
--- /dev/null
+++ b/lib/Target/X86/TargetInfo/Android.mk
@@ -0,0 +1,55 @@
+LOCAL_PATH := $(call my-dir)
+
+x86_target_info_TBLGEN_TABLES := \
+  X86GenRegisterInfo.inc \
+  X86GenSubtargetInfo.inc \
+  X86GenInstrInfo.inc
+
+x86_target_info_SRC_FILES := \
+  X86TargetInfo.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES)
+
+LOCAL_C_INCLUDES +=	\
+	$(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86Info
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+include $(CLEAR_TBLGEN_VARS)
+
+TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES)
+
+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
+
+LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES)
+
+LOCAL_C_INCLUDES +=     \
+        $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86Info
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_TBLGEN_RULES_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Target/X86/Utils/Android.mk b/lib/Target/X86/Utils/Android.mk
new file mode 100644
index 0000000..e0c4797
--- /dev/null
+++ b/lib/Target/X86/Utils/Android.mk
@@ -0,0 +1,36 @@
+LOCAL_PATH := $(call my-dir)
+
+x86_utils_SRC_FILES := \
+  X86ShuffleDecode.cpp
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(x86_utils_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86Utils
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(x86_utils_SRC_FILES)
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
+
+LOCAL_MODULE:= libLLVMX86Utils
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Transforms/IPO/Android.mk b/lib/Transforms/IPO/Android.mk
new file mode 100644
index 0000000..1fe7d63
--- /dev/null
+++ b/lib/Transforms/IPO/Android.mk
@@ -0,0 +1,52 @@
+LOCAL_PATH:= $(call my-dir)
+
+transforms_ipo_SRC_FILES := \
+  ArgumentPromotion.cpp \
+  BarrierNoopPass.cpp \
+  ConstantMerge.cpp \
+  DeadArgumentElimination.cpp \
+  ExtractGV.cpp \
+  FunctionAttrs.cpp \
+  GlobalDCE.cpp \
+  GlobalOpt.cpp \
+  IPConstantPropagation.cpp \
+  IPO.cpp \
+  InlineAlways.cpp \
+  InlineSimple.cpp \
+  Inliner.cpp \
+  Internalize.cpp \
+  LoopExtractor.cpp \
+  MergeFunctions.cpp \
+  PartialInlining.cpp \
+  PassManagerBuilder.cpp \
+  PruneEH.cpp \
+  StripDeadPrototypes.cpp \
+  StripSymbols.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES)
+LOCAL_MODULE:= libLLVMipo
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES)
+LOCAL_MODULE:= libLLVMipo
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Transforms/InstCombine/Android.mk b/lib/Transforms/InstCombine/Android.mk
new file mode 100644
index 0000000..62dc7d9
--- /dev/null
+++ b/lib/Transforms/InstCombine/Android.mk
@@ -0,0 +1,44 @@
+LOCAL_PATH:= $(call my-dir)
+
+transforms_inst_combine_SRC_FILES := \
+  InstCombineAddSub.cpp \
+  InstCombineAndOrXor.cpp \
+  InstCombineCalls.cpp \
+  InstCombineCasts.cpp \
+  InstCombineCompares.cpp \
+  InstCombineLoadStoreAlloca.cpp \
+  InstCombineMulDivRem.cpp \
+  InstCombinePHI.cpp \
+  InstCombineSelect.cpp \
+  InstCombineShifts.cpp \
+  InstCombineSimplifyDemanded.cpp \
+  InstCombineVectorOps.cpp \
+  InstructionCombining.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES)
+LOCAL_MODULE:= libLLVMInstCombine
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES)
+LOCAL_MODULE:= libLLVMInstCombine
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Transforms/Instrumentation/Android.mk b/lib/Transforms/Instrumentation/Android.mk
new file mode 100644
index 0000000..f9a55c7
--- /dev/null
+++ b/lib/Transforms/Instrumentation/Android.mk
@@ -0,0 +1,37 @@
+LOCAL_PATH:= $(call my-dir)
+
+instrumentation_SRC_FILES := \
+  AddressSanitizer.cpp \
+  BoundsChecking.cpp \
+  DataFlowSanitizer.cpp \
+  DebugIR.cpp \
+  GCOVProfiling.cpp \
+  Instrumentation.cpp \
+  MemorySanitizer.cpp \
+  ThreadSanitizer.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= libLLVMInstrumentation
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(instrumentation_SRC_FILES)
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the target
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= libLLVMInstrumentation
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(instrumentation_SRC_FILES)
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Transforms/ObjCARC/Android.mk b/lib/Transforms/ObjCARC/Android.mk
new file mode 100644
index 0000000..226e9e1
--- /dev/null
+++ b/lib/Transforms/ObjCARC/Android.mk
@@ -0,0 +1,40 @@
+LOCAL_PATH:= $(call my-dir)
+
+transforms_objcarc_SRC_FILES := \
+  DependencyAnalysis.cpp \
+  ObjCARCAliasAnalysis.cpp \
+  ObjCARCAPElim.cpp \
+  ObjCARCContract.cpp \
+  ObjCARC.cpp \
+  ObjCARCExpand.cpp \
+  ObjCARCOpts.cpp \
+  ObjCARCUtil.cpp \
+  ProvenanceAnalysis.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES)
+LOCAL_MODULE:= libLLVMTransformObjCARC
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES)
+LOCAL_MODULE:= libLLVMTransformObjCARC
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Transforms/Scalar/Android.mk b/lib/Transforms/Scalar/Android.mk
new file mode 100644
index 0000000..3894f93
--- /dev/null
+++ b/lib/Transforms/Scalar/Android.mk
@@ -0,0 +1,73 @@
+LOCAL_PATH:= $(call my-dir)
+
+transforms_scalar_SRC_FILES := \
+  ADCE.cpp \
+  ConstantProp.cpp \
+  ConstantHoisting.cpp \
+  CorrelatedValuePropagation.cpp \
+  DCE.cpp \
+  DeadStoreElimination.cpp \
+  EarlyCSE.cpp \
+  GlobalMerge.cpp \
+  GVN.cpp \
+  IndVarSimplify.cpp \
+  JumpThreading.cpp \
+  LICM.cpp \
+  LoopDeletion.cpp \
+  LoopIdiomRecognize.cpp \
+  LoopInstSimplify.cpp \
+  LoopRerollPass.cpp \
+  LoopRotation.cpp \
+  LoopStrengthReduce.cpp \
+  LoopUnrollPass.cpp \
+  LoopUnswitch.cpp \
+  LowerAtomic.cpp \
+  MemCpyOptimizer.cpp \
+  PartiallyInlineLibCalls.cpp \
+  Reassociate.cpp \
+  Reg2Mem.cpp \
+  SCCP.cpp \
+  SROA.cpp \
+  SampleProfile.cpp \
+  Scalar.cpp \
+  Scalarizer.cpp \
+  ScalarReplAggregates.cpp \
+  SimplifyCFGPass.cpp \
+  Sink.cpp \
+  StructurizeCFG.cpp \
+  TailRecursionElimination.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES :=	\
+	$(transforms_scalar_SRC_FILES)
+
+LOCAL_MODULE:= libLLVMScalarOpts
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_scalar_SRC_FILES)
+LOCAL_MODULE:= libLLVMScalarOpts
+
+# Override the default optimization level to work around a SIGSEGV
+# on x86 target builds for SROA.cpp.
+# Bug: 8047767
+LOCAL_CFLAGS_x86 += -O1
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Transforms/Scalar/GlobalMerge.cpp b/lib/Transforms/Scalar/GlobalMerge.cpp
index dd9c378..990d067 100644
--- a/lib/Transforms/Scalar/GlobalMerge.cpp
+++ b/lib/Transforms/Scalar/GlobalMerge.cpp
@@ -71,7 +71,7 @@
 
 #define DEBUG_TYPE "global-merge"
 
-static cl::opt<bool>
+cl::opt<bool>
 EnableGlobalMerge("global-merge", cl::Hidden,
                   cl::desc("Enable global merge pass"),
                   cl::init(true));
diff --git a/lib/Transforms/Utils/Android.mk b/lib/Transforms/Utils/Android.mk
new file mode 100644
index 0000000..ab4d8a8
--- /dev/null
+++ b/lib/Transforms/Utils/Android.mk
@@ -0,0 +1,66 @@
+LOCAL_PATH:= $(call my-dir)
+
+transforms_utils_SRC_FILES := \
+  AddDiscriminators.cpp \
+  ASanStackFrameLayout.cpp \
+  BasicBlockUtils.cpp \
+  BreakCriticalEdges.cpp \
+  BuildLibCalls.cpp \
+  BypassSlowDivision.cpp \
+  CloneFunction.cpp \
+  CloneModule.cpp \
+  CmpInstAnalysis.cpp \
+  CodeExtractor.cpp \
+  DemoteRegToStack.cpp \
+  GlobalStatus.cpp \
+  InlineFunction.cpp \
+  InstructionNamer.cpp \
+  LCSSA.cpp \
+  Local.cpp \
+  LoopSimplify.cpp \
+  LoopUnroll.cpp \
+  LoopUnrollRuntime.cpp \
+  LowerExpectIntrinsic.cpp \
+  LowerInvoke.cpp \
+  LowerSwitch.cpp \
+  Mem2Reg.cpp \
+  MetaRenamer.cpp \
+  ModuleUtils.cpp \
+  PromoteMemoryToRegister.cpp \
+  SSAUpdater.cpp \
+  SimplifyCFG.cpp \
+  SimplifyIndVar.cpp \
+  SimplifyInstructions.cpp \
+  SimplifyLibCalls.cpp \
+  SpecialCaseList.cpp \
+  UnifyFunctionExitNodes.cpp \
+  Utils.cpp \
+  ValueMapper.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES)
+LOCAL_MODULE:= libLLVMTransformUtils
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES)
+LOCAL_MODULE:= libLLVMTransformUtils
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/lib/Transforms/Vectorize/Android.mk b/lib/Transforms/Vectorize/Android.mk
new file mode 100644
index 0000000..ea090c0
--- /dev/null
+++ b/lib/Transforms/Vectorize/Android.mk
@@ -0,0 +1,35 @@
+LOCAL_PATH:= $(call my-dir)
+
+transforms_vectorize_SRC_FILES := \
+  BBVectorize.cpp \
+  LoopVectorize.cpp \
+  SLPVectorizer.cpp \
+  Vectorize.cpp
+
+# For the host
+# =====================================================
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES)
+LOCAL_MODULE:= libLLVMVectorize
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_STATIC_LIBRARY)
+
+# For the device
+# =====================================================
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES)
+LOCAL_MODULE:= libLLVMVectorize
+
+LOCAL_MODULE_TAGS := optional
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_STATIC_LIBRARY)
+endif
diff --git a/llvm-device-build.mk b/llvm-device-build.mk
new file mode 100644
index 0000000..107762a
--- /dev/null
+++ b/llvm-device-build.mk
@@ -0,0 +1,80 @@
+LOCAL_MODULE_TARGET_ARCH := $(LLVM_SUPPORTED_ARCH)
+
+LOCAL_CLANG := true
+
+LOCAL_CFLAGS :=	\
+	-D_GNU_SOURCE	\
+	-D__STDC_LIMIT_MACROS	\
+	-D__STDC_CONSTANT_MACROS	\
+	-D__STDC_FORMAT_MACROS	\
+	-O2	\
+	-fomit-frame-pointer	\
+	-Wall	\
+	-W	\
+	-Wno-unused-parameter	\
+	-Wwrite-strings	\
+        -Dsprintf=sprintf \
+	$(LOCAL_CFLAGS)
+
+# The three inline options together reduce libbcc.so almost 1MB.
+# We move them from global build/core/combo/TARGET_linux-arm.mk
+# to here.
+LOCAL_CFLAGS := -DANDROID_TARGET_BUILD \
+		-finline-functions \
+		$(LOCAL_CFLAGS)
+
+ifeq ($(TARGET_BUILD_VARIANT),eng)
+LOCAL_CFLAGS := -DANDROID_ENGINEERING_BUILD \
+                $(LOCAL_CFLAGS)
+endif
+
+ifeq ($(LLVM_ENABLE_ASSERTION),true)
+LOCAL_CFLAGS :=	\
+	$(LOCAL_CFLAGS) \
+	-D_DEBUG	\
+	-UNDEBUG
+endif
+
+ifneq ($(REQUIRES_EH),1)
+LOCAL_CFLAGS +=	-fno-exceptions
+else
+# No action. The device target should not have exception enabled since bionic
+# doesn't support it
+REQUIRES_EH := 0
+endif
+
+ifneq ($(REQUIRES_RTTI),1)
+LOCAL_CPPFLAGS +=	-fno-rtti
+else
+REQUIRES_RTTI := 0
+endif
+
+LOCAL_CPPFLAGS :=	\
+	$(LOCAL_CPPFLAGS)	\
+	-Woverloaded-virtual	\
+	-Wno-sign-promo         \
+	-std=c++11
+
+# Make sure bionic is first so we can include system headers.
+LOCAL_C_INCLUDES :=	\
+	bionic \
+	external/libcxx/include \
+	$(LLVM_ROOT_PATH)	\
+	$(LLVM_ROOT_PATH)/include	\
+	$(LLVM_ROOT_PATH)/device/include	\
+	$(LOCAL_C_INCLUDES)
+
+###########################################################
+## Commands for running tblgen to compile a td file
+###########################################################
+define transform-device-td-to-out
+@mkdir -p $(dir $@)
+@echo "Device TableGen (gen-$(1)): $(TBLGEN_LOCAL_MODULE) <= $<"
+$(hide) $(TBLGEN) \
+	-I $(dir $<)	\
+	-I $(LLVM_ROOT_PATH)/include	\
+	-I $(LLVM_ROOT_PATH)/device/include	\
+	-I $(LLVM_ROOT_PATH)/lib/Target	\
+    -gen-$(strip $(1)) \
+    -o $@ $<
+endef
diff --git a/llvm-gen-intrinsics.mk b/llvm-gen-intrinsics.mk
new file mode 100644
index 0000000..358027b
--- /dev/null
+++ b/llvm-gen-intrinsics.mk
@@ -0,0 +1,19 @@
+# We treat Intrinsics.td as a very special target just like what lib/VMCore/Makefile does
+INTRINSICTD := $(LLVM_ROOT_PATH)/include/llvm/IR/Intrinsics.td
+INTRINSICTDS := $(wildcard $(dir $(INTRINSICTD))/Intrinsics*.td)
+
+LOCAL_SRC_FILES := $(INTRINSICTD) $(LOCAL_SRC_FILES)
+
+ifeq ($(LOCAL_MODULE_CLASS),)
+	LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+endif
+
+GENFILE := $(addprefix $(call local-generated-sources-dir)/llvm/IR/,Intrinsics.gen)
+LOCAL_GENERATED_SOURCES += $(GENFILE)
+$(GENFILE): TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(GENFILE): $(INTRINSICTD) $(INTRINSICTDS) | $(TBLGEN)
+ifeq ($(LOCAL_IS_HOST_MODULE),true)
+	$(call transform-host-td-to-out,intrinsic)
+else
+	$(call transform-device-td-to-out,intrinsic)
+endif
diff --git a/llvm-host-build.mk b/llvm-host-build.mk
new file mode 100644
index 0000000..4ab911b
--- /dev/null
+++ b/llvm-host-build.mk
@@ -0,0 +1,67 @@
+LOCAL_CLANG := true
+
+include external/libcxx/libcxx.mk
+
+LOCAL_CFLAGS +=	\
+	-D_GNU_SOURCE	\
+	-D__STDC_LIMIT_MACROS	\
+	-O2	\
+	-fomit-frame-pointer	\
+	-Wall	\
+	-W	\
+	-Wno-unused-parameter	\
+	-Wwrite-strings	\
+        -Dsprintf=sprintf \
+	$(LOCAL_CFLAGS)
+
+ifeq ($(LLVM_ENABLE_ASSERTION),true)
+LOCAL_CFLAGS :=	\
+	$(LOCAL_CFLAGS) \
+	-D_DEBUG	\
+	-UNDEBUG
+endif
+
+ifneq ($(REQUIRES_EH),1)
+LOCAL_CFLAGS += -fno-exceptions
+else
+REQUIRES_EH := 0
+LOCAL_CFLAGS += -fexceptions
+endif
+
+ifneq ($(REQUIRES_RTTI),1)
+LOCAL_CPPFLAGS += -fno-rtti
+else
+REQUIRES_RTTI := 0
+endif
+
+LOCAL_CPPFLAGS :=	\
+	$(LOCAL_CPPFLAGS)	\
+	-Woverloaded-virtual	\
+	-Wno-sign-promo         \
+	-std=c++11
+
+# Make sure bionic is first so we can include system headers.
+LOCAL_C_INCLUDES :=	\
+	$(LLVM_ROOT_PATH)	\
+	$(LLVM_ROOT_PATH)/include	\
+	$(LLVM_ROOT_PATH)/host/include	\
+        external/libcxx/include \
+	$(LOCAL_C_INCLUDES)
+
+LOCAL_IS_HOST_MODULE := true
+
+###########################################################
+## Commands for running tblgen to compile a td file
+###########################################################
+define transform-host-td-to-out
+@mkdir -p $(dir $@)
+@echo "Host TableGen: $(TBLGEN_LOCAL_MODULE) (gen-$(1)) <= $<"
+$(hide) $(TBLGEN) \
+	-I $(dir $<)	\
+	-I $(LLVM_ROOT_PATH)/include	\
+	-I $(LLVM_ROOT_PATH)/host/include	\
+	-I $(LLVM_ROOT_PATH)/lib/Target	\
+	$(if $(strip $(CLANG_ROOT_PATH)),-I $(CLANG_ROOT_PATH)/include,)	\
+	-gen-$(strip $(1))	\
+	-o $@ $<
+endef
diff --git a/llvm-tblgen-rules.mk b/llvm-tblgen-rules.mk
new file mode 100644
index 0000000..0746e8b
--- /dev/null
+++ b/llvm-tblgen-rules.mk
@@ -0,0 +1,208 @@
+###########################################################
+## Commands for running tblgen to compile a td file
+##########################################################
+define transform-td-to-out
+$(if $(LOCAL_IS_HOST_MODULE),	\
+	$(call transform-host-td-to-out,$(1)),	\
+	$(call transform-device-td-to-out,$(1)))
+endef
+
+###########################################################
+## TableGen: Compile .td files to .inc.
+###########################################################
+
+# Set LOCAL_MODULE_CLASS to STATIC_LIBRARIES default (require
+# for macro local-generated-sources-dir)
+ifeq ($(LOCAL_MODULE_CLASS),)
+	LOCAL_MODULE_CLASS := STATIC_LIBRARIES
+endif
+
+ifneq ($(strip $(TBLGEN_TABLES)),)
+
+generated_sources := $(call local-generated-sources-dir)
+tblgen_gen_tables := $(addprefix $(generated_sources)/,$(TBLGEN_TABLES))
+LOCAL_GENERATED_SOURCES += $(tblgen_gen_tables)
+
+tblgen_source_dir := $(LOCAL_PATH)
+ifneq ($(TBLGEN_TD_DIR),)
+tblgen_source_dir := $(TBLGEN_TD_DIR)
+endif
+
+ifneq (,$(filter $(tblgen_source_dir),MCTargetDesc))
+tblgen_td_deps := $(tblgen_source_dir)/../*.td
+else
+tblgen_td_deps := $(tblgen_source_dir)/*.td
+endif
+tblgen_td_deps := $(wildcard $(tblgen_td_deps))
+
+#
+# The directory and the .td directory is not the same.
+#
+ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/ARM/MCTargetDesc)
+$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/../%.td \
+                                       $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out, register-info)
+
+$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/../%.td \
+                                    $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,instr-info)
+
+$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/../%.td \
+                                        $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,subtarget)
+endif
+
+ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/X86/MCTargetDesc)
+$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/../%.td \
+                                       $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out, register-info)
+
+$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/../%.td \
+                                    $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,instr-info)
+
+$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/../%.td \
+                                        $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,subtarget)
+endif
+
+ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/Mips/MCTargetDesc)
+$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/../%.td \
+                                       $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out, register-info)
+
+$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/../%.td \
+                                    $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,instr-info)
+
+$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/../%.td \
+                                        $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,subtarget)
+endif
+
+
+ifneq ($(filter %GenRegisterInfo.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/%.td \
+                                       $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,register-info)
+endif
+
+ifneq ($(filter %GenInstrInfo.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/%.td \
+                                    $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,instr-info)
+endif
+
+ifneq ($(filter %GenAsmWriter.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenAsmWriter.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenAsmWriter.inc: $(tblgen_source_dir)/%.td \
+                                    $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,asm-writer)
+endif
+
+ifneq ($(filter %GenAsmWriter1.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenAsmWriter1.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenAsmWriter1.inc: $(tblgen_source_dir)/%.td \
+                                     $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,asm-writer -asmwriternum=1)
+endif
+
+ifneq ($(filter %GenAsmMatcher.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenAsmMatcher.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenAsmMatcher.inc: $(tblgen_source_dir)/%.td \
+                                     $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,asm-matcher)
+endif
+
+ifneq ($(filter %GenCodeEmitter.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenCodeEmitter.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenCodeEmitter.inc: $(tblgen_source_dir)/%.td \
+                                      $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,emitter)
+endif
+
+ifneq ($(filter %GenMCCodeEmitter.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenMCCodeEmitter.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenMCCodeEmitter.inc: $(tblgen_source_dir)/%.td \
+                                        $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,emitter -mc-emitter)
+endif
+
+ifneq ($(filter %GenMCPseudoLowering.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenMCPseudoLowering.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenMCPseudoLowering.inc: $(tblgen_source_dir)/%.td \
+                                           $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,pseudo-lowering)
+endif
+
+ifneq ($(filter %GenDAGISel.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenDAGISel.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenDAGISel.inc: $(tblgen_source_dir)/%.td \
+                                  $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,dag-isel)
+endif
+
+ifneq ($(filter %GenDisassemblerTables.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenDisassemblerTables.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenDisassemblerTables.inc: $(tblgen_source_dir)/%.td \
+                                             $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,disassembler)
+endif
+
+ifneq ($(filter %GenEDInfo.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenEDInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenEDInfo.inc: $(tblgen_source_dir)/%.td \
+                                 $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,enhanced-disassembly-info)
+endif
+
+ifneq ($(filter %GenFastISel.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenFastISel.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenFastISel.inc: $(tblgen_source_dir)/%.td \
+                                   $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,fast-isel)
+endif
+
+ifneq ($(filter %GenSubtargetInfo.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/%.td \
+                                        $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,subtarget)
+endif
+
+ifneq ($(filter %GenCallingConv.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenCallingConv.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenCallingConv.inc: $(tblgen_source_dir)/%.td \
+                                      $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,callingconv)
+endif
+
+ifneq ($(filter %GenIntrinsics.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/%GenIntrinsics.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/%GenIntrinsics.inc: $(tblgen_source_dir)/%.td \
+                                     $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,tgt_intrinsics)
+endif
+
+ifneq ($(findstring ARMGenDecoderTables.inc,$(tblgen_gen_tables)),)
+$(generated_sources)/ARMGenDecoderTables.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
+$(generated_sources)/ARMGenDecoderTables.inc: $(tblgen_source_dir)/ARM.td \
+                                          $(tblgen_td_deps) | $(TBLGEN)
+	$(call transform-td-to-out,arm-decoder)
+endif
+
+# Reset local variables
+tblgen_td_deps :=
+
+endif
diff --git a/llvm.mk b/llvm.mk
new file mode 100644
index 0000000..073ceb7
--- /dev/null
+++ b/llvm.mk
@@ -0,0 +1,11 @@
+ifeq ($(LLVM_ROOT_PATH),)
+$(error Must set variable LLVM_ROOT_PATH before including this! $(LOCAL_PATH))
+endif
+
+CLEAR_TBLGEN_VARS := $(LLVM_ROOT_PATH)/clear_tblgen_vars.mk
+LLVM_HOST_BUILD_MK := $(LLVM_ROOT_PATH)/llvm-host-build.mk
+LLVM_DEVICE_BUILD_MK := $(LLVM_ROOT_PATH)/llvm-device-build.mk
+LLVM_GEN_INTRINSICS_MK := $(LLVM_ROOT_PATH)/llvm-gen-intrinsics.mk
+LLVM_TBLGEN_RULES_MK := $(LLVM_ROOT_PATH)/llvm-tblgen-rules.mk
+
+LLVM_SUPPORTED_ARCH := arm arm64 mips x86 x86_64
diff --git a/patches/0001-Add-module-notice.patch b/patches/0001-Add-module-notice.patch
new file mode 100644
index 0000000..af1ad17
--- /dev/null
+++ b/patches/0001-Add-module-notice.patch
@@ -0,0 +1,17 @@
+From ae11c6bec4809f0b587ef765112bf38a79289996 Mon Sep 17 00:00:00 2001
+From: Tim Murray <timmurray@google.com>
+Date: Thu, 3 Apr 2014 10:44:14 -0700
+Subject: [PATCH 1/5] Add module notice.
+
+Change-Id: Ibfd46c3d2e652b7b56563349ae4924039eb8d4ac
+---
+ MODULE_LICENSE_BSD_LIKE | 0
+ 1 file changed, 0 insertions(+), 0 deletions(-)
+ create mode 100644 MODULE_LICENSE_BSD_LIKE
+
+diff --git a/MODULE_LICENSE_BSD_LIKE b/MODULE_LICENSE_BSD_LIKE
+new file mode 100644
+index 0000000..e69de29
+-- 
+1.9.1.423.g4596e3a
+
diff --git a/patches/0002-Add-basic-Android-configuration.patch b/patches/0002-Add-basic-Android-configuration.patch
new file mode 100644
index 0000000..3a17a3b
--- /dev/null
+++ b/patches/0002-Add-basic-Android-configuration.patch
@@ -0,0 +1,2389 @@
+From 75d1e0c4b102d6c244e10b83427ca5a52b89cab6 Mon Sep 17 00:00:00 2001
+From: Tim Murray <timmurray@google.com>
+Date: Thu, 27 Mar 2014 14:04:43 -0700
+Subject: [PATCH 2/5] Add basic Android configuration.
+
+Change-Id: I0102d75a076e96e15606cbecc86b069c0fc43bf1
+---
+ device/include/llvm/Config/AsmParsers.def    |  39 ++
+ device/include/llvm/Config/AsmPrinters.def   |  39 ++
+ device/include/llvm/Config/Disassemblers.def |  39 ++
+ device/include/llvm/Config/Targets.def       |  38 ++
+ device/include/llvm/Config/config.h          | 689 +++++++++++++++++++++++++
+ device/include/llvm/Config/llvm-config.h     |  94 ++++
+ host/include/llvm/Config/AsmParsers.def      |  32 ++
+ host/include/llvm/Config/AsmPrinters.def     |  32 ++
+ host/include/llvm/Config/Disassemblers.def   |  32 ++
+ host/include/llvm/Config/Targets.def         |  31 ++
+ host/include/llvm/Config/config.h            | 725 +++++++++++++++++++++++++++
+ host/include/llvm/Config/llvm-config.h       | 102 ++++
+ include/llvm/Config/llvm-platform-config.h   | 160 ++++++
+ include/llvm/Support/DataTypes.h             | 213 ++++++++
+ 14 files changed, 2265 insertions(+)
+ create mode 100644 device/include/llvm/Config/AsmParsers.def
+ create mode 100644 device/include/llvm/Config/AsmPrinters.def
+ create mode 100644 device/include/llvm/Config/Disassemblers.def
+ create mode 100644 device/include/llvm/Config/Targets.def
+ create mode 100644 device/include/llvm/Config/config.h
+ create mode 100644 device/include/llvm/Config/llvm-config.h
+ create mode 100644 host/include/llvm/Config/AsmParsers.def
+ create mode 100644 host/include/llvm/Config/AsmPrinters.def
+ create mode 100644 host/include/llvm/Config/Disassemblers.def
+ create mode 100644 host/include/llvm/Config/Targets.def
+ create mode 100644 host/include/llvm/Config/config.h
+ create mode 100644 host/include/llvm/Config/llvm-config.h
+ create mode 100644 include/llvm/Config/llvm-platform-config.h
+ create mode 100644 include/llvm/Support/DataTypes.h
+
+diff --git a/device/include/llvm/Config/AsmParsers.def b/device/include/llvm/Config/AsmParsers.def
+new file mode 100644
+index 0000000..ca3af2c
+--- /dev/null
++++ b/device/include/llvm/Config/AsmParsers.def
+@@ -0,0 +1,39 @@
++//===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===//
++//
++//                     The LLVM Compiler Infrastructure
++//
++// This file is distributed under the University of Illinois Open Source
++// License. See LICENSE.TXT for details.
++//
++//===----------------------------------------------------------------------===//
++//
++// This file enumerates all of the assembly-language parsers
++// supported by this build of LLVM. Clients of this file should define
++// the LLVM_ASM_PARSER macro to be a function-like macro with a
++// single parameter (the name of the target whose assembly can be
++// generated); including this file will then enumerate all of the
++// targets with assembly parsers.
++//
++// The set of targets supported by LLVM is generated at configuration
++// time, at which point this header is generated. Do not modify this
++// header directly.
++//
++//===----------------------------------------------------------------------===//
++
++#ifndef LLVM_ASM_PARSER
++#  error Please define the macro LLVM_ASM_PARSER(TargetName)
++#endif
++
++#if defined(__arm__)
++  LLVM_ASM_PARSER(ARM)
++#elif defined(__mips__)
++  LLVM_ASM_PARSER(Mips)
++#elif defined(__i386__) || defined(__x86_64__)
++  LLVM_ASM_PARSER(X86)
++#elif defined(__aarch64__)
++  LLVM_ASM_PARSER(AArch64)
++#else
++#  error Unsupported TARGET_ARCH for LLVM_ASM_PARSER
++#endif
++
++#undef LLVM_ASM_PARSER
+diff --git a/device/include/llvm/Config/AsmPrinters.def b/device/include/llvm/Config/AsmPrinters.def
+new file mode 100644
+index 0000000..3a396c2
+--- /dev/null
++++ b/device/include/llvm/Config/AsmPrinters.def
+@@ -0,0 +1,39 @@
++//===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===//
++//
++//                     The LLVM Compiler Infrastructure
++//
++// This file is distributed under the University of Illinois Open Source
++// License. See LICENSE.TXT for details.
++//
++//===----------------------------------------------------------------------===//
++//
++// This file enumerates all of the assembly-language printers
++// supported by this build of LLVM. Clients of this file should define
++// the LLVM_ASM_PRINTER macro to be a function-like macro with a
++// single parameter (the name of the target whose assembly can be
++// generated); including this file will then enumerate all of the
++// targets with assembly printers.
++//
++// The set of targets supported by LLVM is generated at configuration
++// time, at which point this header is generated. Do not modify this
++// header directly.
++//
++//===----------------------------------------------------------------------===//
++
++#ifndef LLVM_ASM_PRINTER
++#  error Please define the macro LLVM_ASM_PRINTER(TargetName)
++#endif
++
++#if defined(__arm__)
++  LLVM_ASM_PRINTER(ARM)
++#elif defined(__mips__)
++  LLVM_ASM_PRINTER(Mips)
++#elif defined(__i386__) || defined(__x86_64__)
++  LLVM_ASM_PRINTER(X86)
++#elif defined(__aarch64__)
++  LLVM_ASM_PRINTER(AArch64)
++#else
++#  error Unsupported TARGET_ARCH for LLVM_ASM_PRINTER
++#endif
++
++#undef LLVM_ASM_PRINTER
+diff --git a/device/include/llvm/Config/Disassemblers.def b/device/include/llvm/Config/Disassemblers.def
+new file mode 100644
+index 0000000..aba88f8
+--- /dev/null
++++ b/device/include/llvm/Config/Disassemblers.def
+@@ -0,0 +1,39 @@
++//===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===//
++//
++//                     The LLVM Compiler Infrastructure
++//
++// This file is distributed under the University of Illinois Open Source
++// License. See LICENSE.TXT for details.
++//
++//===----------------------------------------------------------------------===//
++//
++// This file enumerates all of the assembly-language parsers
++// supported by this build of LLVM. Clients of this file should define
++// the LLVM_ASM_PARSER macro to be a function-like macro with a
++// single parameter (the name of the target whose assembly can be
++// generated); including this file will then enumerate all of the
++// targets with assembly parsers.
++//
++// The set of targets supported by LLVM is generated at configuration
++// time, at which point this header is generated. Do not modify this
++// header directly.
++//
++//===----------------------------------------------------------------------===//
++
++#ifndef LLVM_DISASSEMBLER
++#  error Please define the macro LLVM_DISASSEMBLER(TargetName)
++#endif
++
++#if defined(__arm__)
++  LLVM_DISASSEMBLER(ARM)
++#elif defined(__mips__)
++  LLVM_DISASSEMBLER(Mips)
++#elif defined(__i386__) || defined(__x86_64__)
++  LLVM_DISASSEMBLER(X86)
++#elif defined(__aarch64__)
++  LLVM_DISASSEMBLER(AArch64)
++#else
++#  error Unsupported TARGET_ARCH for LLVM_DISASSEMBLER
++#endif
++
++#undef LLVM_DISASSEMBLER
+diff --git a/device/include/llvm/Config/Targets.def b/device/include/llvm/Config/Targets.def
+new file mode 100644
+index 0000000..f30c81f
+--- /dev/null
++++ b/device/include/llvm/Config/Targets.def
+@@ -0,0 +1,38 @@
++/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
++|*                                                                            *|
++|*                     The LLVM Compiler Infrastructure                       *|
++|*                                                                            *|
++|* This file is distributed under the University of Illinois Open Source      *|
++|* License. See LICENSE.TXT for details.                                      *|
++|*                                                                            *|
++|*===----------------------------------------------------------------------===*|
++|*                                                                            *|
++|* This file enumerates all of the target architectures supported by          *|
++|* this build of LLVM. Clients of this file should define the                 *|
++|* LLVM_TARGET macro to be a function-like macro with a single                *|
++|* parameter (the name of the target); including this file will then          *|
++|* enumerate all of the targets.                                              *|
++|*                                                                            *|
++|* The set of targets supported by LLVM is generated at configuration         *|
++|* time, at which point this header is generated. Do not modify this          *|
++|* header directly.                                                           *|
++|*                                                                            *|
++\*===----------------------------------------------------------------------===*/
++
++#ifndef LLVM_TARGET
++#  error Please define the macro LLVM_TARGET(TargetName)
++#endif
++
++#if defined(__arm__)
++  LLVM_TARGET(ARM)
++#elif defined(__mips__)
++  LLVM_TARGET(Mips)
++#elif defined(__i386__) || defined(__x86_64__)
++  LLVM_TARGET(X86)
++#elif defined(__aarch64__)
++  LLVM_TARGET(AArch64)
++#else
++#  error Unsupported TARGET_ARCH for LLVM_TARGET
++#endif
++
++#undef LLVM_TARGET
+diff --git a/device/include/llvm/Config/config.h b/device/include/llvm/Config/config.h
+new file mode 100644
+index 0000000..f76132a
+--- /dev/null
++++ b/device/include/llvm/Config/config.h
+@@ -0,0 +1,689 @@
++/* include/llvm/Config/config.h.  Generated from config.h.in by configure.  */
++/* include/llvm/Config/config.h.in.  Generated from autoconf/configure.ac by autoheader.  */
++
++#ifndef CONFIG_H
++#define CONFIG_H
++
++/* Bug report URL. */
++#define BUG_REPORT_URL "http://llvm.org/bugs/"
++
++/* Relative directory for resource files */
++#define CLANG_RESOURCE_DIR ""
++
++/* Directories clang will search for headers */
++#define C_INCLUDE_DIRS ""
++
++/* Default <path> to all compiler invocations for --sysroot=<path>. */
++#define DEFAULT_SYSROOT ""
++
++/* Define if position independent code is enabled */
++#define ENABLE_PIC 1
++
++/* Define if timestamp information (e.g., __DATE___) is allowed */
++#define ENABLE_TIMESTAMPS 1
++
++/* Directory where gcc is installed. */
++#define GCC_INSTALL_PREFIX ""
++
++/* Define to 1 if you have the `argz_append' function. */
++/* #undef HAVE_ARGZ_APPEND */
++
++/* Define to 1 if you have the `argz_create_sep' function. */
++/* #undef HAVE_ARGZ_CREATE_SEP */
++
++/* Define to 1 if you have the <argz.h> header file. */
++/* #undef HAVE_ARGZ_H */
++
++/* Define to 1 if you have the `argz_insert' function. */
++/* #undef HAVE_ARGZ_INSERT */
++
++/* Define to 1 if you have the `argz_next' function. */
++/* #undef HAVE_ARGZ_NEXT */
++
++/* Define to 1 if you have the `argz_stringify' function. */
++/* #undef HAVE_ARGZ_STRINGIFY */
++
++/* Define to 1 if you have the <assert.h> header file. */
++#define HAVE_ASSERT_H 1
++
++/* Define to 1 if you have the `backtrace' function. */
++#if defined(HAVE_BACKTRACE) && HAVE_BACKTRACE == 0
++/* Defined by AndroidConfig.h as 0 */
++#undef HAVE_BACKTRACE
++#endif
++
++/* Define to 1 if you have the `bcopy' function. */
++/* #undef HAVE_BCOPY */
++
++/* Define to 1 if you have the `ceilf' function. */
++#define HAVE_CEILF 1
++
++/* Define if the neat program is available */
++/* #undef HAVE_CIRCO */
++
++/* Define to 1 if you have the `closedir' function. */
++#define HAVE_CLOSEDIR 1
++
++/* Define to 1 if you have the <CrashReporterClient.h> header file. */
++/* #undef HAVE_CRASHREPORTERCLIENT_H */
++
++/* Define if __crashreporter_info__ exists. */
++/* #undef HAVE_CRASHREPORTER_INFO */
++
++/* Define to 1 if you have the <ctype.h> header file. */
++#define HAVE_CTYPE_H 1
++
++/* Define to 1 if you have the <cxxabi.h> header file. */
++#define HAVE_CXXABI_H 0
++
++/* Define to 1 if you have the declaration of `strerror_s', and to 0 if you
++   don't. */
++#define HAVE_DECL_STRERROR_S 0
++
++/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
++   */
++#define HAVE_DIRENT_H 1
++
++/* Define if you have the GNU dld library. */
++/* #undef HAVE_DLD */
++
++/* Define to 1 if you have the <dld.h> header file. */
++/* #undef HAVE_DLD_H */
++
++/* Define to 1 if you have the `dlerror' function. */
++#define HAVE_DLERROR 1
++
++/* Define to 1 if you have the <dlfcn.h> header file. */
++#define HAVE_DLFCN_H 1
++
++/* Define if dlopen() is available on this platform. */
++#define HAVE_DLOPEN 1
++
++/* Define to 1 if you have the <dl.h> header file. */
++/* #undef HAVE_DL_H */
++
++/* Define if the dot program is available */
++/* #undef HAVE_DOT */
++
++/* Define if the dotty program is available */
++/* #undef HAVE_DOTTY */
++
++/* Define if you have the _dyld_func_lookup function. */
++/* #undef HAVE_DYLD */
++
++/* Define to 1 if you have the <errno.h> header file. */
++#define HAVE_ERRNO_H 1
++
++/* Define to 1 if the system has the type `error_t'. */
++#define HAVE_ERROR_T 1
++
++/* Define to 1 if you have the <execinfo.h> header file. */
++#define HAVE_EXECINFO_H 0
++
++/* Define to 1 if you have the <fcntl.h> header file. */
++#define HAVE_FCNTL_H 1
++
++/* Define if the neat program is available */
++/* #undef HAVE_FDP */
++
++/* Define to 1 if you have the <fenv.h> header file. */
++#define HAVE_FENV_H 1
++
++/* Define if libffi is available on this platform. */
++/* #undef HAVE_FFI_CALL */
++
++/* Define to 1 if you have the <ffi/ffi.h> header file. */
++/* #undef HAVE_FFI_FFI_H */
++
++/* Define to 1 if you have the <ffi.h> header file. */
++/* #undef HAVE_FFI_H */
++
++/* Set to 1 if the finite function is found in <ieeefp.h> */
++/* #undef HAVE_FINITE_IN_IEEEFP_H */
++
++/* Define to 1 if you have the `floorf' function. */
++#define HAVE_FLOORF 1
++
++/* Define to 1 if you have the `fmodf' function. */
++#define HAVE_FMODF 1
++
++/* Define to 1 if you have the `futimens' function. */
++#define HAVE_FUTIMENS 1
++
++/* Define to 1 if you have the `getcwd' function. */
++#define HAVE_GETCWD 1
++
++/* Define to 1 if you have the `getpagesize' function. */
++#define HAVE_GETPAGESIZE 1
++
++/* Define to 1 if you have the `getrlimit' function. */
++#define HAVE_GETRLIMIT 1
++
++/* Define to 1 if you have the `getrusage' function. */
++#define HAVE_GETRUSAGE 1
++
++/* Define to 1 if you have the `gettimeofday' function. */
++#define HAVE_GETTIMEOFDAY 1
++
++/* Define if the Graphviz program is available */
++/* #undef HAVE_GRAPHVIZ */
++
++/* Define if the gv program is available */
++/* #undef HAVE_GV */
++
++/* Define to 1 if you have the `index' function. */
++/* #undef HAVE_INDEX */
++
++/* Define to 1 if the system has the type `int64_t'. */
++#define HAVE_INT64_T 1
++
++/* Define to 1 if you have the <inttypes.h> header file. */
++#define HAVE_INTTYPES_H 1
++
++/* Define to 1 if you have the `isatty' function. */
++#define HAVE_ISATTY 1
++
++/* Set to 1 if the isinf function is found in <cmath> */
++#define HAVE_ISINF_IN_CMATH 1
++
++/* Set to 1 if the isinf function is found in <math.h> */
++#define HAVE_ISINF_IN_MATH_H 1
++
++/* Set to 1 if the isnan function is found in <cmath> */
++#define HAVE_ISNAN_IN_CMATH 1
++
++/* Set to 1 if the isnan function is found in <math.h> */
++#define HAVE_ISNAN_IN_MATH_H 1
++
++/* Define if you have the libdl library or equivalent. */
++#define HAVE_LIBDL 1
++
++/* Define to 1 if you have the `imagehlp' library (-limagehlp). */
++/* #undef HAVE_LIBIMAGEHLP */
++
++/* Define to 1 if you have the `m' library (-lm). */
++#define HAVE_LIBM 1
++
++/* Define to 1 if you have the `psapi' library (-lpsapi). */
++/* #undef HAVE_LIBPSAPI */
++
++/* Define to 1 if you have the `pthread' library (-lpthread). */
++#define HAVE_LIBPTHREAD 1
++
++/* Define to 1 if you have the `udis86' library (-ludis86). */
++/* #undef HAVE_LIBUDIS86 */
++
++/* Define to 1 if you have the <limits.h> header file. */
++#define HAVE_LIMITS_H 1
++
++/* Define if you can use -Wl,-export-dynamic. */
++#define HAVE_LINK_EXPORT_DYNAMIC 1
++
++/* Define to 1 if you have the <link.h> header file. */
++#define HAVE_LINK_H 1
++
++/* Define if you can use -Wl,-R. to pass -R. to the linker, in order to add
++   the current directory to the dynamic linker search path. */
++#define HAVE_LINK_R 1
++
++/* Define to 1 if you have the `longjmp' function. */
++#define HAVE_LONGJMP 1
++
++/* Define to 1 if you have the <mach/mach.h> header file. */
++/* #undef HAVE_MACH_MACH_H */
++
++/* Define to 1 if you have the <mach-o/dyld.h> header file. */
++/* #undef HAVE_MACH_O_DYLD_H */
++
++/* Define if mallinfo() is available on this platform. */
++#define HAVE_MALLINFO 1
++
++/* Define to 1 if you have the <malloc.h> header file. */
++//#define HAVE_MALLOC_H 1 /* Defined by AndroidConfig.h */
++
++/* Define to 1 if you have the <malloc/malloc.h> header file. */
++/* #undef HAVE_MALLOC_MALLOC_H */
++
++/* Define to 1 if you have the `malloc_zone_statistics' function. */
++/* #undef HAVE_MALLOC_ZONE_STATISTICS */
++
++/* Define to 1 if you have the `memcpy' function. */
++#define HAVE_MEMCPY 1
++
++/* Define to 1 if you have the `memmove' function. */
++#define HAVE_MEMMOVE 1
++
++/* Define to 1 if you have the <memory.h> header file. */
++#define HAVE_MEMORY_H 1
++
++/* Define to 1 if you have the `mkdtemp' function. */
++#define HAVE_MKDTEMP 0
++
++/* Define to 1 if you have the `mkstemp' function. */
++#define HAVE_MKSTEMP 1
++
++/* Define to 1 if you have the `mktemp' function. */
++#define HAVE_MKTEMP 1
++
++/* Define to 1 if you have a working `mmap' system call. */
++#define HAVE_MMAP 1
++
++/* Define if mmap() uses MAP_ANONYMOUS to map anonymous pages, or undefine if
++   it uses MAP_ANON */
++#define HAVE_MMAP_ANONYMOUS 1
++
++/* Define if mmap() can map files into memory */
++#define HAVE_MMAP_FILE
++
++/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
++/* #undef HAVE_NDIR_H */
++
++/* Define to 1 if you have the `nearbyintf' function. */
++#define HAVE_NEARBYINTF 1
++
++/* Define if the neat program is available */
++/* #undef HAVE_NEATO */
++
++/* Define to 1 if you have the `opendir' function. */
++#define HAVE_OPENDIR 1
++
++/* Define to 1 if you have the `posix_spawn' function. */
++/* #undef HAVE_POSIX_SPAWN */
++
++/* Define to 1 if you have the `powf' function. */
++#define HAVE_POWF 1
++
++/* Define to 1 if you have the `pread' function. */
++#define HAVE_PREAD 1
++
++/* Define if libtool can extract symbol lists from object files. */
++#define HAVE_PRELOADED_SYMBOLS 1
++
++/* Define to have the %a format string */
++#define HAVE_PRINTF_A 1
++
++/* Have pthread_getspecific */
++#define HAVE_PTHREAD_GETSPECIFIC 1
++
++/* Define to 1 if you have the <pthread.h> header file. */
++#define HAVE_PTHREAD_H 1
++
++/* Have pthread_mutex_lock */
++#define HAVE_PTHREAD_MUTEX_LOCK 1
++
++/* Have pthread_rwlock_init */
++#define HAVE_PTHREAD_RWLOCK_INIT 1
++
++/* Define to 1 if srand48/lrand48/drand48 exist in <stdlib.h> */
++#define HAVE_RAND48 1
++
++/* Define to 1 if you have the `readdir' function. */
++#define HAVE_READDIR 1
++
++/* Define to 1 if you have the `realpath' function. */
++#define HAVE_REALPATH 1
++
++/* Define to 1 if you have the `rindex' function. */
++/* #undef HAVE_RINDEX */
++
++/* Define to 1 if you have the `rintf' function. */
++#define HAVE_RINTF 1
++
++/* Define to 1 if you have the `round' function. */
++#define HAVE_ROUND 1
++
++/* Define to 1 if you have the `roundf' function. */
++#define HAVE_ROUNDF 1
++
++/* Define to 1 if you have the `sbrk' function. */
++#define HAVE_SBRK 1
++
++/* Define to 1 if you have the `setenv' function. */
++#define HAVE_SETENV 1
++
++/* Define to 1 if you have the `setjmp' function. */
++#define HAVE_SETJMP 1
++
++/* Define to 1 if you have the <setjmp.h> header file. */
++#define HAVE_SETJMP_H 1
++
++/* Define to 1 if you have the `setrlimit' function. */
++#define HAVE_SETRLIMIT 1
++
++/* Define if you have the shl_load function. */
++/* #undef HAVE_SHL_LOAD */
++
++/* Define to 1 if you have the `siglongjmp' function. */
++#define HAVE_SIGLONGJMP 1
++
++/* Define to 1 if you have the <signal.h> header file. */
++#define HAVE_SIGNAL_H 1
++
++/* Define to 1 if you have the `sigsetjmp' function. */
++/* #undef HAVE_SIGSETJMP */
++
++/* Define to 1 if you have the <stdint.h> header file. */
++#define HAVE_STDINT_H 1
++
++/* Define to 1 if you have the <stdio.h> header file. */
++#define HAVE_STDIO_H 1
++
++/* Define to 1 if you have the <stdlib.h> header file. */
++#define HAVE_STDLIB_H 1
++
++/* Set to 1 if the std::isinf function is found in <cmath> */
++/* #undef HAVE_STD_ISINF_IN_CMATH */
++
++/* Set to 1 if the std::isnan function is found in <cmath> */
++#define HAVE_STD_ISNAN_IN_CMATH 1
++
++/* Define to 1 if you have the `strchr' function. */
++#define HAVE_STRCHR 1
++
++/* Define to 1 if you have the `strcmp' function. */
++#define HAVE_STRCMP 1
++
++/* Define to 1 if you have the `strdup' function. */
++#define HAVE_STRDUP 1
++
++/* Define to 1 if you have the `strerror' function. */
++#define HAVE_STRERROR 1
++
++/* Define to 1 if you have the `strerror_r' function. */
++#ifndef USE_MINGW
++#define HAVE_STRERROR_R 1
++#endif
++
++/* Define to 1 if you have the <strings.h> header file. */
++#define HAVE_STRINGS_H 1
++
++/* Define to 1 if you have the <string.h> header file. */
++#define HAVE_STRING_H 1
++
++/* Define to 1 if you have the `strrchr' function. */
++#define HAVE_STRRCHR 1
++
++/* Define to 1 if you have the `strtof' function. */
++#define HAVE_STRTOF 1
++
++/* Define to 1 if you have the `strtoll' function. */
++#define HAVE_STRTOLL 1
++
++/* Define to 1 if you have the `strtoq' function. */
++#define HAVE_STRTOQ 1
++
++/* Define to 1 if you have the `sysconf' function. */
++#define HAVE_SYSCONF 1
++
++/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
++   */
++/* #undef HAVE_SYS_DIR_H */
++
++/* Define to 1 if you have the <sys/dl.h> header file. */
++/* #undef HAVE_SYS_DL_H */
++
++/* Define to 1 if you have the <sys/ioctl.h> header file. */
++#define HAVE_SYS_IOCTL_H 1
++
++/* Define to 1 if you have the <sys/mman.h> header file. */
++#define HAVE_SYS_MMAN_H 1
++
++/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
++   */
++/* #undef HAVE_SYS_NDIR_H */
++
++/* Define to 1 if you have the <sys/param.h> header file. */
++#define HAVE_SYS_PARAM_H 1
++
++/* Define to 1 if you have the <sys/resource.h> header file. */
++#define HAVE_SYS_RESOURCE_H 1
++
++/* Define to 1 if you have the <sys/stat.h> header file. */
++#define HAVE_SYS_STAT_H 1
++
++/* Define to 1 if you have the <sys/time.h> header file. */
++#define HAVE_SYS_TIME_H 1
++
++/* Define to 1 if you have the <sys/types.h> header file. */
++#define HAVE_SYS_TYPES_H 1
++
++/* Define to 1 if you have the <sys/uio.h> header file. */
++#define HAVE_SYS_UIO_H 1
++
++/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
++#define HAVE_SYS_WAIT_H 1
++
++/* Define to 1 if you have the <termios.h> header file. */
++#define HAVE_TERMIOS_H 1
++
++/* Define if the neat program is available */
++/* #undef HAVE_TWOPI */
++
++/* Define to 1 if the system has the type `uint64_t'. */
++#define HAVE_UINT64_T 1
++
++/* Define to 1 if you have the <unistd.h> header file. */
++#define HAVE_UNISTD_H 1
++
++/* Define to 1 if you have the <utime.h> header file. */
++#define HAVE_UTIME_H 1
++
++/* Define to 1 if the system has the type `u_int64_t'. */
++/* #undef HAVE_U_INT64_T */
++
++/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
++/* #undef HAVE_VALGRIND_VALGRIND_H */
++
++/* Define to 1 if you have the <windows.h> header file. */
++/* #undef HAVE_WINDOWS_H */
++
++/* Define to 1 if you have the `writev' function. */
++#define HAVE_WRITEV 1
++
++/* Define if the xdot.py program is available */
++/* #undef HAVE_XDOT_PY */
++
++/* Have host's _alloca */
++/* #undef HAVE__ALLOCA */
++
++/* Have host's __alloca */
++/* #undef HAVE___ALLOCA */
++
++/* Have host's __ashldi3 */
++/* #undef HAVE___ASHLDI3 */
++
++/* Have host's __ashrdi3 */
++/* #undef HAVE___ASHRDI3 */
++
++/* Have host's __chkstk */
++/* #undef HAVE___CHKSTK */
++
++/* Have host's __cmpdi2 */
++/* #undef HAVE___CMPDI2 */
++
++/* Have host's __divdi3 */
++/* #undef HAVE___DIVDI3 */
++
++/* Define to 1 if you have the `__dso_handle' function. */
++#define HAVE___DSO_HANDLE 1
++
++/* Have host's __fixdfdi */
++/* #undef HAVE___FIXDFDI */
++
++/* Have host's __fixsfdi */
++/* #undef HAVE___FIXSFDI */
++
++/* Have host's __floatdidf */
++/* #undef HAVE___FLOATDIDF */
++
++/* Have host's __lshrdi3 */
++/* #undef HAVE___LSHRDI3 */
++
++/* Have host's __main */
++/* #undef HAVE___MAIN */
++
++/* Have host's __moddi3 */
++/* #undef HAVE___MODDI3 */
++
++/* Have host's __udivdi3 */
++/* #undef HAVE___UDIVDI3 */
++
++/* Have host's __umoddi3 */
++/* #undef HAVE___UMODDI3 */
++
++/* Have host's ___chkstk */
++/* #undef HAVE____CHKSTK */
++
++/* Linker version detected at compile time. */
++#define HOST_LINK_VERSION "2.20.1"
++
++/* Installation directory for binary executables */
++#define LLVM_BINDIR "/opt/llvm-android/bin"
++
++/* Time at which LLVM was configured */
++#define LLVM_CONFIGTIME "Tue May  8 14:22:45 CST 2012"
++
++/* Installation directory for data files */
++#define LLVM_DATADIR "/opt/llvm-android/share/llvm"
++
++/* Target triple LLVM will generate code for by default */
++#define LLVM_DEFAULT_TARGET_TRIPLE "i386-unknown-linux"
++
++/* Installation directory for documentation */
++#define LLVM_DOCSDIR "/opt/llvm-android/share/doc/llvm"
++
++/* Define if threads enabled */
++#define LLVM_ENABLE_THREADS 1
++
++/* Installation directory for config files */
++#define LLVM_ETCDIR "/opt/llvm-android/etc/llvm"
++
++/* Has gcc/MSVC atomic intrinsics */
++#define LLVM_HAS_ATOMICS 1
++
++/* Installation directory for include files */
++#define LLVM_INCLUDEDIR "/opt/llvm-android/include"
++
++/* Installation directory for .info files */
++#define LLVM_INFODIR "/opt/llvm-android/info"
++
++/* Installation directory for libraries */
++#define LLVM_LIBDIR "/opt/llvm-android/lib"
++
++/* Installation directory for man pages */
++#define LLVM_MANDIR "/opt/llvm-android/man"
++
++/* Define to path to circo program if found or 'echo circo' otherwise */
++/* #undef LLVM_PATH_CIRCO */
++
++/* Define to path to dot program if found or 'echo dot' otherwise */
++/* #undef LLVM_PATH_DOT */
++
++/* Define to path to dotty program if found or 'echo dotty' otherwise */
++/* #undef LLVM_PATH_DOTTY */
++
++/* Define to path to fdp program if found or 'echo fdp' otherwise */
++/* #undef LLVM_PATH_FDP */
++
++/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
++/* #undef LLVM_PATH_GRAPHVIZ */
++
++/* Define to path to gv program if found or 'echo gv' otherwise */
++/* #undef LLVM_PATH_GV */
++
++/* Define to path to neato program if found or 'echo neato' otherwise */
++/* #undef LLVM_PATH_NEATO */
++
++/* Define to path to twopi program if found or 'echo twopi' otherwise */
++/* #undef LLVM_PATH_TWOPI */
++
++/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
++/* #undef LLVM_PATH_XDOT_PY */
++
++/* Installation prefix directory */
++#define LLVM_PREFIX "/opt/llvm-android"
++
++/* Define if we have the Intel JIT API runtime support library */
++#define LLVM_USE_INTEL_JITEVENTS 0
++
++/* Define if we have the oprofile JIT-support library */
++#define LLVM_USE_OPROFILE 0
++
++/* Major version of the LLVM API */
++#define LLVM_VERSION_MAJOR 3
++
++/* Minor version of the LLVM API */
++#define LLVM_VERSION_MINOR 4
++
++/* Define if the OS needs help to load dependent libraries for dlopen(). */
++/* #undef LTDL_DLOPEN_DEPLIBS */
++
++/* Define to the sub-directory in which libtool stores uninstalled libraries.
++   */
++#define LTDL_OBJDIR ".libs/"
++
++/* Define to the name of the environment variable that determines the dynamic
++   library search path. */
++#define LTDL_SHLIBPATH_VAR "LD_LIBRARY_PATH"
++
++/* Define to the extension used for shared libraries, say, ".so". */
++#define LTDL_SHLIB_EXT ".so"
++
++/* Define to the system default library search path. */
++#define LTDL_SYSSEARCHPATH "/lib:/usr/lib:/usr/local/lib:/lib:/usr/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib32:/usr/lib32:/usr/local/lib32:/usr/x86_64-pc-linux-gnu/lib:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/32:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32"
++
++/* Define if /dev/zero should be used when mapping RWX memory, or undefine if
++   its not necessary */
++/* #undef NEED_DEV_ZERO_FOR_MMAP */
++
++/* Define if dlsym() requires a leading underscore in symbol names. */
++/* #undef NEED_USCORE */
++
++/* Define to the address where bug reports for this package should be sent. */
++#define PACKAGE_BUGREPORT "http://llvm.org/bugs/"
++
++/* Define to the full name of this package. */
++#define PACKAGE_NAME "LLVM"
++
++/* Define to the full name and version of this package. */
++#define PACKAGE_STRING "LLVM 3.4"
++
++/* Define to the one symbol short name of this package. */
++#define PACKAGE_TARNAME "llvm"
++
++/* Define to the version of this package. */
++#define PACKAGE_VERSION "3.4"
++
++/* Define as the return type of signal handlers (`int' or `void'). */
++#define RETSIGTYPE void
++
++/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
++/* #undef STAT_MACROS_BROKEN */
++
++/* Define to 1 if you have the ANSI C header files. */
++#define STDC_HEADERS 1
++
++/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
++#define TIME_WITH_SYS_TIME 1
++
++/* Define to 1 if your <sys/time.h> declares `struct tm'. */
++/* #undef TM_IN_SYS_TIME */
++
++/* Define if use udis86 library */
++#define USE_UDIS86 0
++
++/* Define to empty if `const' does not conform to ANSI C. */
++/* #undef const */
++
++/* Define to a type to use for `error_t' if it is not otherwise available. */
++/* #undef error_t */
++
++/* Define to `int' if <sys/types.h> does not define. */
++/* #undef pid_t */
++
++/* Define to `unsigned int' if <sys/types.h> does not define. */
++/* #undef size_t */
++
++#include "llvm/Config/llvm-platform-config.h"
++
++#endif
+diff --git a/device/include/llvm/Config/llvm-config.h b/device/include/llvm/Config/llvm-config.h
+new file mode 100644
+index 0000000..637daed
+--- /dev/null
++++ b/device/include/llvm/Config/llvm-config.h
+@@ -0,0 +1,94 @@
++/* include/llvm/Config/llvm-config.h.  Generated from llvm-config.h.in by configure.  */
++/*===-- llvm/config/llvm-config.h - llvm configure variable -------*- C -*-===*/
++/*                                                                            */
++/*                     The LLVM Compiler Infrastructure                       */
++/*                                                                            */
++/* This file is distributed under the University of Illinois Open Source      */
++/* License. See LICENSE.TXT for details.                                      */
++/*                                                                            */
++/*===----------------------------------------------------------------------===*/
++
++/* This file enumerates all of the llvm variables from configure so that
++   they can be in exported headers and won't override package specific
++   directives.  This is a C file so we can include it in the llvm-c headers.  */
++
++/* To avoid multiple inclusions of these variables when we include the exported
++   headers and config.h, conditionally include these.  */
++/* TODO: This is a bit of a hack.  */
++#ifndef CONFIG_H
++
++/* Installation directory for binary executables */
++#define LLVM_BINDIR "/opt/llvm-android/bin"
++
++/* Time at which LLVM was configured */
++#define LLVM_CONFIGTIME "Tue May  8 14:22:45 CST 2012"
++
++/* Installation directory for data files */
++#define LLVM_DATADIR "/opt/llvm-android/share/llvm"
++
++/* Target triple LLVM will generate code for by default */
++#define LLVM_DEFAULT_TARGET_TRIPLE "i386-unknown-linux"
++
++/* Installation directory for documentation */
++#define LLVM_DOCSDIR "/opt/llvm-android/share/doc/llvm"
++
++/* Define if threads enabled */
++#define LLVM_ENABLE_THREADS 1
++
++/* Installation directory for config files */
++#define LLVM_ETCDIR "/opt/llvm-android/etc/llvm"
++
++/* Has gcc/MSVC atomic intrinsics */
++#define LLVM_HAS_ATOMICS 1
++
++/* Installation directory for include files */
++#define LLVM_INCLUDEDIR "/opt/llvm-android/include"
++
++/* Installation directory for .info files */
++#define LLVM_INFODIR "/opt/llvm-android/info"
++
++/* Installation directory for libraries */
++#define LLVM_LIBDIR "/opt/llvm-android/lib"
++
++/* Installation directory for man pages */
++#define LLVM_MANDIR "/opt/llvm-android/man"
++
++/* Define to path to circo program if found or 'echo circo' otherwise */
++/* #undef LLVM_PATH_CIRCO */
++
++/* Define to path to dot program if found or 'echo dot' otherwise */
++/* #undef LLVM_PATH_DOT */
++
++/* Define to path to dotty program if found or 'echo dotty' otherwise */
++/* #undef LLVM_PATH_DOTTY */
++
++/* Define to path to fdp program if found or 'echo fdp' otherwise */
++/* #undef LLVM_PATH_FDP */
++
++/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
++/* #undef LLVM_PATH_GRAPHVIZ */
++
++/* Define to path to gv program if found or 'echo gv' otherwise */
++/* #undef LLVM_PATH_GV */
++
++/* Define to path to neato program if found or 'echo neato' otherwise */
++/* #undef LLVM_PATH_NEATO */
++
++/* Define to path to twopi program if found or 'echo twopi' otherwise */
++/* #undef LLVM_PATH_TWOPI */
++
++/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
++/* #undef LLVM_PATH_XDOT_PY */
++
++/* Installation prefix directory */
++#define LLVM_PREFIX "/opt/llvm-android"
++
++/* Major version of the LLVM API */
++#define LLVM_VERSION_MAJOR 3
++
++/* Minor version of the LLVM API */
++#define LLVM_VERSION_MINOR 4
++
++#include "llvm/Config/llvm-platform-config.h"
++
++#endif
+diff --git a/host/include/llvm/Config/AsmParsers.def b/host/include/llvm/Config/AsmParsers.def
+new file mode 100644
+index 0000000..8fd67da
+--- /dev/null
++++ b/host/include/llvm/Config/AsmParsers.def
+@@ -0,0 +1,32 @@
++//===- llvm/Config/AsmParsers.def - LLVM Assembly Parsers -------*- C++ -*-===//
++//
++//                     The LLVM Compiler Infrastructure
++//
++// This file is distributed under the University of Illinois Open Source
++// License. See LICENSE.TXT for details.
++//
++//===----------------------------------------------------------------------===//
++//
++// This file enumerates all of the assembly-language parsers
++// supported by this build of LLVM. Clients of this file should define
++// the LLVM_ASM_PARSER macro to be a function-like macro with a
++// single parameter (the name of the target whose assembly can be
++// generated); including this file will then enumerate all of the
++// targets with assembly parsers.
++//
++// The set of targets supported by LLVM is generated at configuration
++// time, at which point this header is generated. Do not modify this
++// header directly.
++//
++//===----------------------------------------------------------------------===//
++
++#ifndef LLVM_ASM_PARSER
++#  error Please define the macro LLVM_ASM_PARSER(TargetName)
++#endif
++
++LLVM_ASM_PARSER(ARM)
++LLVM_ASM_PARSER(Mips)
++LLVM_ASM_PARSER(X86)
++LLVM_ASM_PARSER(AArch64)
++
++#undef LLVM_ASM_PARSER
+diff --git a/host/include/llvm/Config/AsmPrinters.def b/host/include/llvm/Config/AsmPrinters.def
+new file mode 100644
+index 0000000..07f6adf
+--- /dev/null
++++ b/host/include/llvm/Config/AsmPrinters.def
+@@ -0,0 +1,32 @@
++//===- llvm/Config/AsmPrinters.def - LLVM Assembly Printers -----*- C++ -*-===//
++//
++//                     The LLVM Compiler Infrastructure
++//
++// This file is distributed under the University of Illinois Open Source
++// License. See LICENSE.TXT for details.
++//
++//===----------------------------------------------------------------------===//
++//
++// This file enumerates all of the assembly-language printers
++// supported by this build of LLVM. Clients of this file should define
++// the LLVM_ASM_PRINTER macro to be a function-like macro with a
++// single parameter (the name of the target whose assembly can be
++// generated); including this file will then enumerate all of the
++// targets with assembly printers.
++//
++// The set of targets supported by LLVM is generated at configuration
++// time, at which point this header is generated. Do not modify this
++// header directly.
++//
++//===----------------------------------------------------------------------===//
++
++#ifndef LLVM_ASM_PRINTER
++#  error Please define the macro LLVM_ASM_PRINTER(TargetName)
++#endif
++
++LLVM_ASM_PRINTER(ARM)
++LLVM_ASM_PRINTER(Mips)
++LLVM_ASM_PRINTER(X86)
++LLVM_ASM_PRINTER(AArch64)
++
++#undef LLVM_ASM_PRINTER
+diff --git a/host/include/llvm/Config/Disassemblers.def b/host/include/llvm/Config/Disassemblers.def
+new file mode 100644
+index 0000000..18557af
+--- /dev/null
++++ b/host/include/llvm/Config/Disassemblers.def
+@@ -0,0 +1,32 @@
++//===- llvm/Config/Disassemblers.def - LLVM Assembly Parsers ----*- C++ -*-===//
++//
++//                     The LLVM Compiler Infrastructure
++//
++// This file is distributed under the University of Illinois Open Source
++// License. See LICENSE.TXT for details.
++//
++//===----------------------------------------------------------------------===//
++//
++// This file enumerates all of the assembly-language parsers
++// supported by this build of LLVM. Clients of this file should define
++// the LLVM_ASM_PARSER macro to be a function-like macro with a
++// single parameter (the name of the target whose assembly can be
++// generated); including this file will then enumerate all of the
++// targets with assembly parsers.
++//
++// The set of targets supported by LLVM is generated at configuration
++// time, at which point this header is generated. Do not modify this
++// header directly.
++//
++//===----------------------------------------------------------------------===//
++
++#ifndef LLVM_DISASSEMBLER
++#  error Please define the macro LLVM_DISASSEMBLER(TargetName)
++#endif
++
++LLVM_DISASSEMBLER(ARM)
++LLVM_DISASSEMBLER(Mips)
++LLVM_DISASSEMBLER(X86)
++LLVM_DISASSEMBLER(AArch64)
++
++#undef LLVM_DISASSEMBLER
+diff --git a/host/include/llvm/Config/Targets.def b/host/include/llvm/Config/Targets.def
+new file mode 100644
+index 0000000..2985cf3
+--- /dev/null
++++ b/host/include/llvm/Config/Targets.def
+@@ -0,0 +1,31 @@
++/*===- llvm/Config/Targets.def - LLVM Target Architectures ------*- C++ -*-===*\
++|*                                                                            *|
++|*                     The LLVM Compiler Infrastructure                       *|
++|*                                                                            *|
++|* This file is distributed under the University of Illinois Open Source      *|
++|* License. See LICENSE.TXT for details.                                      *|
++|*                                                                            *|
++|*===----------------------------------------------------------------------===*|
++|*                                                                            *|
++|* This file enumerates all of the target architectures supported by          *|
++|* this build of LLVM. Clients of this file should define the                 *|
++|* LLVM_TARGET macro to be a function-like macro with a single                *|
++|* parameter (the name of the target); including this file will then          *|
++|* enumerate all of the targets.                                              *|
++|*                                                                            *|
++|* The set of targets supported by LLVM is generated at configuration         *|
++|* time, at which point this header is generated. Do not modify this          *|
++|* header directly.                                                           *|
++|*                                                                            *|
++\*===----------------------------------------------------------------------===*/
++
++#ifndef LLVM_TARGET
++#  error Please define the macro LLVM_TARGET(TargetName)
++#endif
++
++LLVM_TARGET(ARM)
++LLVM_TARGET(Mips)
++LLVM_TARGET(X86)
++LLVM_TARGET(AArch64)
++
++#undef LLVM_TARGET
+diff --git a/host/include/llvm/Config/config.h b/host/include/llvm/Config/config.h
+new file mode 100644
+index 0000000..8e65910
+--- /dev/null
++++ b/host/include/llvm/Config/config.h
+@@ -0,0 +1,725 @@
++/* include/llvm/Config/config.h.  Generated from config.h.in by configure.  */
++/* include/llvm/Config/config.h.in.  Generated from autoconf/configure.ac by autoheader.  */
++
++#ifndef CONFIG_H
++#define CONFIG_H
++
++/* Bug report URL. */
++#define BUG_REPORT_URL "http://llvm.org/bugs/"
++
++/* Relative directory for resource files */
++#define CLANG_RESOURCE_DIR ""
++
++/* Directories clang will search for headers */
++#define C_INCLUDE_DIRS ""
++
++/* Default <path> to all compiler invocations for --sysroot=<path>. */
++#define DEFAULT_SYSROOT ""
++
++/* Define if position independent code is enabled */
++#define ENABLE_PIC 1
++
++/* Define if timestamp information (e.g., __DATE___) is allowed */
++#define ENABLE_TIMESTAMPS 1
++
++/* Directory where gcc is installed. */
++#define GCC_INSTALL_PREFIX ""
++
++/* Define to 1 if you have the `argz_append' function. */
++/* #undef HAVE_ARGZ_APPEND */
++
++/* Define to 1 if you have the `argz_create_sep' function. */
++/* #undef HAVE_ARGZ_CREATE_SEP */
++
++/* Define to 1 if you have the <argz.h> header file. */
++/* #undef HAVE_ARGZ_H */
++
++/* Define to 1 if you have the `argz_insert' function. */
++/* #undef HAVE_ARGZ_INSERT */
++
++/* Define to 1 if you have the `argz_next' function. */
++/* #undef HAVE_ARGZ_NEXT */
++
++/* Define to 1 if you have the `argz_stringify' function. */
++/* #undef HAVE_ARGZ_STRINGIFY */
++
++/* Define to 1 if you have the <assert.h> header file. */
++#define HAVE_ASSERT_H 1
++
++/* Define to 1 if you have the `backtrace' function. */
++/* #define HAVE_BACKTRACE 1 */ /* Defined by AndroidConfig.h */
++
++/* Define to 1 if you have the `bcopy' function. */
++/* #undef HAVE_BCOPY */
++
++/* Define to 1 if you have the `ceilf' function. */
++#define HAVE_CEILF 1
++
++/* Define if the neat program is available */
++/* #undef HAVE_CIRCO */
++
++/* Define to 1 if you have the `closedir' function. */
++#define HAVE_CLOSEDIR 1
++
++/* Define to 1 if you have the <CrashReporterClient.h> header file. */
++/* #undef HAVE_CRASHREPORTERCLIENT_H */
++
++/* Define if __crashreporter_info__ exists. */
++#define HAVE_CRASHREPORTER_INFO 0
++
++/* Define to 1 if you have the <ctype.h> header file. */
++#define HAVE_CTYPE_H 1
++
++/* Define to 1 if you have the <cxxabi.h> header file. */
++#define HAVE_CXXABI_H 0
++
++/* Define to 1 if you have the declaration of `strerror_s', and to 0 if you
++   don't. */
++#define HAVE_DECL_STRERROR_S 0
++
++/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
++   */
++#define HAVE_DIRENT_H 1
++
++/* Define if you have the GNU dld library. */
++/* #undef HAVE_DLD */
++
++/* Define to 1 if you have the <dld.h> header file. */
++/* #undef HAVE_DLD_H */
++
++/* Define to 1 if you have the `dlerror' function. */
++#define HAVE_DLERROR 1
++
++/* Define to 1 if you have the <dlfcn.h> header file. */
++#define HAVE_DLFCN_H 1
++
++/* Define if dlopen() is available on this platform. */
++#define HAVE_DLOPEN 1
++
++/* Define to 1 if you have the <dl.h> header file. */
++/* #undef HAVE_DL_H */
++
++/* Define if the dot program is available */
++/* #undef HAVE_DOT */
++
++/* Define if the dotty program is available */
++/* #undef HAVE_DOTTY */
++
++/* Define if you have the _dyld_func_lookup function. */
++/* #undef HAVE_DYLD */
++
++/* Define to 1 if you have the <errno.h> header file. */
++#define HAVE_ERRNO_H 1
++
++/* Define to 1 if the system has the type `error_t'. */
++#define HAVE_ERROR_T 1
++
++/* Define to 1 if you have the <execinfo.h> header file. */
++#define HAVE_EXECINFO_H 1
++
++/* Define to 1 if you have the <fcntl.h> header file. */
++#define HAVE_FCNTL_H 1
++
++/* Define if the neat program is available */
++/* #undef HAVE_FDP */
++
++/* Define to 1 if you have the <fenv.h> header file. */
++#define HAVE_FENV_H 1
++
++/* Define if libffi is available on this platform. */
++/* #undef HAVE_FFI_CALL */
++
++/* Define to 1 if you have the <ffi/ffi.h> header file. */
++/* #undef HAVE_FFI_FFI_H */
++
++/* Define to 1 if you have the <ffi.h> header file. */
++/* #undef HAVE_FFI_H */
++
++/* Set to 1 if the finite function is found in <ieeefp.h> */
++/* #undef HAVE_FINITE_IN_IEEEFP_H */
++
++/* Define to 1 if you have the `floorf' function. */
++#define HAVE_FLOORF 1
++
++/* Define to 1 if you have the `fmodf' function. */
++#define HAVE_FMODF 1
++
++#ifdef __APPLE__
++/* Define to 1 if you have the `futimes' function. */
++#define HAVE_FUTIMES 1
++#else
++/* Define to 1 if you have the `futimens' function. */
++#define HAVE_FUTIMENS 1
++#endif  // __APPLE__
++
++/* Define to 1 if you have the `getcwd' function. */
++#define HAVE_GETCWD 1
++
++/* Define to 1 if you have the `getpagesize' function. */
++#define HAVE_GETPAGESIZE 1
++
++/* Define to 1 if you have the `getrlimit' function. */
++#define HAVE_GETRLIMIT 1
++
++/* Define to 1 if you have the `getrusage' function. */
++#define HAVE_GETRUSAGE 1
++
++/* Define to 1 if you have the `gettimeofday' function. */
++#define HAVE_GETTIMEOFDAY 1
++
++/* Define if the Graphviz program is available */
++/* #undef HAVE_GRAPHVIZ */
++
++/* Define if the gv program is available */
++/* #undef HAVE_GV */
++
++/* Define to 1 if you have the `index' function. */
++/* #undef HAVE_INDEX */
++
++/* Define to 1 if the system has the type `int64_t'. */
++#define HAVE_INT64_T 1
++
++/* Define to 1 if you have the <inttypes.h> header file. */
++#define HAVE_INTTYPES_H 1
++
++/* Define to 1 if you have the `isatty' function. */
++#define HAVE_ISATTY 1
++
++/* Set to 1 if the isinf function is found in <cmath> */
++#define HAVE_ISINF_IN_CMATH 1
++
++/* Set to 1 if the isinf function is found in <math.h> */
++#define HAVE_ISINF_IN_MATH_H 1
++
++/* Set to 1 if the isnan function is found in <cmath> */
++#define HAVE_ISNAN_IN_CMATH 1
++
++/* Set to 1 if the isnan function is found in <math.h> */
++#define HAVE_ISNAN_IN_MATH_H 1
++
++/* Define if you have the libdl library or equivalent. */
++#define HAVE_LIBDL 1
++
++/* Define to 1 if you have the `imagehlp' library (-limagehlp). */
++/* #undef HAVE_LIBIMAGEHLP */
++
++/* Define to 1 if you have the `m' library (-lm). */
++#define HAVE_LIBM 1
++
++/* Define to 1 if you have the `psapi' library (-lpsapi). */
++/* #undef HAVE_LIBPSAPI */
++
++/* Define to 1 if you have the `pthread' library (-lpthread). */
++#define HAVE_LIBPTHREAD 1
++
++/* Define to 1 if you have the `shell32' library (-lshell32). */
++#define HAVE_LIBSHELL32 1
++
++/* Define to 1 if you have the `udis86' library (-ludis86). */
++/* #undef HAVE_LIBUDIS86 */
++
++/* Define to 1 if you have the <limits.h> header file. */
++#define HAVE_LIMITS_H 1
++
++/* Define if you can use -Wl,-export-dynamic. */
++#define HAVE_LINK_EXPORT_DYNAMIC 1
++
++/* Define to 1 if you have the <link.h> header file. */
++#define HAVE_LINK_H 1
++
++/* Define if you can use -Wl,-R. to pass -R. to the linker, in order to add
++   the current directory to the dynamic linker search path. */
++#define HAVE_LINK_R 1
++
++/* Define to 1 if you have the `longjmp' function. */
++#define HAVE_LONGJMP 1
++
++/* Define to 1 if you have the <mach/mach.h> header file. */
++/* #undef HAVE_MACH_MACH_H */
++
++/* Define to 1 if you have the <mach-o/dyld.h> header file. */
++/* #undef HAVE_MACH_O_DYLD_H */
++
++/* Define if mallinfo() is available on this platform. */
++#if !defined(__APPLE__)
++#define HAVE_MALLINFO 1
++#else
++/* #undef HAVE_MALLINFO */
++#endif
++
++/* Define to 1 if you have the <malloc.h> header file. */
++/* #define HAVE_MALLOC_H 1 */ /* Defined by AndroidConfig.h */
++
++/* Define to 1 if you have the <malloc/malloc.h> header file. */
++/* #undef HAVE_MALLOC_MALLOC_H */
++
++/* Define to 1 if you have the `malloc_zone_statistics' function. */
++/* #undef HAVE_MALLOC_ZONE_STATISTICS */
++
++/* Define to 1 if you have the `memcpy' function. */
++#define HAVE_MEMCPY 1
++
++/* Define to 1 if you have the `memmove' function. */
++#define HAVE_MEMMOVE 1
++
++/* Define to 1 if you have the <memory.h> header file. */
++#define HAVE_MEMORY_H 1
++
++/* Define to 1 if you have the `mkdtemp' function. */
++#define HAVE_MKDTEMP 1
++
++/* Define to 1 if you have the `mkstemp' function. */
++#define HAVE_MKSTEMP 1
++
++/* Define to 1 if you have the `mktemp' function. */
++#define HAVE_MKTEMP 1
++
++/* Define to 1 if you have a working `mmap' system call. */
++#define HAVE_MMAP 1
++
++/* Define if mmap() uses MAP_ANONYMOUS to map anonymous pages, or undefine if
++   it uses MAP_ANON */
++#if !defined(__APPLE__)
++#define HAVE_MMAP_ANONYMOUS
++#else
++/* #undef HAVE_MMAP_ANONYMOUS */
++#endif
++
++/* Define if mmap() can map files into memory */
++#define HAVE_MMAP_FILE
++
++/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
++/* #undef HAVE_NDIR_H */
++
++/* Define to 1 if you have the `nearbyintf' function. */
++#define HAVE_NEARBYINTF 1
++
++/* Define if the neat program is available */
++/* #undef HAVE_NEATO */
++
++/* Define to 1 if you have the `opendir' function. */
++#define HAVE_OPENDIR 1
++
++/* Define to 1 if you have the `posix_spawn' function. */
++#define HAVE_POSIX_SPAWN 1
++
++/* Define to 1 if you have the `powf' function. */
++#define HAVE_POWF 1
++
++/* Define to 1 if you have the `pread' function. */
++#if !defined(_WIN32) && !defined(_WIN64)
++#define HAVE_PREAD 1
++#endif
++
++/* Define if libtool can extract symbol lists from object files. */
++#define HAVE_PRELOADED_SYMBOLS 1
++
++/* Define to have the %a format string */
++#define HAVE_PRINTF_A 1
++
++#if !defined(_WIN32) && !defined(_WIN64)
++
++/* Have pthread_getspecific */
++#define HAVE_PTHREAD_GETSPECIFIC 1
++
++/* Define to 1 if you have the <pthread.h> header file. */
++#define HAVE_PTHREAD_H 1
++
++/* Have pthread_mutex_lock */
++#define HAVE_PTHREAD_MUTEX_LOCK 1
++
++/* Have pthread_rwlock_init */
++#define HAVE_PTHREAD_RWLOCK_INIT 1
++
++#endif /* !defined(_WIN32) && !defined(_WIN64) */
++
++/* Define to 1 if srand48/lrand48/drand48 exist in <stdlib.h> */
++#define HAVE_RAND48 1
++
++/* Define to 1 if you have the `readdir' function. */
++#define HAVE_READDIR 1
++
++/* Define to 1 if you have the `realpath' function. */
++#define HAVE_REALPATH 1
++
++/* Define to 1 if you have the `rindex' function. */
++/* #undef HAVE_RINDEX */
++
++/* Define to 1 if you have the `rintf' function. */
++#define HAVE_RINTF 1
++
++/* Define to 1 if you have the `round' function. */
++#define HAVE_ROUND 1
++
++/* Define to 1 if you have the `roundf' function. */
++#define HAVE_ROUNDF 1
++
++/* Define to 1 if you have the `sbrk' function. */
++#define HAVE_SBRK 1
++
++/* Define to 1 if you have the `setenv' function. */
++#define HAVE_SETENV 1
++
++/* Define to 1 if you have the `setjmp' function. */
++#define HAVE_SETJMP 1
++
++/* Define to 1 if you have the <setjmp.h> header file. */
++#define HAVE_SETJMP_H 1
++
++/* Define to 1 if you have the `setrlimit' function. */
++#define HAVE_SETRLIMIT 1
++
++/* Define if you have the shl_load function. */
++/* #undef HAVE_SHL_LOAD */
++
++/* Define to 1 if you have the `siglongjmp' function. */
++#define HAVE_SIGLONGJMP 1
++
++/* Define to 1 if you have the <signal.h> header file. */
++#define HAVE_SIGNAL_H 1
++
++/* Define to 1 if you have the `sigsetjmp' function. */
++/* #undef HAVE_SIGSETJMP */
++
++/* Define to 1 if you have the <stdint.h> header file. */
++#define HAVE_STDINT_H 1
++
++/* Define to 1 if you have the <stdio.h> header file. */
++#define HAVE_STDIO_H 1
++
++/* Define to 1 if you have the <stdlib.h> header file. */
++#define HAVE_STDLIB_H 1
++
++/* Set to 1 if the std::isinf function is found in <cmath> */
++#define HAVE_STD_ISINF_IN_CMATH 1
++
++/* Set to 1 if the std::isnan function is found in <cmath> */
++#define HAVE_STD_ISNAN_IN_CMATH 1
++
++/* Define to 1 if you have the `strchr' function. */
++#define HAVE_STRCHR 1
++
++/* Define to 1 if you have the `strcmp' function. */
++#define HAVE_STRCMP 1
++
++/* Define to 1 if you have the `strdup' function. */
++#define HAVE_STRDUP 1
++
++/* Define to 1 if you have the `strerror' function. */
++#define HAVE_STRERROR 1
++
++/* Define to 1 if you have the `strerror_r' function. */
++#ifndef USE_MINGW
++#define HAVE_STRERROR_R 1
++#endif
++
++/* Define to 1 if you have the <strings.h> header file. */
++#define HAVE_STRINGS_H 1
++
++/* Define to 1 if you have the <string.h> header file. */
++#define HAVE_STRING_H 1
++
++/* Define to 1 if you have the `strrchr' function. */
++#define HAVE_STRRCHR 1
++
++/* Define to 1 if you have the `strtof' function. */
++#define HAVE_STRTOF 1
++
++/* Define to 1 if you have the `strtoll' function. */
++#define HAVE_STRTOLL 1
++
++/* Define to 1 if you have the `strtoq' function. */
++#define HAVE_STRTOQ 1
++
++/* Define to 1 if you have the `sysconf' function. */
++#define HAVE_SYSCONF 1
++
++/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
++   */
++/* #undef HAVE_SYS_DIR_H */
++
++/* Define to 1 if you have the <sys/dl.h> header file. */
++/* #undef HAVE_SYS_DL_H */
++
++/* Define to 1 if you have the <sys/ioctl.h> header file. */
++#define HAVE_SYS_IOCTL_H 1
++
++/* Define to 1 if you have the <sys/mman.h> header file. */
++#define HAVE_SYS_MMAN_H 1
++
++/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
++   */
++/* #undef HAVE_SYS_NDIR_H */
++
++/* Define to 1 if you have the <sys/param.h> header file. */
++#define HAVE_SYS_PARAM_H 1
++
++/* Define to 1 if you have the <sys/resource.h> header file. */
++#define HAVE_SYS_RESOURCE_H 1
++
++/* Define to 1 if you have the <sys/stat.h> header file. */
++#define HAVE_SYS_STAT_H 1
++
++/* Define to 1 if you have the <sys/time.h> header file. */
++#define HAVE_SYS_TIME_H 1
++
++/* Define to 1 if you have the <sys/types.h> header file. */
++#define HAVE_SYS_TYPES_H 1
++
++/* Define to 1 if you have the <sys/uio.h> header file. */
++/* #define HAVE_SYS_UIO_H 1 */
++
++/* Define to 1 if you have <sys/wait.h> that is POSIX.1 compatible. */
++#define HAVE_SYS_WAIT_H 1
++
++/* Define to 1 if you have the <termios.h> header file. */
++#define HAVE_TERMIOS_H 1
++
++/* Define if the neat program is available */
++/* #undef HAVE_TWOPI */
++
++/* Define to 1 if the system has the type `uint64_t'. */
++#define HAVE_UINT64_T 1
++
++/* Define to 1 if you have the <unistd.h> header file. */
++#define HAVE_UNISTD_H 1
++
++/* Define to 1 if you have the <utime.h> header file. */
++#define HAVE_UTIME_H 1
++
++/* Define to 1 if the system has the type `u_int64_t'. */
++/* #undef HAVE_U_INT64_T */
++
++/* Define to 1 if you have the <valgrind/valgrind.h> header file. */
++/* #undef HAVE_VALGRIND_VALGRIND_H */
++
++#if defined(_WIN32) || defined(_WIN64)
++/* Define to 1 if you have the <windows.h> header file. */
++#define HAVE_WINDOWS_H 1
++
++/* Define to 1 if you have the `writev' function. */
++/* #undef HAVE_WRITEV */
++
++#else
++/* Define to 1 if you have the <windows.h> header file. */
++/* #undef HAVE_WINDOWS_H */
++
++/* Define to 1 if you have the `writev' function. */
++#define HAVE_WRITEV 1
++#endif
++
++/* Define if the xdot.py program is available */
++/* #undef HAVE_XDOT_PY */
++
++/* Have host's _alloca */
++/* #undef HAVE__ALLOCA */
++
++/* Have host's __alloca */
++/* #undef HAVE___ALLOCA */
++
++/* Have host's __ashldi3 */
++/* #undef HAVE___ASHLDI3 */
++
++/* Have host's __ashrdi3 */
++/* #undef HAVE___ASHRDI3 */
++
++/* Have host's __chkstk */
++/* #undef HAVE___CHKSTK */
++
++/* Have host's __cmpdi2 */
++/* #undef HAVE___CMPDI2 */
++
++/* Have host's __divdi3 */
++/* #undef HAVE___DIVDI3 */
++
++/* Define to 1 if you have the `__dso_handle' function. */
++/* #undef HAVE___DSO_HANDLE */
++
++/* Have host's __fixdfdi */
++/* #undef HAVE___FIXDFDI */
++
++/* Have host's __fixsfdi */
++/* #undef HAVE___FIXSFDI */
++
++/* Have host's __floatdidf */
++/* #undef HAVE___FLOATDIDF */
++
++/* Have host's __lshrdi3 */
++/* #undef HAVE___LSHRDI3 */
++
++/* Have host's __main */
++/* #undef HAVE___MAIN */
++
++/* Have host's __moddi3 */
++/* #undef HAVE___MODDI3 */
++
++/* Have host's __udivdi3 */
++/* #undef HAVE___UDIVDI3 */
++
++/* Have host's __umoddi3 */
++/* #undef HAVE___UMODDI3 */
++
++/* Have host's ___chkstk */
++/* #undef HAVE____CHKSTK */
++
++/* Linker version detected at compile time. */
++#define HOST_LINK_VERSION "2.20.1"
++
++/* Installation directory for binary executables */
++#define LLVM_BINDIR "/opt/llvm-android/bin"
++
++/* Time at which LLVM was configured */
++#define LLVM_CONFIGTIME "Tue May  8 14:22:45 CST 2012"
++
++/* Installation directory for data files */
++#define LLVM_DATADIR "/opt/llvm-android/share/llvm"
++
++/* Target triple LLVM will generate code for by default */
++#define LLVM_DEFAULT_TARGET_TRIPLE "i386-unknown-linux"
++
++/* Installation directory for documentation */
++#define LLVM_DOCSDIR "/opt/llvm-android/share/doc/llvm"
++
++/* Define if threads enabled */
++#define LLVM_ENABLE_THREADS 1
++
++/* Installation directory for config files */
++#define LLVM_ETCDIR "/opt/llvm-android/etc/llvm"
++
++#if !defined(_WIN32) && !defined(_WIN64)
++
++/* Has gcc/MSVC atomic intrinsics */
++#define LLVM_HAS_ATOMICS 1
++
++#else
++
++#define LLVM_HAS_ATOMICS 0
++
++#endif /* !defined(_WIN32) && !defined(_WIN64) */
++
++/* Installation directory for include files */
++#define LLVM_INCLUDEDIR "/opt/llvm-android/include"
++
++/* Installation directory for .info files */
++#define LLVM_INFODIR "/opt/llvm-android/info"
++
++/* Installation directory for libraries */
++#define LLVM_LIBDIR "/opt/llvm-android/lib"
++
++/* Installation directory for man pages */
++#define LLVM_MANDIR "/opt/llvm-android/man"
++
++/* Define to path to circo program if found or 'echo circo' otherwise */
++/* #undef LLVM_PATH_CIRCO */
++
++/* Define to path to dot program if found or 'echo dot' otherwise */
++/* #undef LLVM_PATH_DOT */
++
++/* Define to path to dotty program if found or 'echo dotty' otherwise */
++/* #undef LLVM_PATH_DOTTY */
++
++/* Define to path to fdp program if found or 'echo fdp' otherwise */
++/* #undef LLVM_PATH_FDP */
++
++/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
++/* #undef LLVM_PATH_GRAPHVIZ */
++
++/* Define to path to gv program if found or 'echo gv' otherwise */
++/* #undef LLVM_PATH_GV */
++
++/* Define to path to neato program if found or 'echo neato' otherwise */
++/* #undef LLVM_PATH_NEATO */
++
++/* Define to path to twopi program if found or 'echo twopi' otherwise */
++/* #undef LLVM_PATH_TWOPI */
++
++/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
++/* #undef LLVM_PATH_XDOT_PY */
++
++/* Installation prefix directory */
++#define LLVM_PREFIX "/opt/llvm-android"
++
++/* Define if we have the Intel JIT API runtime support library */
++#define LLVM_USE_INTEL_JITEVENTS 0
++
++/* Define if we have the oprofile JIT-support library */
++#define LLVM_USE_OPROFILE 0
++
++/* Major version of the LLVM API */
++#define LLVM_VERSION_MAJOR 3
++
++/* Minor version of the LLVM API */
++#define LLVM_VERSION_MINOR 5
++
++/* Define if the OS needs help to load dependent libraries for dlopen(). */
++/* #undef LTDL_DLOPEN_DEPLIBS */
++
++/* Define to the sub-directory in which libtool stores uninstalled libraries.
++   */
++#define LTDL_OBJDIR ".libs/"
++
++/* Define to the name of the environment variable that determines the dynamic
++   library search path. */
++#define LTDL_SHLIBPATH_VAR "LD_LIBRARY_PATH"
++
++/* Define to the extension used for shared libraries, say, ".so". */
++#define LTDL_SHLIB_EXT ".so"
++
++/* Define to the system default library search path. */
++#define LTDL_SYSSEARCHPATH "/lib:/usr/lib:/usr/local/lib:/lib:/usr/lib:/lib64:/usr/lib64:/usr/local/lib64:/lib32:/usr/lib32:/usr/local/lib32:/usr/x86_64-pc-linux-gnu/lib:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4:/usr/lib/gcc/x86_64-pc-linux-gnu/4.3.4/32:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2:/usr/lib/gcc/x86_64-pc-linux-gnu/4.1.2/32"
++
++/* Define if /dev/zero should be used when mapping RWX memory, or undefine if
++   its not necessary */
++/* #undef NEED_DEV_ZERO_FOR_MMAP */
++
++/* Define if dlsym() requires a leading underscore in symbol names. */
++/* #undef NEED_USCORE */
++
++/* Define to the address where bug reports for this package should be sent. */
++#define PACKAGE_BUGREPORT "http://llvm.org/bugs/"
++
++/* Define to the full name of this package. */
++#define PACKAGE_NAME "LLVM"
++
++/* Define to the full name and version of this package. */
++#define PACKAGE_STRING "LLVM 3.4"
++
++/* Define to the one symbol short name of this package. */
++#define PACKAGE_TARNAME "llvm"
++
++/* Define to the version of this package. */
++#define PACKAGE_VERSION "3.4"
++
++/* Define as the return type of signal handlers (`int' or `void'). */
++#define RETSIGTYPE void
++
++/* Define to 1 if the `S_IS*' macros in <sys/stat.h> do not work properly. */
++/* #undef STAT_MACROS_BROKEN */
++
++/* Define to 1 if you have the ANSI C header files. */
++#define STDC_HEADERS 1
++
++/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
++#define TIME_WITH_SYS_TIME 1
++
++/* Define to 1 if your <sys/time.h> declares `struct tm'. */
++/* #undef TM_IN_SYS_TIME */
++
++/* Define if use udis86 library */
++#define USE_UDIS86 0
++
++/* Define to empty if `const' does not conform to ANSI C. */
++/* #undef const */
++
++/* Define to a type to use for `error_t' if it is not otherwise available. */
++/* #undef error_t */
++
++/* Define to `int' if <sys/types.h> does not define. */
++/* #undef pid_t */
++
++/* Define to `unsigned int' if <sys/types.h> does not define. */
++/* #undef size_t */
++
++#include "llvm/Config/llvm-platform-config.h"
++
++#endif
+diff --git a/host/include/llvm/Config/llvm-config.h b/host/include/llvm/Config/llvm-config.h
+new file mode 100644
+index 0000000..95f85fe
+--- /dev/null
++++ b/host/include/llvm/Config/llvm-config.h
+@@ -0,0 +1,102 @@
++/* include/llvm/Config/llvm-config.h.  Generated from llvm-config.h.in by configure.  */
++/*===-- llvm/config/llvm-config.h - llvm configure variable -------*- C -*-===*/
++/*                                                                            */
++/*                     The LLVM Compiler Infrastructure                       */
++/*                                                                            */
++/* This file is distributed under the University of Illinois Open Source      */
++/* License. See LICENSE.TXT for details.                                      */
++/*                                                                            */
++/*===----------------------------------------------------------------------===*/
++
++/* This file enumerates all of the llvm variables from configure so that
++   they can be in exported headers and won't override package specific
++   directives.  This is a C file so we can include it in the llvm-c headers.  */
++
++/* To avoid multiple inclusions of these variables when we include the exported
++   headers and config.h, conditionally include these.  */
++/* TODO: This is a bit of a hack.  */
++#ifndef CONFIG_H
++
++/* Installation directory for binary executables */
++#define LLVM_BINDIR "/opt/llvm-android/bin"
++
++/* Time at which LLVM was configured */
++#define LLVM_CONFIGTIME "Tue May  8 14:22:45 CST 2012"
++
++/* Installation directory for data files */
++#define LLVM_DATADIR "/opt/llvm-android/share/llvm"
++
++/* Target triple LLVM will generate code for by default */
++#define LLVM_DEFAULT_TARGET_TRIPLE "i386-unknown-linux"
++
++/* Installation directory for documentation */
++#define LLVM_DOCSDIR "/opt/llvm-android/share/doc/llvm"
++
++/* Define if threads enabled */
++#define LLVM_ENABLE_THREADS 1
++
++/* Installation directory for config files */
++#define LLVM_ETCDIR "/opt/llvm-android/etc/llvm"
++
++#if !defined(_WIN32) && !defined(_WIN64)
++
++/* Has gcc/MSVC atomic intrinsics */
++#define LLVM_HAS_ATOMICS 1
++
++#else
++
++#define LLVM_HAS_ATOMICS 0
++
++#endif /* !defined(_WIN32) && !defined(_WIN64) */
++
++/* Installation directory for include files */
++#define LLVM_INCLUDEDIR "/opt/llvm-android/include"
++
++/* Installation directory for .info files */
++#define LLVM_INFODIR "/opt/llvm-android/info"
++
++/* Installation directory for libraries */
++#define LLVM_LIBDIR "/opt/llvm-android/lib"
++
++/* Installation directory for man pages */
++#define LLVM_MANDIR "/opt/llvm-android/man"
++
++/* Define to path to circo program if found or 'echo circo' otherwise */
++/* #undef LLVM_PATH_CIRCO */
++
++/* Define to path to dot program if found or 'echo dot' otherwise */
++/* #undef LLVM_PATH_DOT */
++
++/* Define to path to dotty program if found or 'echo dotty' otherwise */
++/* #undef LLVM_PATH_DOTTY */
++
++/* Define to path to fdp program if found or 'echo fdp' otherwise */
++/* #undef LLVM_PATH_FDP */
++
++/* Define to path to Graphviz program if found or 'echo Graphviz' otherwise */
++/* #undef LLVM_PATH_GRAPHVIZ */
++
++/* Define to path to gv program if found or 'echo gv' otherwise */
++/* #undef LLVM_PATH_GV */
++
++/* Define to path to neato program if found or 'echo neato' otherwise */
++/* #undef LLVM_PATH_NEATO */
++
++/* Define to path to twopi program if found or 'echo twopi' otherwise */
++/* #undef LLVM_PATH_TWOPI */
++
++/* Define to path to xdot.py program if found or 'echo xdot.py' otherwise */
++/* #undef LLVM_PATH_XDOT_PY */
++
++/* Installation prefix directory */
++#define LLVM_PREFIX "/opt/llvm-android"
++
++/* Major version of the LLVM API */
++#define LLVM_VERSION_MAJOR 3
++
++/* Minor version of the LLVM API */
++#define LLVM_VERSION_MINOR 5
++
++#include "llvm/Config/llvm-platform-config.h"
++
++#endif
+diff --git a/include/llvm/Config/llvm-platform-config.h b/include/llvm/Config/llvm-platform-config.h
+new file mode 100644
+index 0000000..cd005be
+--- /dev/null
++++ b/include/llvm/Config/llvm-platform-config.h
+@@ -0,0 +1,160 @@
++#ifndef LLVM_NATIVE_CONFIG_H
++
++/*===-- llvm/config/llvm-native-config.h --------------------------*- C -*-===*/
++/*                                                                            */
++/*                     The LLVM Compiler Infrastructure                       */
++/*                                                                            */
++/* This file is distributed under the University of Illinois Open Source      */
++/* License. See LICENSE.TXT for details.                                      */
++/*                                                                            */
++/*===----------------------------------------------------------------------===*/
++
++#if defined(__i386__) || defined(__x86_64__)
++
++/* LLVM architecture name for the native architecture, if available */
++#define LLVM_NATIVE_ARCH X86
++
++/* Host triple LLVM will be executed on */
++#define LLVM_HOST_TRIPLE "i686-unknown-linux-gnu"
++
++/* LLVM name for the native AsmParser init function, if available */
++#define LLVM_NATIVE_ASMPARSER LLVMInitializeX86AsmParser
++
++/* LLVM name for the native AsmPrinter init function, if available */
++#define LLVM_NATIVE_ASMPRINTER LLVMInitializeX86AsmPrinter
++
++/* LLVM name for the native Disassembler init function, if available */
++#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeX86Disassembler
++
++/* LLVM name for the native Target init function, if available */
++#define LLVM_NATIVE_TARGET LLVMInitializeX86Target
++
++/* LLVM name for the native TargetInfo init function, if available */
++#define LLVM_NATIVE_TARGETINFO LLVMInitializeX86TargetInfo
++
++/* LLVM name for the native target MC init function, if available */
++#define LLVM_NATIVE_TARGETMC LLVMInitializeX86TargetMC
++
++
++#elif defined(__arm__)
++
++/* LLVM architecture name for the native architecture, if available */
++#define LLVM_NATIVE_ARCH ARM
++
++/* Host triple LLVM will be executed on */
++#define LLVM_HOST_TRIPLE "arm-unknown-linux-gnu"
++
++/* LLVM name for the native AsmParser init function, if available */
++#define LLVM_NATIVE_ASMPARSER LLVMInitializeARMAsmParser
++
++/* LLVM name for the native AsmPrinter init function, if available */
++#define LLVM_NATIVE_ASMPRINTER LLVMInitializeARMAsmPrinter
++
++/* LLVM name for the native Disassembler init function, if available */
++#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeARMDisassembler
++
++/* LLVM name for the native Target init function, if available */
++#define LLVM_NATIVE_TARGET LLVMInitializeARMTarget
++
++/* LLVM name for the native TargetInfo init function, if available */
++#define LLVM_NATIVE_TARGETINFO LLVMInitializeARMTargetInfo
++
++/* LLVM name for the native target MC init function, if available */
++#define LLVM_NATIVE_TARGETMC LLVMInitializeARMTargetMC
++
++
++#elif defined(__mips__)
++
++/* LLVM architecture name for the native architecture, if available */
++#define LLVM_NATIVE_ARCH Mips
++
++/* Host triple LLVM will be executed on */
++#define LLVM_HOST_TRIPLE "mipsel-unknown-linux-gnu"
++
++/* LLVM name for the native AsmParser init function, if available */
++#define LLVM_NATIVE_ASMPARSER LLVMInitializeMipsAsmParser
++
++/* LLVM name for the native AsmPrinter init function, if available */
++#define LLVM_NATIVE_ASMPRINTER LLVMInitializeMipsAsmPrinter
++
++/* LLVM name for the native Disassembler init function, if available */
++#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeMipsDisassembler
++
++/* LLVM name for the native Target init function, if available */
++#define LLVM_NATIVE_TARGET LLVMInitializeMipsTarget
++
++/* LLVM name for the native TargetInfo init function, if available */
++#define LLVM_NATIVE_TARGETINFO LLVMInitializeMipsTargetInfo
++
++/* LLVM name for the native target MC init function, if available */
++#define LLVM_NATIVE_TARGETMC LLVMInitializeMipsTargetMC
++
++#elif defined(__aarch64__)
++
++/* LLVM architecture name for the native architecture, if available */
++#define LLVM_NATIVE_ARCH AArch64
++
++/* Host triple LLVM will be executed on */
++#define LLVM_HOST_TRIPLE "aarch64-none-linux-gnu"
++
++/* LLVM name for the native AsmParser init function, if available */
++#define LLVM_NATIVE_ASMPARSER LLVMInitializeAArch64AsmParser
++
++/* LLVM name for the native AsmPrinter init function, if available */
++#define LLVM_NATIVE_ASMPRINTER LLVMInitializeAArch64AsmPrinter
++
++/* LLVM name for the native Disassembler init function, if available */
++#define LLVM_NATIVE_DISASSEMBLER LLVMInitializeAArch64Disassembler
++
++/* LLVM name for the native Target init function, if available */
++#define LLVM_NATIVE_TARGET LLVMInitializeAArch64Target
++
++/* LLVM name for the native TargetInfo init function, if available */
++#define LLVM_NATIVE_TARGETINFO LLVMInitializeAArch64TargetInfo
++
++/* LLVM name for the native target MC init function, if available */
++#define LLVM_NATIVE_TARGETMC LLVMInitializeAArch64TargetMC
++
++#else
++
++#error "Unknown native architecture"
++
++#endif
++
++
++
++#if defined(_WIN32) || defined(_WIN64)
++
++/* Define if this is Unixish platform */
++/* #undef LLVM_ON_UNIX */
++
++/* Define if this is Win32ish platform */
++#define LLVM_ON_WIN32 1
++
++/* Define to 1 if you have the <windows.h> header file. */
++#define HAVE_WINDOWS_H 1
++
++/* Define to 1 if you have the `psapi' library (-lpsapi). */
++#define HAVE_LIBPSAPI 1
++
++/* Define to 1 if you have the `imagehlp' library (-limagehlp). */
++#define HAVE_LIBIMAGEHLP 1
++
++/* Type of 1st arg on ELM Callback */
++#define WIN32_ELMCB_PCSTR PSTR
++
++
++#else /* Linux, Mac OS X, ... Unixish platform */
++
++/* Define if this is Unixish platform */
++#define LLVM_ON_UNIX 1
++
++/* Define if this is Win32ish platform */
++/* #undef LLVM_ON_WIN32 */
++
++/* Type of 1st arg on ELM Callback */
++/* #undef WIN32_ELMCB_PCSTR */
++
++#endif
++
++#endif // LLVM_NATIVE_CONFIG_H
+diff --git a/include/llvm/Support/DataTypes.h b/include/llvm/Support/DataTypes.h
+new file mode 100644
+index 0000000..a4a65b8
+--- /dev/null
++++ b/include/llvm/Support/DataTypes.h
+@@ -0,0 +1,213 @@
++/* include/llvm/Support/DataTypes.h.  Generated from DataTypes.h.in by configure.  */
++/*===-- include/Support/DataTypes.h - Define fixed size types -----*- C -*-===*\
++|*                                                                            *|
++|*                     The LLVM Compiler Infrastructure                       *|
++|*                                                                            *|
++|* This file is distributed under the University of Illinois Open Source      *|
++|* License. See LICENSE.TXT for details.                                      *|
++|*                                                                            *|
++|*===----------------------------------------------------------------------===*|
++|*                                                                            *|
++|* This file contains definitions to figure out the size of _HOST_ data types.*|
++|* This file is important because different host OS's define different macros,*|
++|* which makes portability tough.  This file exports the following            *|
++|* definitions:                                                               *|
++|*                                                                            *|
++|*   [u]int(32|64)_t : typedefs for signed and unsigned 32/64 bit system types*|
++|*   [U]INT(8|16|32|64)_(MIN|MAX) : Constants for the min and max values.     *|
++|*                                                                            *|
++|* No library is required when using these functions.                         *|
++|*                                                                            *|
++|*===----------------------------------------------------------------------===*/
++
++/* Please leave this file C-compatible. */
++
++/* Please keep this file in sync with DataTypes.h.cmake */
++
++#ifndef SUPPORT_DATATYPES_H
++#define SUPPORT_DATATYPES_H
++
++#define HAVE_SYS_TYPES_H 1
++#define HAVE_INTTYPES_H 1
++#define HAVE_STDINT_H 1
++#define HAVE_UINT64_T 1
++/* #undef HAVE_U_INT64_T */
++
++#ifdef __cplusplus
++#include <cmath>
++#else
++#include <math.h>
++#endif
++
++#ifndef _MSC_VER
++
++/* Note that this header's correct operation depends on __STDC_LIMIT_MACROS
++   being defined.  We would define it here, but in order to prevent Bad Things
++   happening when system headers or C++ STL headers include stdint.h before we
++   define it here, we define it on the g++ command line (in Makefile.rules). */
++#if !defined(__STDC_LIMIT_MACROS)
++# error "Must #define __STDC_LIMIT_MACROS before #including Support/DataTypes.h"
++#endif
++
++#if !defined(__STDC_CONSTANT_MACROS)
++# error "Must #define __STDC_CONSTANT_MACROS before " \
++        "#including Support/DataTypes.h"
++#endif
++
++/* Note that <inttypes.h> includes <stdint.h>, if this is a C99 system. */
++#ifdef HAVE_SYS_TYPES_H
++#include <sys/types.h>
++#endif
++
++#ifdef HAVE_INTTYPES_H
++#include <inttypes.h>
++#endif
++
++#ifdef HAVE_STDINT_H
++#include <stdint.h>
++#endif
++
++#ifdef _AIX
++#include "llvm/Support/AIXDataTypesFix.h"
++#endif
++
++/* Handle incorrect definition of uint64_t as u_int64_t */
++#ifndef HAVE_UINT64_T
++#ifdef HAVE_U_INT64_T
++typedef u_int64_t uint64_t;
++#else
++# error "Don't have a definition for uint64_t on this platform"
++#endif
++#endif
++
++#ifdef _OpenBSD_
++#define INT8_MAX 127
++#define INT8_MIN -128
++#define UINT8_MAX 255
++#define INT16_MAX 32767
++#define INT16_MIN -32768
++#define UINT16_MAX 65535
++#define INT32_MAX 2147483647
++#define INT32_MIN -2147483648
++#define UINT32_MAX 4294967295U
++#endif
++
++#else /* _MSC_VER */
++/* Visual C++ doesn't provide standard integer headers, but it does provide
++   built-in data types. */
++#include <stdlib.h>
++#include <stddef.h>
++#include <sys/types.h>
++#ifdef __cplusplus
++#include <cmath>
++#else
++#include <math.h>
++#endif
++typedef __int64 int64_t;
++typedef unsigned __int64 uint64_t;
++typedef signed int int32_t;
++typedef unsigned int uint32_t;
++typedef short int16_t;
++typedef unsigned short uint16_t;
++typedef signed char int8_t;
++typedef unsigned char uint8_t;
++typedef signed int ssize_t;
++#ifndef INT8_MAX
++# define INT8_MAX 127
++#endif
++#ifndef INT8_MIN
++# define INT8_MIN -128
++#endif
++#ifndef UINT8_MAX
++# define UINT8_MAX 255
++#endif
++#ifndef INT16_MAX
++# define INT16_MAX 32767
++#endif
++#ifndef INT16_MIN
++# define INT16_MIN -32768
++#endif
++#ifndef UINT16_MAX
++# define UINT16_MAX 65535
++#endif
++#ifndef INT32_MAX
++# define INT32_MAX 2147483647
++#endif
++#ifndef INT32_MIN
++/* MSC treats -2147483648 as -(2147483648U). */
++# define INT32_MIN (-INT32_MAX - 1)
++#endif
++#ifndef UINT32_MAX
++# define UINT32_MAX 4294967295U
++#endif
++/* Certain compatibility updates to VC++ introduce the `cstdint'
++ * header, which defines the INT*_C macros. On default installs they
++ * are absent. */
++#ifndef INT8_C
++# define INT8_C(C)   C##i8
++#endif
++#ifndef UINT8_C
++# define UINT8_C(C)  C##ui8
++#endif
++#ifndef INT16_C
++# define INT16_C(C)  C##i16
++#endif
++#ifndef UINT16_C
++# define UINT16_C(C) C##ui16
++#endif
++#ifndef INT32_C
++# define INT32_C(C)  C##i32
++#endif
++#ifndef UINT32_C
++# define UINT32_C(C) C##ui32
++#endif
++#ifndef INT64_C
++# define INT64_C(C)  C##i64
++#endif
++#ifndef UINT64_C
++# define UINT64_C(C) C##ui64
++#endif
++
++#ifndef PRId64
++# define PRId64 "I64d"
++#endif
++#ifndef PRIi64
++# define PRIi64 "I64i"
++#endif
++#ifndef PRIo64
++# define PRIo64 "I64o"
++#endif
++#ifndef PRIu64
++# define PRIu64 "I64u"
++#endif
++#ifndef PRIx64
++# define PRIx64 "I64x"
++#endif
++#ifndef PRIX64
++# define PRIX64 "I64X"
++#endif
++
++#endif /* _MSC_VER */
++
++/* Set defaults for constants which we cannot find. */
++#if !defined(INT64_MAX)
++# define INT64_MAX 9223372036854775807LL
++#endif
++#if !defined(INT64_MIN)
++# define INT64_MIN ((-INT64_MAX)-1)
++#endif
++#if !defined(UINT64_MAX)
++# define UINT64_MAX 0xffffffffffffffffULL
++#endif
++
++#if __GNUC__ > 3
++#define END_WITH_NULL __attribute__((sentinel))
++#else
++#define END_WITH_NULL
++#endif
++
++#ifndef HUGE_VALF
++#define HUGE_VALF (float)HUGE_VAL
++#endif
++
++#endif  /* SUPPORT_DATATYPES_H */
+-- 
+1.9.1.423.g4596e3a
+
diff --git a/patches/0003-Add-support-for-64-bit-longs.patch b/patches/0003-Add-support-for-64-bit-longs.patch
new file mode 100644
index 0000000..e375914
--- /dev/null
+++ b/patches/0003-Add-support-for-64-bit-longs.patch
@@ -0,0 +1,56 @@
+From 37aee898ae3a8041aad2a7cc595b8a6cf7438b52 Mon Sep 17 00:00:00 2001
+From: Tim Murray <timmurray@google.com>
+Date: Thu, 3 Apr 2014 11:14:41 -0700
+Subject: [PATCH 3/5] Add support for 64-bit longs.
+
+Change-Id: I7d50c91b8324fa81c29595a8dc19f2180653a4f2
+---
+ lib/Target/ARM/ARM.td           | 4 ++++
+ lib/Target/ARM/ARMSubtarget.cpp | 1 +
+ lib/Target/ARM/ARMSubtarget.h   | 3 +++
+ 3 files changed, 8 insertions(+)
+
+diff --git a/lib/Target/ARM/ARM.td b/lib/Target/ARM/ARM.td
+index 7916ccc..25385a6 100644
+--- a/lib/Target/ARM/ARM.td
++++ b/lib/Target/ARM/ARM.td
+@@ -267,6 +267,10 @@ def FeatureAPCS  : SubtargetFeature<"apcs", "TargetABI", "ARM_ABI_APCS",
+ def FeatureAAPCS : SubtargetFeature<"aapcs", "TargetABI", "ARM_ABI_AAPCS",
+                                    "Use the AAPCS ABI">;
+ 
++// RenderScript-specific support for 64-bit long types on all targets
++def FeatureLong64 : SubtargetFeature<"long64", "UseLong64",
++                                     "true",
++                                     "long type is forced to be 64-bit">;
+ 
+ class ProcNoItin<string Name, list<SubtargetFeature> Features>
+  : Processor<Name, NoItineraries, Features>;
+diff --git a/lib/Target/ARM/ARMSubtarget.cpp b/lib/Target/ARM/ARMSubtarget.cpp
+index 5222c1b..73e2018 100644
+--- a/lib/Target/ARM/ARMSubtarget.cpp
++++ b/lib/Target/ARM/ARMSubtarget.cpp
+@@ -139,6 +139,7 @@ void ARMSubtarget::initializeEnvironment() {
+   Thumb2DSP = false;
+   UseNaClTrap = false;
+   UnsafeFPMath = false;
++  UseLong64 = false;
+ }
+ 
+ void ARMSubtarget::resetSubtargetFeatures(const MachineFunction *MF) {
+diff --git a/lib/Target/ARM/ARMSubtarget.h b/lib/Target/ARM/ARMSubtarget.h
+index 804f238..3855419 100644
+--- a/lib/Target/ARM/ARMSubtarget.h
++++ b/lib/Target/ARM/ARMSubtarget.h
+@@ -197,6 +197,9 @@ protected:
+   /// NaCl TRAP instruction is generated instead of the regular TRAP.
+   bool UseNaClTrap;
+ 
++  /// Force long to be a 64-bit type (RenderScript-specific)
++  bool UseLong64;
++
+   /// Target machine allowed unsafe FP math (such as use of NEON fp)
+   bool UnsafeFPMath;
+ 
+-- 
+1.9.1.423.g4596e3a
+
diff --git a/patches/0004-Add-Android-makefiles-for-LLVM.patch b/patches/0004-Add-Android-makefiles-for-LLVM.patch
new file mode 100644
index 0000000..863909a
--- /dev/null
+++ b/patches/0004-Add-Android-makefiles-for-LLVM.patch
@@ -0,0 +1,4628 @@
+From ca95c159402c89aff7dab5a29f3ea3b54c5a77a4 Mon Sep 17 00:00:00 2001
+From: Tim Murray <timmurray@google.com>
+Date: Thu, 27 Mar 2014 15:10:30 -0700
+Subject: [PATCH 4/5] Add Android makefiles for LLVM.
+
+Change-Id: I4f561d517605569e11af40bb191d056d7e7196de
+---
+ Android.mk                                 |  90 +++++++++++++
+ CleanSpec.mk                               |  54 ++++++++
+ clear_tblgen_vars.mk                       |   2 +
+ lib/Analysis/Android.mk                    |  80 +++++++++++
+ lib/Analysis/IPA/Android.mk                |  40 ++++++
+ lib/AsmParser/Android.mk                   |  34 +++++
+ lib/Bitcode/Reader/Android.mk              |  36 +++++
+ lib/Bitcode/Writer/Android.mk              |  37 +++++
+ lib/CodeGen/Android.mk                     | 143 ++++++++++++++++++++
+ lib/CodeGen/AsmPrinter/Android.mk          |  62 +++++++++
+ lib/CodeGen/SelectionDAG/Android.mk        |  56 ++++++++
+ lib/ExecutionEngine/Android.mk             |  18 +++
+ lib/ExecutionEngine/JIT/Android.mk         |  17 +++
+ lib/ExecutionEngine/MCJIT/Android.mk       |  16 +++
+ lib/ExecutionEngine/RuntimeDyld/Android.mk |  18 +++
+ lib/IR/Android.mk                          |  79 +++++++++++
+ lib/IRReader/Android.mk                    |  38 ++++++
+ lib/Linker/Android.mk                      |  32 +++++
+ lib/MC/Android.mk                          |  78 +++++++++++
+ lib/MC/MCDisassembler/Android.mk           |  15 +++
+ lib/MC/MCParser/Android.mk                 |  40 ++++++
+ lib/Object/Android.mk                      |  45 +++++++
+ lib/Option/Android.mk                      |  42 ++++++
+ lib/Support/Android.mk                     | 120 +++++++++++++++++
+ lib/TableGen/Android.mk                    |  39 ++++++
+ lib/Target/AArch64/Android.mk              |  67 ++++++++++
+ lib/Target/AArch64/AsmParser/Android.mk    |  63 +++++++++
+ lib/Target/AArch64/Disassembler/Android.mk |  55 ++++++++
+ lib/Target/AArch64/InstPrinter/Android.mk  |  57 ++++++++
+ lib/Target/AArch64/MCTargetDesc/Android.mk |  57 ++++++++
+ lib/Target/AArch64/TargetInfo/Android.mk   |  55 ++++++++
+ lib/Target/AArch64/Utils/Android.mk        |  36 +++++
+ lib/Target/ARM/Android.mk                  |  87 ++++++++++++
+ lib/Target/ARM/AsmParser/Android.mk        |  63 +++++++++
+ lib/Target/ARM/Disassembler/Android.mk     |  55 ++++++++
+ lib/Target/ARM/InstPrinter/Android.mk      |  57 ++++++++
+ lib/Target/ARM/MCTargetDesc/Android.mk     |  61 +++++++++
+ lib/Target/ARM/TargetInfo/Android.mk       |  55 ++++++++
+ lib/Target/Android.mk                      |  39 ++++++
+ lib/Target/Mips/Android.mk                 |  85 ++++++++++++
+ lib/Target/Mips/AsmParser/Android.mk       |  56 ++++++++
+ lib/Target/Mips/Disassembler/Android.mk    |  48 +++++++
+ lib/Target/Mips/InstPrinter/Android.mk     |  48 +++++++
+ lib/Target/Mips/MCTargetDesc/Android.mk    |  58 ++++++++
+ lib/Target/Mips/TargetInfo/Android.mk      |  47 +++++++
+ lib/Target/X86/Android.mk                  |  72 ++++++++++
+ lib/Target/X86/AsmParser/Android.mk        |  59 ++++++++
+ lib/Target/X86/Disassembler/Android.mk     |  56 ++++++++
+ lib/Target/X86/InstPrinter/Android.mk      |  57 ++++++++
+ lib/Target/X86/MCTargetDesc/Android.mk     |  56 ++++++++
+ lib/Target/X86/TargetInfo/Android.mk       |  55 ++++++++
+ lib/Target/X86/Utils/Android.mk            |  36 +++++
+ lib/Transforms/IPO/Android.mk              |  52 ++++++++
+ lib/Transforms/InstCombine/Android.mk      |  44 ++++++
+ lib/Transforms/Instrumentation/Android.mk  |  37 +++++
+ lib/Transforms/ObjCARC/Android.mk          |  40 ++++++
+ lib/Transforms/Scalar/Android.mk           |  73 ++++++++++
+ lib/Transforms/Utils/Android.mk            |  66 +++++++++
+ lib/Transforms/Vectorize/Android.mk        |  35 +++++
+ llvm-device-build.mk                       |  79 +++++++++++
+ llvm-gen-intrinsics.mk                     |  19 +++
+ llvm-host-build.mk                         |  64 +++++++++
+ llvm-tblgen-rules.mk                       | 208 +++++++++++++++++++++++++++++
+ llvm.mk                                    |  11 ++
+ shared_llvm.mk                             | 137 +++++++++++++++++++
+ tools/llc/Android.mk                       | 136 +++++++++++++++++++
+ tools/llvm-as/Android.mk                   |  28 ++++
+ tools/llvm-dis/Android.mk                  |  25 ++++
+ tools/llvm-link/Android.mk                 |  50 +++++++
+ tools/opt/Android.mk                       |  81 +++++++++++
+ utils/FileCheck/Android.mk                 |  23 ++++
+ utils/TableGen/Android.mk                  |  58 ++++++++
+ 72 files changed, 4037 insertions(+)
+ create mode 100644 Android.mk
+ create mode 100644 CleanSpec.mk
+ create mode 100644 clear_tblgen_vars.mk
+ create mode 100644 lib/Analysis/Android.mk
+ create mode 100644 lib/Analysis/IPA/Android.mk
+ create mode 100644 lib/AsmParser/Android.mk
+ create mode 100644 lib/Bitcode/Reader/Android.mk
+ create mode 100644 lib/Bitcode/Writer/Android.mk
+ create mode 100644 lib/CodeGen/Android.mk
+ create mode 100644 lib/CodeGen/AsmPrinter/Android.mk
+ create mode 100644 lib/CodeGen/SelectionDAG/Android.mk
+ create mode 100644 lib/ExecutionEngine/Android.mk
+ create mode 100644 lib/ExecutionEngine/JIT/Android.mk
+ create mode 100644 lib/ExecutionEngine/MCJIT/Android.mk
+ create mode 100644 lib/ExecutionEngine/RuntimeDyld/Android.mk
+ create mode 100644 lib/IR/Android.mk
+ create mode 100644 lib/IRReader/Android.mk
+ create mode 100644 lib/Linker/Android.mk
+ create mode 100644 lib/MC/Android.mk
+ create mode 100644 lib/MC/MCDisassembler/Android.mk
+ create mode 100644 lib/MC/MCParser/Android.mk
+ create mode 100644 lib/Object/Android.mk
+ create mode 100644 lib/Option/Android.mk
+ create mode 100644 lib/Support/Android.mk
+ create mode 100644 lib/TableGen/Android.mk
+ create mode 100644 lib/Target/AArch64/Android.mk
+ create mode 100644 lib/Target/AArch64/AsmParser/Android.mk
+ create mode 100644 lib/Target/AArch64/Disassembler/Android.mk
+ create mode 100644 lib/Target/AArch64/InstPrinter/Android.mk
+ create mode 100644 lib/Target/AArch64/MCTargetDesc/Android.mk
+ create mode 100644 lib/Target/AArch64/TargetInfo/Android.mk
+ create mode 100644 lib/Target/AArch64/Utils/Android.mk
+ create mode 100644 lib/Target/ARM/Android.mk
+ create mode 100644 lib/Target/ARM/AsmParser/Android.mk
+ create mode 100644 lib/Target/ARM/Disassembler/Android.mk
+ create mode 100644 lib/Target/ARM/InstPrinter/Android.mk
+ create mode 100644 lib/Target/ARM/MCTargetDesc/Android.mk
+ create mode 100644 lib/Target/ARM/TargetInfo/Android.mk
+ create mode 100644 lib/Target/Android.mk
+ create mode 100644 lib/Target/Mips/Android.mk
+ create mode 100644 lib/Target/Mips/AsmParser/Android.mk
+ create mode 100644 lib/Target/Mips/Disassembler/Android.mk
+ create mode 100644 lib/Target/Mips/InstPrinter/Android.mk
+ create mode 100644 lib/Target/Mips/MCTargetDesc/Android.mk
+ create mode 100644 lib/Target/Mips/TargetInfo/Android.mk
+ create mode 100644 lib/Target/X86/Android.mk
+ create mode 100644 lib/Target/X86/AsmParser/Android.mk
+ create mode 100644 lib/Target/X86/Disassembler/Android.mk
+ create mode 100644 lib/Target/X86/InstPrinter/Android.mk
+ create mode 100644 lib/Target/X86/MCTargetDesc/Android.mk
+ create mode 100644 lib/Target/X86/TargetInfo/Android.mk
+ create mode 100644 lib/Target/X86/Utils/Android.mk
+ create mode 100644 lib/Transforms/IPO/Android.mk
+ create mode 100644 lib/Transforms/InstCombine/Android.mk
+ create mode 100644 lib/Transforms/Instrumentation/Android.mk
+ create mode 100644 lib/Transforms/ObjCARC/Android.mk
+ create mode 100644 lib/Transforms/Scalar/Android.mk
+ create mode 100644 lib/Transforms/Utils/Android.mk
+ create mode 100644 lib/Transforms/Vectorize/Android.mk
+ create mode 100644 llvm-device-build.mk
+ create mode 100644 llvm-gen-intrinsics.mk
+ create mode 100644 llvm-host-build.mk
+ create mode 100644 llvm-tblgen-rules.mk
+ create mode 100644 llvm.mk
+ create mode 100644 shared_llvm.mk
+ create mode 100644 tools/llc/Android.mk
+ create mode 100644 tools/llvm-as/Android.mk
+ create mode 100644 tools/llvm-dis/Android.mk
+ create mode 100644 tools/llvm-link/Android.mk
+ create mode 100644 tools/opt/Android.mk
+ create mode 100644 utils/FileCheck/Android.mk
+ create mode 100644 utils/TableGen/Android.mk
+
+diff --git a/Android.mk b/Android.mk
+new file mode 100644
+index 0000000..9f6e8a5
+--- /dev/null
++++ b/Android.mk
+@@ -0,0 +1,90 @@
++LOCAL_PATH := $(call my-dir)
++LLVM_ROOT_PATH := $(LOCAL_PATH)
++LLVM_ENABLE_ASSERTION := false
++
++include $(CLEAR_VARS)
++
++# LLVM Libraries
++subdirs := \
++  lib/Analysis \
++  lib/Analysis/IPA \
++  lib/AsmParser \
++  lib/Bitcode/Reader \
++  lib/Bitcode/Writer \
++  lib/ExecutionEngine \
++  lib/ExecutionEngine/RuntimeDyld \
++  lib/ExecutionEngine/JIT \
++  lib/ExecutionEngine/MCJIT \
++  lib/CodeGen \
++  lib/CodeGen/AsmPrinter \
++  lib/CodeGen/SelectionDAG \
++  lib/IR \
++  lib/IRReader \
++  lib/Linker \
++  lib/MC \
++  lib/MC/MCDisassembler \
++  lib/MC/MCParser \
++  lib/Object \
++  lib/Option \
++  lib/Support \
++  lib/TableGen \
++  lib/Target \
++  lib/Transforms/IPO \
++  lib/Transforms/InstCombine \
++  lib/Transforms/Instrumentation \
++  lib/Transforms/ObjCARC \
++  lib/Transforms/Scalar \
++  lib/Transforms/Utils \
++  lib/Transforms/Vectorize \
++  utils/FileCheck \
++  utils/TableGen
++
++# ARM Code Generation Libraries
++subdirs += \
++  lib/Target/ARM \
++  lib/Target/ARM/AsmParser \
++  lib/Target/ARM/InstPrinter \
++  lib/Target/ARM/Disassembler \
++  lib/Target/ARM/MCTargetDesc \
++  lib/Target/ARM/TargetInfo
++
++# ARM64 Code Generation Libraries
++subdirs += \
++  lib/Target/AArch64  \
++  lib/Target/AArch64/AsmParser \
++  lib/Target/AArch64/InstPrinter \
++  lib/Target/AArch64/Disassembler \
++  lib/Target/AArch64/MCTargetDesc \
++  lib/Target/AArch64/TargetInfo \
++  lib/Target/AArch64/Utils
++
++# MIPS Code Generation Libraries
++subdirs += \
++  lib/Target/Mips \
++  lib/Target/Mips/AsmParser \
++  lib/Target/Mips/InstPrinter \
++  lib/Target/Mips/Disassembler \
++  lib/Target/Mips/MCTargetDesc \
++  lib/Target/Mips/TargetInfo
++
++# X86 Code Generation Libraries
++subdirs += \
++  lib/Target/X86 \
++  lib/Target/X86/AsmParser \
++  lib/Target/X86/InstPrinter \
++  lib/Target/X86/Disassembler \
++  lib/Target/X86/MCTargetDesc \
++  lib/Target/X86/TargetInfo \
++  lib/Target/X86/Utils
++
++# LLVM Command Line Tools
++subdirs += tools/llc
++subdirs += tools/llvm-as
++subdirs += tools/llvm-dis
++subdirs += tools/llvm-link
++#subdirs += tools/opt
++
++include $(LOCAL_PATH)/llvm.mk
++include $(LOCAL_PATH)/shared_llvm.mk
++
++include $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, $(subdirs)))
+diff --git a/CleanSpec.mk b/CleanSpec.mk
+new file mode 100644
+index 0000000..f756f04
+--- /dev/null
++++ b/CleanSpec.mk
+@@ -0,0 +1,54 @@
++# Copyright (C) 2007 The Android Open Source Project
++#
++# Licensed under the Apache License, Version 2.0 (the "License");
++# you may not use this file except in compliance with the License.
++# You may obtain a copy of the License at
++#
++#      http://www.apache.org/licenses/LICENSE-2.0
++#
++# Unless required by applicable law or agreed to in writing, software
++# distributed under the License is distributed on an "AS IS" BASIS,
++# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
++# See the License for the specific language governing permissions and
++# limitations under the License.
++#
++
++# If you don't need to do a full clean build but would like to touch
++# a file or delete some intermediate files, add a clean step to the end
++# of the list.  These steps will only be run once, if they haven't been
++# run before.
++#
++# E.g.:
++#     $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
++#     $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
++#
++# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
++# files that are missing or have been moved.
++#
++# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
++# Use $(OUT_DIR) to refer to the "out" directory.
++#
++# If you need to re-do something that's already mentioned, just copy
++# the command and add it to the bottom of the list.  E.g., if a change
++# that you made last week required touching a file and a change you
++# made today requires touching the same file, just copy the old
++# touch step and add it to the end of the list.
++#
++# ************************************************
++# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
++# ************************************************
++
++# For example:
++#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
++#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
++#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
++#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
++
++# ************************************************
++# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
++# ************************************************
++$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/stingray/obj/STATIC_LIBRARIES/libLLVM*)
++$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/stingray/obj/STATIC_LIBRARIES/libLLVMARMCodeGen_intermediates*)
++$(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_PREBUILT_TAG)/obj/STATIC_LIBRARIES/libLLVMARM*)
++$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libLLVMARM*)
++$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/app_process__asan_intermediates*)
+diff --git a/clear_tblgen_vars.mk b/clear_tblgen_vars.mk
+new file mode 100644
+index 0000000..6c9623e
+--- /dev/null
++++ b/clear_tblgen_vars.mk
+@@ -0,0 +1,2 @@
++TBLGEN_TABLES :=
++TBLGEN_TD_DIR :=
+diff --git a/lib/Analysis/Android.mk b/lib/Analysis/Android.mk
+new file mode 100644
+index 0000000..76eee74
+--- /dev/null
++++ b/lib/Analysis/Android.mk
+@@ -0,0 +1,80 @@
++LOCAL_PATH:= $(call my-dir)
++
++analysis_SRC_FILES := \
++  AliasAnalysis.cpp \
++  AliasAnalysisCounter.cpp \
++  AliasAnalysisEvaluator.cpp \
++  AliasDebugger.cpp \
++  AliasSetTracker.cpp \
++  Analysis.cpp \
++  BasicAliasAnalysis.cpp \
++  BlockFrequencyInfo.cpp \
++  BranchProbabilityInfo.cpp \
++  CFG.cpp \
++  CFGPrinter.cpp \
++  CaptureTracking.cpp \
++  CodeMetrics.cpp \
++  ConstantFolding.cpp \
++  CostModel.cpp \
++  Delinearization.cpp \
++  DependenceAnalysis.cpp \
++  DomPrinter.cpp \
++  DominanceFrontier.cpp \
++  IVUsers.cpp \
++  InstCount.cpp \
++  InstructionSimplify.cpp \
++  Interval.cpp \
++  IntervalPartition.cpp \
++  LazyValueInfo.cpp \
++  LibCallAliasAnalysis.cpp \
++  LibCallSemantics.cpp \
++  Lint.cpp \
++  Loads.cpp \
++  LoopInfo.cpp \
++  LoopPass.cpp \
++  MemDepPrinter.cpp \
++  MemoryBuiltins.cpp \
++  MemoryDependenceAnalysis.cpp \
++  ModuleDebugInfoPrinter.cpp \
++  NoAliasAnalysis.cpp \
++  PHITransAddr.cpp \
++  PostDominators.cpp \
++  PtrUseVisitor.cpp \
++  RegionInfo.cpp \
++  RegionPass.cpp \
++  RegionPrinter.cpp \
++  ScalarEvolution.cpp \
++  ScalarEvolutionAliasAnalysis.cpp \
++  ScalarEvolutionExpander.cpp \
++  ScalarEvolutionNormalization.cpp \
++  SparsePropagation.cpp \
++  TargetTransformInfo.cpp \
++  Trace.cpp \
++  TypeBasedAliasAnalysis.cpp \
++  ValueTracking.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_MODULE:= libLLVMAnalysis
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(analysis_SRC_FILES)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_MODULE:= libLLVMAnalysis
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(analysis_SRC_FILES)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Analysis/IPA/Android.mk b/lib/Analysis/IPA/Android.mk
+new file mode 100644
+index 0000000..d56d931
+--- /dev/null
++++ b/lib/Analysis/IPA/Android.mk
+@@ -0,0 +1,40 @@
++LOCAL_PATH:= $(call my-dir)
++
++analysis_ipa_SRC_FILES := \
++  CallGraph.cpp \
++  CallGraphSCCPass.cpp \
++  CallPrinter.cpp \
++  FindUsedTypes.cpp \
++  GlobalsModRef.cpp \
++  IPA.cpp \
++  InlineCost.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(analysis_ipa_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMipa
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(analysis_ipa_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMipa
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/AsmParser/Android.mk b/lib/AsmParser/Android.mk
+new file mode 100644
+index 0000000..7bd29a7
+--- /dev/null
++++ b/lib/AsmParser/Android.mk
+@@ -0,0 +1,34 @@
++LOCAL_PATH:= $(call my-dir)
++
++asm_parser_SRC_FILES := \
++  LLLexer.cpp \
++  LLParser.cpp \
++  Parser.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(asm_parser_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMAsmParser
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LOCAL_PATH)/../../llvm-host-build.mk
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(asm_parser_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMAsmParser
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LOCAL_PATH)/../../llvm-device-build.mk
++include $(BUILD_STATIC_LIBRARY)
++endif
+\ No newline at end of file
+diff --git a/lib/Bitcode/Reader/Android.mk b/lib/Bitcode/Reader/Android.mk
+new file mode 100644
+index 0000000..3bdcdda
+--- /dev/null
++++ b/lib/Bitcode/Reader/Android.mk
+@@ -0,0 +1,36 @@
++LOCAL_PATH:= $(call my-dir)
++
++bitcode_reader_SRC_FILES := \
++	BitReader.cpp	\
++	BitcodeReader.cpp \
++	BitstreamReader.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMBitReader
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++include $(CLEAR_VARS)
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++
++LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMBitReader
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Bitcode/Writer/Android.mk b/lib/Bitcode/Writer/Android.mk
+new file mode 100644
+index 0000000..6aa208c
+--- /dev/null
++++ b/lib/Bitcode/Writer/Android.mk
+@@ -0,0 +1,37 @@
++LOCAL_PATH:= $(call my-dir)
++
++bitcode_writer_SRC_FILES := \
++	BitWriter.cpp	\
++	BitcodeWriter.cpp	\
++	BitcodeWriterPass.cpp	\
++	ValueEnumerator.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMBitWriter
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++include $(CLEAR_VARS)
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++
++LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMBitWriter
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/CodeGen/Android.mk b/lib/CodeGen/Android.mk
+new file mode 100644
+index 0000000..26f04d0
+--- /dev/null
++++ b/lib/CodeGen/Android.mk
+@@ -0,0 +1,143 @@
++LOCAL_PATH:= $(call my-dir)
++
++codegen_SRC_FILES := \
++  AggressiveAntiDepBreaker.cpp \
++  AllocationOrder.cpp \
++  Analysis.cpp \
++  BasicTargetTransformInfo.cpp \
++  BranchFolding.cpp \
++  CalcSpillWeights.cpp \
++  CallingConvLower.cpp \
++  CodeGen.cpp \
++  CodeGenPrepare.cpp \
++  CriticalAntiDepBreaker.cpp \
++  DeadMachineInstructionElim.cpp \
++  DFAPacketizer.cpp \
++  DwarfEHPrepare.cpp \
++  EarlyIfConversion.cpp \
++  EdgeBundles.cpp \
++  ErlangGC.cpp \
++  ExecutionDepsFix.cpp \
++  ExpandISelPseudos.cpp \
++  ExpandPostRAPseudos.cpp \
++  GCMetadata.cpp \
++  GCMetadataPrinter.cpp \
++  GCStrategy.cpp \
++  IfConversion.cpp \
++  InlineSpiller.cpp \
++  InterferenceCache.cpp \
++  IntrinsicLowering.cpp \
++  JITCodeEmitter.cpp \
++  LatencyPriorityQueue.cpp \
++  LexicalScopes.cpp \
++  LiveDebugVariables.cpp \
++  LiveIntervalAnalysis.cpp \
++  LiveInterval.cpp \
++  LiveIntervalUnion.cpp \
++  LivePhysRegs.cpp \
++  LiveRangeCalc.cpp \
++  LiveRangeEdit.cpp \
++  LiveRegMatrix.cpp \
++  LiveStackAnalysis.cpp \
++  LiveVariables.cpp \
++  LLVMTargetMachine.cpp \
++  LocalStackSlotAllocation.cpp \
++  MachineBasicBlock.cpp \
++  MachineBlockFrequencyInfo.cpp \
++  MachineBlockPlacement.cpp \
++  MachineBranchProbabilityInfo.cpp \
++  MachineCodeEmitter.cpp \
++  MachineCopyPropagation.cpp \
++  MachineCSE.cpp \
++  MachineDominators.cpp \
++  MachineFunctionAnalysis.cpp \
++  MachineFunction.cpp \
++  MachineFunctionPass.cpp \
++  MachineFunctionPrinterPass.cpp \
++  MachineInstrBundle.cpp \
++  MachineInstr.cpp \
++  MachineLICM.cpp \
++  MachineLoopInfo.cpp \
++  MachineModuleInfo.cpp \
++  MachineModuleInfoImpls.cpp \
++  MachinePassRegistry.cpp \
++  MachinePostDominators.cpp \
++  MachineRegisterInfo.cpp \
++  MachineScheduler.cpp \
++  MachineSink.cpp \
++  MachineSSAUpdater.cpp \
++  MachineTraceMetrics.cpp \
++  MachineVerifier.cpp \
++  OcamlGC.cpp \
++  OptimizePHIs.cpp \
++  Passes.cpp \
++  PeepholeOptimizer.cpp \
++  PHIElimination.cpp \
++  PHIEliminationUtils.cpp \
++  PostRASchedulerList.cpp \
++  ProcessImplicitDefs.cpp \
++  PrologEpilogInserter.cpp \
++  PseudoSourceValue.cpp \
++  RegAllocBase.cpp \
++  RegAllocBasic.cpp \
++  RegAllocFast.cpp \
++  RegAllocGreedy.cpp \
++  RegAllocPBQP.cpp \
++  RegisterClassInfo.cpp \
++  RegisterCoalescer.cpp \
++  RegisterPressure.cpp \
++  RegisterScavenging.cpp \
++  ScheduleDAG.cpp \
++  ScheduleDAGInstrs.cpp \
++  ScheduleDAGPrinter.cpp \
++  ScoreboardHazardRecognizer.cpp \
++  ShadowStackGC.cpp \
++  SjLjEHPrepare.cpp \
++  SlotIndexes.cpp \
++  Spiller.cpp \
++  SpillPlacement.cpp \
++  SplitKit.cpp \
++  StackColoring.cpp \
++  StackMapLivenessAnalysis.cpp \
++  StackMaps.cpp \
++  StackProtector.cpp \
++  StackSlotColoring.cpp \
++  TailDuplication.cpp \
++  TargetFrameLoweringImpl.cpp \
++  TargetInstrInfo.cpp \
++  TargetLoweringBase.cpp \
++  TargetLoweringObjectFileImpl.cpp \
++  TargetOptionsImpl.cpp \
++  TargetRegisterInfo.cpp \
++  TargetSchedule.cpp \
++  TwoAddressInstructionPass.cpp \
++  UnreachableBlockElim.cpp \
++  VirtRegMap.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(codegen_SRC_FILES)
++LOCAL_MODULE:= libLLVMCodeGen
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(codegen_SRC_FILES)
++LOCAL_MODULE:= libLLVMCodeGen
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/CodeGen/AsmPrinter/Android.mk b/lib/CodeGen/AsmPrinter/Android.mk
+new file mode 100644
+index 0000000..1e403ee
+--- /dev/null
++++ b/lib/CodeGen/AsmPrinter/Android.mk
+@@ -0,0 +1,62 @@
++LOCAL_PATH := $(call my-dir)
++
++codegen_asmprinter_SRC_FILES := \
++  AsmPrinter.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES :=	\
++	AsmPrinter.cpp	\
++	AsmPrinterDwarf.cpp	\
++	AsmPrinterInlineAsm.cpp	\
++	ARMException.cpp	\
++	DIE.cpp	\
++	DIEHash.cpp \
++	DwarfAccelTable.cpp \
++	DwarfCFIException.cpp \
++	DwarfDebug.cpp	\
++	DwarfException.cpp	\
++	DwarfUnit.cpp \
++	ErlangGCPrinter.cpp \
++	OcamlGCPrinter.cpp \
++	Win64Exception.cpp \
++	WinCodeViewLineTables.cpp
++
++LOCAL_MODULE:= libLLVMAsmPrinter
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES :=	\
++	AsmPrinter.cpp \
++	AsmPrinterDwarf.cpp \
++	AsmPrinterInlineAsm.cpp \
++	ARMException.cpp        \
++	DIE.cpp \
++	DIEHash.cpp \
++	DwarfAccelTable.cpp \
++	DwarfCFIException.cpp \
++	DwarfDebug.cpp  \
++	DwarfException.cpp      \
++	ErlangGCPrinter.cpp \
++	Win64Exception.cpp \
++	$(LOCAL_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMAsmPrinter
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/CodeGen/SelectionDAG/Android.mk b/lib/CodeGen/SelectionDAG/Android.mk
+new file mode 100644
+index 0000000..0e52ee3
+--- /dev/null
++++ b/lib/CodeGen/SelectionDAG/Android.mk
+@@ -0,0 +1,56 @@
++LOCAL_PATH:= $(call my-dir)
++
++codegen_selectiondag_SRC_FILES := \
++  DAGCombiner.cpp \
++  FastISel.cpp \
++  FunctionLoweringInfo.cpp \
++  InstrEmitter.cpp \
++  LegalizeDAG.cpp \
++  LegalizeFloatTypes.cpp \
++  LegalizeIntegerTypes.cpp \
++  LegalizeTypes.cpp \
++  LegalizeTypesGeneric.cpp \
++  LegalizeVectorOps.cpp \
++  LegalizeVectorTypes.cpp \
++  ResourcePriorityQueue.cpp \
++  ScheduleDAGFast.cpp \
++  ScheduleDAGRRList.cpp \
++  ScheduleDAGSDNodes.cpp \
++  ScheduleDAGVLIW.cpp \
++  SelectionDAG.cpp \
++  SelectionDAGBuilder.cpp \
++  SelectionDAGDumper.cpp \
++  SelectionDAGISel.cpp \
++  SelectionDAGPrinter.cpp \
++  TargetLowering.cpp \
++  TargetSelectionDAGInfo.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMSelectionDAG
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMSelectionDAG
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/ExecutionEngine/Android.mk b/lib/ExecutionEngine/Android.mk
+new file mode 100644
+index 0000000..9f1befd
+--- /dev/null
++++ b/lib/ExecutionEngine/Android.mk
+@@ -0,0 +1,18 @@
++LOCAL_PATH:= $(call my-dir)
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := \
++	ExecutionEngineBindings.cpp \
++	ExecutionEngine.cpp \
++	RTDyldMemoryManager.cpp \
++	TargetSelect.cpp
++
++LOCAL_MODULE:= libLLVMExecutionEngine
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/ExecutionEngine/JIT/Android.mk b/lib/ExecutionEngine/JIT/Android.mk
+new file mode 100644
+index 0000000..0466ba0
+--- /dev/null
++++ b/lib/ExecutionEngine/JIT/Android.mk
+@@ -0,0 +1,17 @@
++LOCAL_PATH:= $(call my-dir)
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES :=	\
++	JIT.cpp	\
++	JITEmitter.cpp	\
++	JITMemoryManager.cpp
++
++LOCAL_MODULE:= libLLVMJIT
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/ExecutionEngine/MCJIT/Android.mk b/lib/ExecutionEngine/MCJIT/Android.mk
+new file mode 100644
+index 0000000..0314958
+--- /dev/null
++++ b/lib/ExecutionEngine/MCJIT/Android.mk
+@@ -0,0 +1,16 @@
++LOCAL_PATH:= $(call my-dir)
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES :=	\
++	MCJIT.cpp \
++	SectionMemoryManager.cpp
++
++LOCAL_MODULE:= libLLVMMCJIT
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/ExecutionEngine/RuntimeDyld/Android.mk b/lib/ExecutionEngine/RuntimeDyld/Android.mk
+new file mode 100644
+index 0000000..e98e80a
+--- /dev/null
++++ b/lib/ExecutionEngine/RuntimeDyld/Android.mk
+@@ -0,0 +1,18 @@
++LOCAL_PATH:= $(call my-dir)
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES :=	\
++	GDBRegistrar.cpp \
++	RuntimeDyld.cpp \
++	RuntimeDyldELF.cpp \
++	RuntimeDyldMachO.cpp
++
++LOCAL_MODULE:= libLLVMRuntimeDyld
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/IR/Android.mk b/lib/IR/Android.mk
+new file mode 100644
+index 0000000..071bb04
+--- /dev/null
++++ b/lib/IR/Android.mk
+@@ -0,0 +1,79 @@
++LOCAL_PATH:= $(call my-dir)
++
++vmcore_SRC_FILES := \
++  AsmWriter.cpp \
++  Attributes.cpp \
++  AutoUpgrade.cpp \
++  BasicBlock.cpp \
++  ConstantFold.cpp \
++  ConstantRange.cpp \
++  Constants.cpp \
++  Core.cpp \
++  DataLayout.cpp \
++  DebugInfo.cpp \
++  DebugLoc.cpp \
++  DiagnosticInfo.cpp \
++  DiagnosticPrinter.cpp \
++  DIBuilder.cpp \
++  Dominators.cpp \
++  Function.cpp \
++  GVMaterializer.cpp \
++  Globals.cpp \
++  IRBuilder.cpp \
++  IRPrintingPasses.cpp \
++  InlineAsm.cpp \
++  Instruction.cpp \
++  Instructions.cpp \
++  IntrinsicInst.cpp \
++  LLVMContext.cpp \
++  LLVMContextImpl.cpp \
++  LeakDetector.cpp \
++  LegacyPassManager.cpp \
++  Mangler.cpp \
++  Metadata.cpp \
++  Module.cpp \
++  Pass.cpp \
++  PassManager.cpp \
++  PassRegistry.cpp \
++  Type.cpp \
++  TypeFinder.cpp \
++  Use.cpp \
++  User.cpp \
++  Value.cpp \
++  ValueSymbolTable.cpp \
++  ValueTypes.cpp \
++  Verifier.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++REQUIRES_RTTI := 1
++
++LOCAL_SRC_FILES := $(vmcore_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMCore
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++include $(CLEAR_VARS)
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++
++REQUIRES_RTTI := 1
++
++LOCAL_SRC_FILES := $(vmcore_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMCore
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/IRReader/Android.mk b/lib/IRReader/Android.mk
+new file mode 100644
+index 0000000..d620521
+--- /dev/null
++++ b/lib/IRReader/Android.mk
+@@ -0,0 +1,38 @@
++LOCAL_PATH:= $(call my-dir)
++
++irreader_SRC_FILES := \
++  IRReader.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++REQUIRES_RTTI := 1
++
++LOCAL_SRC_FILES := $(irreader_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMIRReader
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++REQUIRES_RTTI := 1
++
++LOCAL_SRC_FILES := $(irreader_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMIRReader
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+\ No newline at end of file
+diff --git a/lib/Linker/Android.mk b/lib/Linker/Android.mk
+new file mode 100644
+index 0000000..161b2ae
+--- /dev/null
++++ b/lib/Linker/Android.mk
+@@ -0,0 +1,32 @@
++LOCAL_PATH:= $(call my-dir)
++
++linker_SRC_FILES := \
++  LinkModules.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_SRC_FILES := $(linker_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMLinker
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(linker_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMLinker
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/MC/Android.mk b/lib/MC/Android.mk
+new file mode 100644
+index 0000000..abf346b
+--- /dev/null
++++ b/lib/MC/Android.mk
+@@ -0,0 +1,78 @@
++LOCAL_PATH:= $(call my-dir)
++
++mc_SRC_FILES := \
++  ELFObjectWriter.cpp \
++  MachObjectWriter.cpp \
++  MCAsmBackend.cpp \
++  MCAsmInfo.cpp \
++  MCAsmInfoCOFF.cpp \
++  MCAsmInfoDarwin.cpp \
++  MCAsmInfoELF.cpp \
++  MCAsmStreamer.cpp \
++  MCAssembler.cpp \
++  MCCodeEmitter.cpp \
++  MCCodeGenInfo.cpp \
++  MCContext.cpp \
++  MCDisassembler.cpp \
++  MCDwarf.cpp \
++  MCELF.cpp \
++  MCELFObjectTargetWriter.cpp \
++  MCELFStreamer.cpp \
++  MCExpr.cpp \
++  MCExternalSymbolizer.cpp \
++  MCFixup.cpp \
++  MCInst.cpp \
++  MCInstPrinter.cpp \
++  MCInstrAnalysis.cpp \
++  MCLabel.cpp \
++  MCLinkerOptimizationHint.cpp \
++  MCMachObjectTargetWriter.cpp \
++  MCMachOStreamer.cpp \
++  MCNullStreamer.cpp \
++  MCObjectFileInfo.cpp \
++  MCObjectStreamer.cpp \
++  MCObjectWriter.cpp \
++  MCRegisterInfo.cpp \
++  MCRelocationInfo.cpp \
++  MCSection.cpp \
++  MCSectionCOFF.cpp	\
++  MCSectionELF.cpp \
++  MCSectionMachO.cpp \
++  MCStreamer.cpp \
++  MCSubtargetInfo.cpp \
++  MCSymbol.cpp \
++  MCSymbolizer.cpp \
++  MCValue.cpp \
++  MCWin64EH.cpp \
++  WinCOFFObjectWriter.cpp \
++  WinCOFFStreamer.cpp \
++  SubtargetFeature.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(mc_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMMC
++
++LOCAL_MODULE_TAGS := optional
++
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++include $(CLEAR_VARS)
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++
++LOCAL_SRC_FILES := $(mc_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMMC
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/MC/MCDisassembler/Android.mk b/lib/MC/MCDisassembler/Android.mk
+new file mode 100644
+index 0000000..7f73df3
+--- /dev/null
++++ b/lib/MC/MCDisassembler/Android.mk
+@@ -0,0 +1,15 @@
++LOCAL_PATH:= $(call my-dir)
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES :=	\
++	Disassembler.cpp
++
++LOCAL_MODULE:= libLLVMMCDisassembler
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/MC/MCParser/Android.mk b/lib/MC/MCParser/Android.mk
+new file mode 100644
+index 0000000..505a12b
+--- /dev/null
++++ b/lib/MC/MCParser/Android.mk
+@@ -0,0 +1,40 @@
++LOCAL_PATH:= $(call my-dir)
++
++mc_parser_SRC_FILES := \
++  AsmLexer.cpp \
++  AsmParser.cpp \
++  COFFAsmParser.cpp \
++  DarwinAsmParser.cpp \
++  ELFAsmParser.cpp \
++  MCAsmLexer.cpp \
++  MCAsmParser.cpp \
++  MCAsmParserExtension.cpp \
++  MCTargetAsmParser.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMMCParser
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++include $(CLEAR_VARS)
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++
++LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMMCParser
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Object/Android.mk b/lib/Object/Android.mk
+new file mode 100644
+index 0000000..7dfa44f
+--- /dev/null
++++ b/lib/Object/Android.mk
+@@ -0,0 +1,45 @@
++LOCAL_PATH := $(call my-dir)
++
++object_SRC_FILES := \
++  Archive.cpp \
++  Binary.cpp \
++  COFFObjectFile.cpp \
++  ELF.cpp \
++  ELFObjectFile.cpp \
++  Error.cpp \
++  IRObjectFile.cpp \
++  MachOObjectFile.cpp \
++  MachOUniversal.cpp \
++  Object.cpp \
++  ObjectFile.cpp \
++  SymbolicFile.cpp
++
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMObject
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(object_SRC_FILES)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_MODULE:= libLLVMObject
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(object_SRC_FILES)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Option/Android.mk b/lib/Option/Android.mk
+new file mode 100644
+index 0000000..8680ce4
+--- /dev/null
++++ b/lib/Option/Android.mk
+@@ -0,0 +1,42 @@
++LOCAL_PATH:= $(call my-dir)
++
++option_SRC_FILES := \
++    Arg.cpp \
++    ArgList.cpp \
++    Option.cpp \
++    OptTable.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++# FIXME: This only requires RTTI because tblgen uses it.  Fix that.
++REQUIRES_RTTI := 1
++
++LOCAL_SRC_FILES := $(option_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMOption
++
++LOCAL_CFLAGS := -D__android__
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++include $(CLEAR_VARS)
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++
++LOCAL_SRC_FILES := $(option_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMOption
++
++LOCAL_CFLAGS := -D__android__
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Support/Android.mk b/lib/Support/Android.mk
+new file mode 100644
+index 0000000..165305e
+--- /dev/null
++++ b/lib/Support/Android.mk
+@@ -0,0 +1,120 @@
++LOCAL_PATH:= $(call my-dir)
++
++support_SRC_FILES := \
++  Allocator.cpp \
++  APFloat.cpp \
++  APInt.cpp \
++  APSInt.cpp \
++  ARMBuildAttrs.cpp \
++  Atomic.cpp \
++  BlockFrequency.cpp \
++  BranchProbability.cpp \
++  CommandLine.cpp \
++  Compression.cpp \
++  ConvertUTF.c \
++  ConvertUTFWrapper.cpp \
++  CrashRecoveryContext.cpp \
++  DAGDeltaAlgorithm.cpp \
++  DataStream.cpp \
++  DataExtractor.cpp \
++  Debug.cpp \
++  DeltaAlgorithm.cpp \
++  Dwarf.cpp \
++  DynamicLibrary.cpp \
++  Errno.cpp \
++  ErrorHandling.cpp \
++  FileUtilities.cpp \
++  FoldingSet.cpp \
++  FormattedStream.cpp \
++  GraphWriter.cpp \
++  Hashing.cpp \
++  Host.cpp \
++  IntervalMap.cpp \
++  IntEqClasses.cpp \
++  IntrusiveRefCntPtr.cpp \
++  IsInf.cpp \
++  IsNAN.cpp \
++  LEB128.cpp \
++  LineIterator.cpp \
++  Locale.cpp \
++  LockFileManager.cpp \
++  MD5.cpp \
++  ManagedStatic.cpp \
++  Memory.cpp \
++  MemoryBuffer.cpp \
++  MemoryObject.cpp \
++  Mutex.cpp \
++  Path.cpp \
++  PluginLoader.cpp \
++  PrettyStackTrace.cpp \
++  Process.cpp \
++  Program.cpp \
++  Regex.cpp \
++  RWMutex.cpp \
++  SearchForAddressOfSpecialSymbol.cpp \
++  Signals.cpp \
++  SmallPtrSet.cpp \
++  SmallVector.cpp \
++  SourceMgr.cpp \
++  Statistic.cpp \
++  StreamableMemoryObject.cpp \
++  StringExtras.cpp \
++  StringMap.cpp \
++  StringPool.cpp \
++  StringRef.cpp \
++  SystemUtils.cpp \
++  TargetRegistry.cpp \
++  Threading.cpp \
++  ThreadLocal.cpp \
++  Timer.cpp \
++  TimeValue.cpp \
++  ToolOutputFile.cpp \
++  Triple.cpp \
++  Twine.cpp \
++  Unicode.cpp \
++  Valgrind.cpp \
++  Watchdog.cpp \
++  circular_raw_ostream.cpp \
++  raw_os_ostream.cpp \
++  raw_ostream.cpp \
++  regcomp.c \
++  regerror.c \
++  regexec.c \
++  regfree.c \
++  regstrlcpy.c \
++  system_error.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++# FIXME: This only requires RTTI because tblgen uses it.  Fix that.
++REQUIRES_RTTI := 1
++
++LOCAL_SRC_FILES := $(support_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMSupport
++
++LOCAL_CFLAGS := -D__android__
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(support_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMSupport
++
++LOCAL_CFLAGS := -D__android__
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/TableGen/Android.mk b/lib/TableGen/Android.mk
+new file mode 100644
+index 0000000..1f01ef7
+--- /dev/null
++++ b/lib/TableGen/Android.mk
+@@ -0,0 +1,39 @@
++LOCAL_PATH:= $(call my-dir)
++
++libtablegen_SRC_FILES := \
++  Error.cpp \
++  Main.cpp \
++  Record.cpp \
++  StringMatcher.cpp \
++  TableGenBackend.cpp \
++  TGLexer.cpp \
++  TGParser.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(libtablegen_SRC_FILES)
++LOCAL_MODULE:= libLLVMTableGen
++
++LOCAL_MODULE_TAGS := optional
++
++REQUIRES_EH := 1
++REQUIRES_RTTI := 1
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++## For the device
++## =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++#include $(CLEAR_VARS)
++#
++#LOCAL_SRC_FILES := $(libtablegen_SRC_FILES)
++#LOCAL_MODULE:= libLLVMTableGen
++#
++#LOCAL_MODULE_TAGS := optional
++#
++#include $(LLVM_DEVICE_BUILD_MK)
++#include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/AArch64/Android.mk b/lib/Target/AArch64/Android.mk
+new file mode 100644
+index 0000000..144c2d3
+--- /dev/null
++++ b/lib/Target/AArch64/Android.mk
+@@ -0,0 +1,67 @@
++LOCAL_PATH := $(call my-dir)
++
++arm64_codegen_TBLGEN_TABLES := \
++  AArch64GenRegisterInfo.inc \
++  AArch64GenInstrInfo.inc \
++  AArch64GenCodeEmitter.inc \
++  AArch64GenMCCodeEmitter.inc \
++  AArch64GenMCPseudoLowering.inc \
++  AArch64GenAsmWriter.inc \
++  AArch64GenAsmMatcher.inc \
++  AArch64GenDAGISel.inc \
++  AArch64GenFastISel.inc \
++  AArch64GenCallingConv.inc \
++  AArch64GenSubtargetInfo.inc \
++  AArch64GenDisassemblerTables.inc
++
++arm64_codegen_SRC_FILES := \
++  AArch64AsmPrinter.cpp \
++  AArch64FrameLowering.cpp \
++  AArch64ISelDAGToDAG.cpp \
++  AArch64MachineFunctionInfo.cpp \
++  AArch64RegisterInfo.cpp \
++  AArch64Subtarget.cpp \
++  AArch64TargetObjectFile.cpp \
++  AArch64BranchFixupPass.cpp \
++  AArch64InstrInfo.cpp \
++  AArch64ISelLowering.cpp \
++  AArch64MCInstLower.cpp \
++  AArch64SelectionDAGInfo.cpp \
++  AArch64TargetMachine.cpp \
++  AArch64TargetTransformInfo.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARM64CodeGen
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(arm64_codegen_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
++TBLGEN_TABLES := $(arm64_codegen_TBLGEN_TABLES)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARM64CodeGen
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(arm64_codegen_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
++TBLGEN_TABLES := $(arm64_codegen_TBLGEN_TABLES)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/AArch64/AsmParser/Android.mk b/lib/Target/AArch64/AsmParser/Android.mk
+new file mode 100644
+index 0000000..0588511
+--- /dev/null
++++ b/lib/Target/AArch64/AsmParser/Android.mk
+@@ -0,0 +1,63 @@
++LOCAL_PATH := $(call my-dir)
++
++#===---------------------------------------------------------------===
++# libARMAsmParser (common)
++#===---------------------------------------------------------------===
++
++arm64_asm_parser_SRC_FILES := \
++  AArch64AsmParser.cpp
++
++arm64_asm_parser_TBLGEN_TABLES := \
++  AArch64GenInstrInfo.inc \
++  AArch64GenRegisterInfo.inc \
++  AArch64GenAsmMatcher.inc \
++  AArch64GenSubtargetInfo.inc
++
++arm64_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++arm64_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
++
++
++#===---------------------------------------------------------------===
++# libARM64AsmParser (host)
++#===---------------------------------------------------------------===
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARM64AsmParser
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(arm64_asm_parser_SRC_FILES)
++LOCAL_C_INCLUDES += $(arm64_asm_parser_C_INCLUDES)
++TBLGEN_TABLES := $(arm64_asm_parser_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(arm64_asm_parser_TBLGEN_TD_DIR)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++ifneq (,$(filter windows darwin,$(HOST_OS)))
++# Override the default optimization level to work around taking forever (~50m)
++# to compile ARM64AsmParser.cpp on Mac with gcc 4.2,
++# or on Linux with mingw32msvc-gcc 4.2, which is used to cross-compile
++# the win_sdk.
++LOCAL_CFLAGS += -O0
++endif
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++
++#===---------------------------------------------------------------===
++# libARM64AsmParser (target)
++#===---------------------------------------------------------------===
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARM64AsmParser
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(arm64_asm_parser_SRC_FILES)
++LOCAL_C_INCLUDES += $(arm64_asm_parser_C_INCLUDES)
++TBLGEN_TABLES := $(arm64_asm_parser_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(arm64_asm_parser_TBLGEN_TD_DIR)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/AArch64/Disassembler/Android.mk b/lib/Target/AArch64/Disassembler/Android.mk
+new file mode 100644
+index 0000000..fcc53ad
+--- /dev/null
++++ b/lib/Target/AArch64/Disassembler/Android.mk
+@@ -0,0 +1,55 @@
++LOCAL_PATH := $(call my-dir)
++
++arm64_disassembler_TBLGEN_TABLES := \
++  AArch64GenDisassemblerTables.inc \
++  AArch64GenInstrInfo.inc \
++  AArch64GenSubtargetInfo.inc \
++  AArch64GenRegisterInfo.inc
++
++arm64_disassembler_SRC_FILES := \
++  AArch64Disassembler.cpp
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm64_disassembler_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm64_disassembler_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARM64Disassembler
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm64_disassembler_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm64_disassembler_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARM64Disassembler
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
+diff --git a/lib/Target/AArch64/InstPrinter/Android.mk b/lib/Target/AArch64/InstPrinter/Android.mk
+new file mode 100644
+index 0000000..ac9b0df
+--- /dev/null
++++ b/lib/Target/AArch64/InstPrinter/Android.mk
+@@ -0,0 +1,57 @@
++LOCAL_PATH := $(call my-dir)
++
++arm64_asm_printer_TBLGEN_TABLES := \
++  AArch64GenAsmWriter.inc \
++  AArch64GenRegisterInfo.inc \
++  AArch64GenSubtargetInfo.inc \
++  AArch64GenInstrInfo.inc
++
++arm64_asm_printer_SRC_FILES := \
++  AArch64InstPrinter.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm64_asm_printer_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm64_asm_printer_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMARM64AsmPrinter
++
++LOCAL_C_INCLUDES += \
++    $(LOCAL_PATH)/..
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm64_asm_printer_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm64_asm_printer_SRC_FILES)
++
++LOCAL_C_INCLUDES+= \
++    $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARM64AsmPrinter
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
++
+diff --git a/lib/Target/AArch64/MCTargetDesc/Android.mk b/lib/Target/AArch64/MCTargetDesc/Android.mk
+new file mode 100644
+index 0000000..edcf1f2
+--- /dev/null
++++ b/lib/Target/AArch64/MCTargetDesc/Android.mk
+@@ -0,0 +1,57 @@
++LOCAL_PATH := $(call my-dir)
++
++arm64_mc_desc_TBLGEN_TABLES := \
++  AArch64GenRegisterInfo.inc \
++  AArch64GenInstrInfo.inc \
++  AArch64GenMCCodeEmitter.inc \
++  AArch64GenSubtargetInfo.inc
++
++arm64_mc_desc_SRC_FILES := \
++  AArch64AsmBackend.cpp \
++  AArch64ELFObjectWriter.cpp \
++  AArch64ELFStreamer.cpp \
++  AArch64MCAsmInfo.cpp \
++  AArch64MCCodeEmitter.cpp \
++  AArch64MCExpr.cpp \
++  AArch64MCTargetDesc.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++
++LOCAL_MODULE:= libLLVMARM64Desc
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(arm64_mc_desc_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++TBLGEN_TABLES := $(arm64_mc_desc_TBLGEN_TABLES)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARM64Desc
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(arm64_mc_desc_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++TBLGEN_TABLES := $(arm64_mc_desc_TBLGEN_TABLES)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/AArch64/TargetInfo/Android.mk b/lib/Target/AArch64/TargetInfo/Android.mk
+new file mode 100644
+index 0000000..cc650f6
+--- /dev/null
++++ b/lib/Target/AArch64/TargetInfo/Android.mk
+@@ -0,0 +1,55 @@
++LOCAL_PATH := $(call my-dir)
++
++arm64_target_info_TBLGEN_TABLES := \
++  AArch64GenSubtargetInfo.inc \
++  AArch64GenRegisterInfo.inc \
++  AArch64GenInstrInfo.inc
++
++arm64_target_info_SRC_FILES := \
++  AArch64TargetInfo.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm64_target_info_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm64_target_info_SRC_FILES)
++
++LOCAL_C_INCLUDES +=	\
++	$(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARM64Info
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm64_target_info_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm64_target_info_SRC_FILES)
++
++LOCAL_C_INCLUDES +=	\
++	$(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARM64Info
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/AArch64/Utils/Android.mk b/lib/Target/AArch64/Utils/Android.mk
+new file mode 100644
+index 0000000..b8bf795
+--- /dev/null
++++ b/lib/Target/AArch64/Utils/Android.mk
+@@ -0,0 +1,36 @@
++LOCAL_PATH := $(call my-dir)
++
++arm64_utils_SRC_FILES := \
++  AArch64BaseInfo.cpp
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(arm64_utils_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARM64Utils
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(arm64_utils_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARM64Utils
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/Target/ARM/Android.mk b/lib/Target/ARM/Android.mk
+new file mode 100644
+index 0000000..4be95aa
+--- /dev/null
++++ b/lib/Target/ARM/Android.mk
+@@ -0,0 +1,87 @@
++LOCAL_PATH := $(call my-dir)
++
++arm_codegen_TBLGEN_TABLES := \
++  ARMGenRegisterInfo.inc \
++  ARMGenInstrInfo.inc \
++  ARMGenCodeEmitter.inc \
++  ARMGenMCCodeEmitter.inc \
++  ARMGenMCPseudoLowering.inc \
++  ARMGenAsmWriter.inc \
++  ARMGenAsmMatcher.inc \
++  ARMGenDAGISel.inc \
++  ARMGenFastISel.inc \
++  ARMGenCallingConv.inc \
++  ARMGenSubtargetInfo.inc \
++  ARMGenDisassemblerTables.inc
++
++arm_codegen_SRC_FILES := \
++  A15SDOptimizer.cpp \
++  ARMAsmPrinter.cpp \
++  ARMAtomicExpandPass.cpp \
++  ARMBaseInstrInfo.cpp \
++  ARMBaseRegisterInfo.cpp \
++  ARMCodeEmitter.cpp \
++  ARMConstantIslandPass.cpp \
++  ARMConstantPoolValue.cpp \
++  ARMExpandPseudoInsts.cpp \
++  ARMFastISel.cpp \
++  ARMFrameLowering.cpp \
++  ARMHazardRecognizer.cpp \
++  ARMISelDAGToDAG.cpp \
++  ARMISelLowering.cpp \
++  ARMInstrInfo.cpp \
++  ARMJITInfo.cpp \
++  ARMLoadStoreOptimizer.cpp \
++  ARMMCInstLower.cpp \
++  ARMMachineFunctionInfo.cpp \
++  ARMOptimizeBarriersPass.cpp \
++  ARMRegisterInfo.cpp \
++  ARMSelectionDAGInfo.cpp \
++  ARMSubtarget.cpp \
++  ARMTargetMachine.cpp \
++  ARMTargetObjectFile.cpp \
++  ARMTargetTransformInfo.cpp \
++  MLxExpansionPass.cpp \
++  Thumb1FrameLowering.cpp \
++  Thumb1InstrInfo.cpp \
++  Thumb1RegisterInfo.cpp \
++  Thumb2ITBlockPass.cpp \
++  Thumb2InstrInfo.cpp \
++  Thumb2RegisterInfo.cpp \
++  Thumb2SizeReduction.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARMCodeGen
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
++TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARMCodeGen
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
++TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/ARM/AsmParser/Android.mk b/lib/Target/ARM/AsmParser/Android.mk
+new file mode 100644
+index 0000000..5f88cc3
+--- /dev/null
++++ b/lib/Target/ARM/AsmParser/Android.mk
+@@ -0,0 +1,63 @@
++LOCAL_PATH := $(call my-dir)
++
++#===---------------------------------------------------------------===
++# libARMAsmParser (common)
++#===---------------------------------------------------------------===
++
++arm_asm_parser_SRC_FILES := \
++  ARMAsmParser.cpp
++
++arm_asm_parser_TBLGEN_TABLES := \
++  ARMGenInstrInfo.inc \
++  ARMGenRegisterInfo.inc \
++  ARMGenAsmMatcher.inc \
++  ARMGenSubtargetInfo.inc
++
++arm_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++arm_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
++
++
++#===---------------------------------------------------------------===
++# libARMAsmParser (host)
++#===---------------------------------------------------------------===
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARMAsmParser
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES)
++LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES)
++TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++ifneq (,$(filter windows darwin,$(HOST_OS)))
++# Override the default optimization level to work around taking forever (~50m)
++# to compile ARMAsmParser.cpp on Mac with gcc 4.2,
++# or on Linux with mingw32msvc-gcc 4.2, which is used to cross-compile
++# the win_sdk.
++LOCAL_CFLAGS += -O0
++endif
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++
++#===---------------------------------------------------------------===
++# libARMAsmParser (target)
++#===---------------------------------------------------------------===
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARMAsmParser
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES)
++LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES)
++TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/ARM/Disassembler/Android.mk b/lib/Target/ARM/Disassembler/Android.mk
+new file mode 100644
+index 0000000..3db61a5
+--- /dev/null
++++ b/lib/Target/ARM/Disassembler/Android.mk
+@@ -0,0 +1,55 @@
++LOCAL_PATH := $(call my-dir)
++
++arm_disassembler_TBLGEN_TABLES := \
++  ARMGenDisassemblerTables.inc \
++  ARMGenInstrInfo.inc \
++  ARMGenSubtargetInfo.inc \
++  ARMGenRegisterInfo.inc
++
++arm_disassembler_SRC_FILES := \
++  ARMDisassembler.cpp
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARMDisassembler
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARMDisassembler
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
+diff --git a/lib/Target/ARM/InstPrinter/Android.mk b/lib/Target/ARM/InstPrinter/Android.mk
+new file mode 100644
+index 0000000..cefed76
+--- /dev/null
++++ b/lib/Target/ARM/InstPrinter/Android.mk
+@@ -0,0 +1,57 @@
++LOCAL_PATH := $(call my-dir)
++
++arm_asm_printer_TBLGEN_TABLES := \
++  ARMGenAsmWriter.inc \
++  ARMGenRegisterInfo.inc \
++  ARMGenSubtargetInfo.inc \
++  ARMGenInstrInfo.inc
++
++arm_asm_printer_SRC_FILES := \
++  ARMInstPrinter.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMARMAsmPrinter
++
++LOCAL_C_INCLUDES += \
++    $(LOCAL_PATH)/..
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES)
++
++LOCAL_C_INCLUDES+= \
++    $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARMAsmPrinter
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
++
+diff --git a/lib/Target/ARM/MCTargetDesc/Android.mk b/lib/Target/ARM/MCTargetDesc/Android.mk
+new file mode 100644
+index 0000000..074d29e
+--- /dev/null
++++ b/lib/Target/ARM/MCTargetDesc/Android.mk
+@@ -0,0 +1,61 @@
++LOCAL_PATH := $(call my-dir)
++
++arm_mc_desc_TBLGEN_TABLES := \
++  ARMGenRegisterInfo.inc \
++  ARMGenInstrInfo.inc \
++  ARMGenMCCodeEmitter.inc \
++  ARMGenSubtargetInfo.inc
++
++arm_mc_desc_SRC_FILES := \
++  ARMAsmBackend.cpp \
++  ARMELFObjectWriter.cpp \
++  ARMELFStreamer.cpp \
++  ARMMCAsmInfo.cpp \
++  ARMMCCodeEmitter.cpp \
++  ARMMCExpr.cpp \
++  ARMMCTargetDesc.cpp \
++  ARMMachObjectWriter.cpp \
++  ARMMachORelocationInfo.cpp \
++  ARMTargetStreamer.cpp \
++  ARMUnwindOpAsm.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++
++LOCAL_MODULE:= libLLVMARMDesc
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMARMDesc
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/ARM/TargetInfo/Android.mk b/lib/Target/ARM/TargetInfo/Android.mk
+new file mode 100644
+index 0000000..e31c2b8
+--- /dev/null
++++ b/lib/Target/ARM/TargetInfo/Android.mk
+@@ -0,0 +1,55 @@
++LOCAL_PATH := $(call my-dir)
++
++arm_target_info_TBLGEN_TABLES := \
++  ARMGenSubtargetInfo.inc \
++  ARMGenRegisterInfo.inc \
++  ARMGenInstrInfo.inc
++
++arm_target_info_SRC_FILES := \
++  ARMTargetInfo.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES)
++
++LOCAL_C_INCLUDES +=	\
++	$(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARMInfo
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES)
++
++LOCAL_C_INCLUDES +=	\
++	$(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMARMInfo
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/Android.mk b/lib/Target/Android.mk
+new file mode 100644
+index 0000000..1b43ce4
+--- /dev/null
++++ b/lib/Target/Android.mk
+@@ -0,0 +1,39 @@
++LOCAL_PATH:= $(call my-dir)
++
++target_SRC_FILES := \
++  Target.cpp \
++  TargetIntrinsicInfo.cpp \
++  TargetJITInfo.cpp \
++  TargetLibraryInfo.cpp \
++  TargetLoweringObjectFile.cpp \
++  TargetMachineC.cpp \
++  TargetMachine.cpp \
++  TargetSubtargetInfo.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(target_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMTarget
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(target_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMTarget
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/Mips/Android.mk b/lib/Target/Mips/Android.mk
+new file mode 100644
+index 0000000..74b8a3b
+--- /dev/null
++++ b/lib/Target/Mips/Android.mk
+@@ -0,0 +1,85 @@
++LOCAL_PATH := $(call my-dir)
++
++mips_codegen_TBLGEN_TABLES := \
++  MipsGenRegisterInfo.inc \
++  MipsGenInstrInfo.inc \
++  MipsGenCodeEmitter.inc \
++  MipsGenMCCodeEmitter.inc \
++  MipsGenMCPseudoLowering.inc \
++  MipsGenAsmWriter.inc \
++  MipsGenDAGISel.inc \
++  MipsGenCallingConv.inc \
++  MipsGenSubtargetInfo.inc
++
++mips_codegen_SRC_FILES := \
++  Mips16FrameLowering.cpp \
++  Mips16HardFloat.cpp \
++  Mips16HardFloatInfo.cpp \
++  Mips16ISelDAGToDAG.cpp \
++  Mips16ISelLowering.cpp \
++  Mips16InstrInfo.cpp \
++  Mips16RegisterInfo.cpp \
++  MipsAnalyzeImmediate.cpp \
++  MipsAsmPrinter.cpp \
++  MipsCodeEmitter.cpp \
++  MipsConstantIslandPass.cpp \
++  MipsDelaySlotFiller.cpp \
++  MipsFrameLowering.cpp \
++  MipsInstrInfo.cpp \
++  MipsISelDAGToDAG.cpp \
++  MipsISelLowering.cpp \
++  MipsJITInfo.cpp \
++  MipsLongBranch.cpp \
++  MipsMachineFunction.cpp \
++  MipsMCInstLower.cpp \
++  MipsModuleISelDAGToDAG.cpp \
++  MipsOs16.cpp \
++  MipsOptimizePICCall.cpp \
++  MipsRegisterInfo.cpp \
++  MipsSEFrameLowering.cpp \
++  MipsSEISelDAGToDAG.cpp \
++  MipsSEISelLowering.cpp \
++  MipsSEInstrInfo.cpp \
++  MipsSERegisterInfo.cpp \
++  MipsSelectionDAGInfo.cpp \
++  MipsSubtarget.cpp \
++  MipsTargetMachine.cpp \
++  MipsTargetObjectFile.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsCodeGen
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
++
++TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsCodeGen
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
++
++TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/Mips/AsmParser/Android.mk b/lib/Target/Mips/AsmParser/Android.mk
+new file mode 100644
+index 0000000..7d8eec1
+--- /dev/null
++++ b/lib/Target/Mips/AsmParser/Android.mk
+@@ -0,0 +1,56 @@
++LOCAL_PATH := $(call my-dir)
++
++#===---------------------------------------------------------------===
++# libLLVMMipsAsmParser (common)
++#===---------------------------------------------------------------===
++
++mips_asm_parser_SRC_FILES := \
++  MipsAsmParser.cpp
++
++mips_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
++
++mips_asm_parser_TBLGEN_TABLES := \
++  MipsGenAsmMatcher.inc \
++  MipsGenInstrInfo.inc \
++  MipsGenRegisterInfo.inc \
++  MipsGenSubtargetInfo.inc
++
++mips_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++
++#===---------------------------------------------------------------===
++# libLLVMMipsAsmParser (host)
++#===---------------------------------------------------------------===
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsAsmParser
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES)
++LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES)
++TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++
++#===---------------------------------------------------------------===
++# libLLVMMipsAsmParser (target)
++#===---------------------------------------------------------------===
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsAsmParser
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES)
++LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES)
++TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/Mips/Disassembler/Android.mk b/lib/Target/Mips/Disassembler/Android.mk
+new file mode 100644
+index 0000000..20fd87a
+--- /dev/null
++++ b/lib/Target/Mips/Disassembler/Android.mk
+@@ -0,0 +1,48 @@
++LOCAL_PATH := $(call my-dir)
++
++mips_disassembler_TBLGEN_TABLES := \
++  MipsGenDisassemblerTables.inc \
++  MipsGenInstrInfo.inc \
++  MipsGenRegisterInfo.inc \
++  MipsGenSubtargetInfo.inc
++
++mips_disassembler_SRC_FILES := \
++  MipsDisassembler.cpp
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsDisassembler
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES)
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsDisassembler
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES)
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/Target/Mips/InstPrinter/Android.mk b/lib/Target/Mips/InstPrinter/Android.mk
+new file mode 100644
+index 0000000..f4f3a4f
+--- /dev/null
++++ b/lib/Target/Mips/InstPrinter/Android.mk
+@@ -0,0 +1,48 @@
++LOCAL_PATH := $(call my-dir)
++
++mips_asm_printer_TBLGEN_TABLES := \
++  MipsGenAsmWriter.inc \
++  MipsGenRegisterInfo.inc \
++  MipsGenSubtargetInfo.inc \
++  MipsGenInstrInfo.inc
++
++mips_asm_printer_SRC_FILES := \
++  MipsInstPrinter.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsAsmPrinter
++LOCAL_MODULE_TAGS := optional
++
++TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES)
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsAsmPrinter
++LOCAL_MODULE_TAGS := optional
++
++TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES)
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/Mips/MCTargetDesc/Android.mk b/lib/Target/Mips/MCTargetDesc/Android.mk
+new file mode 100644
+index 0000000..7ee11a1
+--- /dev/null
++++ b/lib/Target/Mips/MCTargetDesc/Android.mk
+@@ -0,0 +1,58 @@
++LOCAL_PATH := $(call my-dir)
++
++mips_mc_desc_TBLGEN_TABLES := \
++  MipsGenRegisterInfo.inc \
++  MipsGenInstrInfo.inc \
++  MipsGenMCCodeEmitter.inc \
++  MipsGenSubtargetInfo.inc
++
++mips_mc_desc_SRC_FILES := \
++  MipsAsmBackend.cpp \
++  MipsELFObjectWriter.cpp \
++  MipsELFStreamer.cpp \
++  MipsMCAsmInfo.cpp \
++  MipsMCCodeEmitter.cpp \
++  MipsMCExpr.cpp \
++  MipsMCTargetDesc.cpp \
++  MipsNaClELFStreamer.cpp \
++  MipsTargetStreamer.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsDesc
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsDesc
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/Mips/TargetInfo/Android.mk b/lib/Target/Mips/TargetInfo/Android.mk
+new file mode 100644
+index 0000000..173d05b
+--- /dev/null
++++ b/lib/Target/Mips/TargetInfo/Android.mk
+@@ -0,0 +1,47 @@
++LOCAL_PATH := $(call my-dir)
++
++mips_target_info_TBLGEN_TABLES := \
++  MipsGenInstrInfo.inc \
++  MipsGenRegisterInfo.inc \
++  MipsGenSubtargetInfo.inc
++
++mips_target_info_SRC_FILES := \
++  MipsTargetInfo.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsInfo
++LOCAL_MODULE_TAGS := optional
++
++TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES)
++LOCAL_C_INCLUDES +=	$(LOCAL_PATH)/..
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMMipsInfo
++LOCAL_MODULE_TAGS := optional
++
++TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES)
++LOCAL_C_INCLUDES +=	$(LOCAL_PATH)/..
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+\ No newline at end of file
+diff --git a/lib/Target/X86/Android.mk b/lib/Target/X86/Android.mk
+new file mode 100644
+index 0000000..73031de
+--- /dev/null
++++ b/lib/Target/X86/Android.mk
+@@ -0,0 +1,72 @@
++LOCAL_PATH := $(call my-dir)
++
++x86_codegen_TBLGEN_TABLES := \
++  X86GenAsmWriter.inc \
++  X86GenAsmWriter1.inc \
++  X86GenRegisterInfo.inc \
++  X86GenInstrInfo.inc \
++  X86GenDAGISel.inc \
++  X86GenFastISel.inc \
++  X86GenSubtargetInfo.inc \
++  X86GenCallingConv.inc
++
++x86_codegen_SRC_FILES := \
++  X86AsmPrinter.cpp \
++  X86COFFMachineModuleInfo.cpp \
++  X86CodeEmitter.cpp \
++  X86FastISel.cpp \
++  X86FixupLEAs.cpp \
++  X86FloatingPoint.cpp \
++  X86FrameLowering.cpp \
++  X86ISelDAGToDAG.cpp \
++  X86ISelLowering.cpp \
++  X86InstrInfo.cpp \
++  X86JITInfo.cpp \
++  X86MachineFunctionInfo.cpp \
++  X86MCInstLower.cpp \
++  X86PadShortFunction.cpp \
++  X86RegisterInfo.cpp \
++  X86SelectionDAGInfo.cpp \
++  X86Subtarget.cpp \
++  X86TargetMachine.cpp \
++  X86TargetObjectFile.cpp \
++  X86TargetTransformInfo.cpp \
++  X86VZeroUpper.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES)
++
++LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMX86CodeGen
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES)
++
++LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMX86CodeGen
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/X86/AsmParser/Android.mk b/lib/Target/X86/AsmParser/Android.mk
+new file mode 100644
+index 0000000..4235cb1
+--- /dev/null
++++ b/lib/Target/X86/AsmParser/Android.mk
+@@ -0,0 +1,59 @@
++LOCAL_PATH := $(call my-dir)
++
++# For the device only
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++x86_asm_parser_SRC_FILES :=	\
++	X86AsmInstrumentation.cpp \
++	X86AsmParser.cpp
++
++x86_asm_parser_TBLGEN_TABLES :=	\
++	X86GenAsmMatcher.inc	\
++	X86GenInstrInfo.inc	\
++	X86GenRegisterInfo.inc \
++	X86GenSubtargetInfo.inc
++
++x86_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++x86_asm_parser_C_INCLUDES +=	\
++	$(LOCAL_PATH)/..
++
++
++#===---------------------------------------------------------------===
++# libX86AsmParser (host)
++#===---------------------------------------------------------------===
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMX86AsmParser
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES)
++LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES)
++TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++
++#===---------------------------------------------------------------===
++# libX86AsmParser (target)
++#===---------------------------------------------------------------===
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMX86AsmParser
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES)
++LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES)
++TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/X86/Disassembler/Android.mk b/lib/Target/X86/Disassembler/Android.mk
+new file mode 100644
+index 0000000..3984266
+--- /dev/null
++++ b/lib/Target/X86/Disassembler/Android.mk
+@@ -0,0 +1,56 @@
++LOCAL_PATH := $(call my-dir)
++
++x86_disassembler_TBLGEN_TABLES := \
++  X86GenDisassemblerTables.inc \
++  X86GenInstrInfo.inc \
++  X86GenRegisterInfo.inc \
++  X86GenSubtargetInfo.inc
++
++x86_disassembler_SRC_FILES := \
++  X86Disassembler.cpp \
++  X86DisassemblerDecoder.c
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMX86Disassembler
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES)
++
++LOCAL_C_INCLUDES +=	\
++	$(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMX86Disassembler
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/Target/X86/InstPrinter/Android.mk b/lib/Target/X86/InstPrinter/Android.mk
+new file mode 100644
+index 0000000..9881beb
+--- /dev/null
++++ b/lib/Target/X86/InstPrinter/Android.mk
+@@ -0,0 +1,57 @@
++LOCAL_PATH := $(call my-dir)
++
++x86_instprinter_TBLGEN_TABLES := \
++  X86GenAsmWriter.inc \
++  X86GenAsmWriter1.inc \
++  X86GenInstrInfo.inc \
++  X86GenRegisterInfo.inc \
++  X86GenSubtargetInfo.inc
++
++x86_instprinter_SRC_FILES := \
++  X86ATTInstPrinter.cpp \
++  X86IntelInstPrinter.cpp \
++  X86InstComments.cpp
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMX86AsmPrinter
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE := libLLVMX86AsmPrinter
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/Target/X86/MCTargetDesc/Android.mk b/lib/Target/X86/MCTargetDesc/Android.mk
+new file mode 100644
+index 0000000..ee37c27
+--- /dev/null
++++ b/lib/Target/X86/MCTargetDesc/Android.mk
+@@ -0,0 +1,56 @@
++LOCAL_PATH := $(call my-dir)
++
++x86_mc_desc_TBLGEN_TABLES := \
++  X86GenRegisterInfo.inc \
++  X86GenInstrInfo.inc \
++  X86GenSubtargetInfo.inc
++
++x86_mc_desc_SRC_FILES := \
++  X86AsmBackend.cpp \
++  X86ELFObjectWriter.cpp \
++  X86ELFRelocationInfo.cpp \
++  X86MCTargetDesc.cpp \
++  X86MCAsmInfo.cpp \
++  X86MCCodeEmitter.cpp \
++  X86MachORelocationInfo.cpp \
++  X86MachObjectWriter.cpp \
++  X86WinCOFFObjectWriter.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++LOCAL_MODULE:= libLLVMX86Desc
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
++TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device only
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++
++LOCAL_MODULE:= libLLVMX86Desc
++LOCAL_MODULE_TAGS := optional
++
++LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES)
++LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
++TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES)
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/X86/TargetInfo/Android.mk b/lib/Target/X86/TargetInfo/Android.mk
+new file mode 100644
+index 0000000..1a6c902
+--- /dev/null
++++ b/lib/Target/X86/TargetInfo/Android.mk
+@@ -0,0 +1,55 @@
++LOCAL_PATH := $(call my-dir)
++
++x86_target_info_TBLGEN_TABLES := \
++  X86GenRegisterInfo.inc \
++  X86GenSubtargetInfo.inc \
++  X86GenInstrInfo.inc
++
++x86_target_info_SRC_FILES := \
++  X86TargetInfo.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES)
++
++LOCAL_C_INCLUDES +=	\
++	$(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMX86Info
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++include $(CLEAR_TBLGEN_VARS)
++
++TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES)
++
++TBLGEN_TD_DIR := $(LOCAL_PATH)/..
++
++LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES)
++
++LOCAL_C_INCLUDES +=     \
++        $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMX86Info
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_TBLGEN_RULES_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Target/X86/Utils/Android.mk b/lib/Target/X86/Utils/Android.mk
+new file mode 100644
+index 0000000..e0c4797
+--- /dev/null
++++ b/lib/Target/X86/Utils/Android.mk
+@@ -0,0 +1,36 @@
++LOCAL_PATH := $(call my-dir)
++
++x86_utils_SRC_FILES := \
++  X86ShuffleDecode.cpp
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(x86_utils_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMX86Utils
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(x86_utils_SRC_FILES)
++
++LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
++
++LOCAL_MODULE:= libLLVMX86Utils
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
+diff --git a/lib/Transforms/IPO/Android.mk b/lib/Transforms/IPO/Android.mk
+new file mode 100644
+index 0000000..1fe7d63
+--- /dev/null
++++ b/lib/Transforms/IPO/Android.mk
+@@ -0,0 +1,52 @@
++LOCAL_PATH:= $(call my-dir)
++
++transforms_ipo_SRC_FILES := \
++  ArgumentPromotion.cpp \
++  BarrierNoopPass.cpp \
++  ConstantMerge.cpp \
++  DeadArgumentElimination.cpp \
++  ExtractGV.cpp \
++  FunctionAttrs.cpp \
++  GlobalDCE.cpp \
++  GlobalOpt.cpp \
++  IPConstantPropagation.cpp \
++  IPO.cpp \
++  InlineAlways.cpp \
++  InlineSimple.cpp \
++  Inliner.cpp \
++  Internalize.cpp \
++  LoopExtractor.cpp \
++  MergeFunctions.cpp \
++  PartialInlining.cpp \
++  PassManagerBuilder.cpp \
++  PruneEH.cpp \
++  StripDeadPrototypes.cpp \
++  StripSymbols.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES)
++LOCAL_MODULE:= libLLVMipo
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES)
++LOCAL_MODULE:= libLLVMipo
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Transforms/InstCombine/Android.mk b/lib/Transforms/InstCombine/Android.mk
+new file mode 100644
+index 0000000..62dc7d9
+--- /dev/null
++++ b/lib/Transforms/InstCombine/Android.mk
+@@ -0,0 +1,44 @@
++LOCAL_PATH:= $(call my-dir)
++
++transforms_inst_combine_SRC_FILES := \
++  InstCombineAddSub.cpp \
++  InstCombineAndOrXor.cpp \
++  InstCombineCalls.cpp \
++  InstCombineCasts.cpp \
++  InstCombineCompares.cpp \
++  InstCombineLoadStoreAlloca.cpp \
++  InstCombineMulDivRem.cpp \
++  InstCombinePHI.cpp \
++  InstCombineSelect.cpp \
++  InstCombineShifts.cpp \
++  InstCombineSimplifyDemanded.cpp \
++  InstCombineVectorOps.cpp \
++  InstructionCombining.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES)
++LOCAL_MODULE:= libLLVMInstCombine
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES)
++LOCAL_MODULE:= libLLVMInstCombine
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Transforms/Instrumentation/Android.mk b/lib/Transforms/Instrumentation/Android.mk
+new file mode 100644
+index 0000000..f9a55c7
+--- /dev/null
++++ b/lib/Transforms/Instrumentation/Android.mk
+@@ -0,0 +1,37 @@
++LOCAL_PATH:= $(call my-dir)
++
++instrumentation_SRC_FILES := \
++  AddressSanitizer.cpp \
++  BoundsChecking.cpp \
++  DataFlowSanitizer.cpp \
++  DebugIR.cpp \
++  GCOVProfiling.cpp \
++  Instrumentation.cpp \
++  MemorySanitizer.cpp \
++  ThreadSanitizer.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_MODULE:= libLLVMInstrumentation
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(instrumentation_SRC_FILES)
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the target
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_MODULE:= libLLVMInstrumentation
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(instrumentation_SRC_FILES)
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Transforms/ObjCARC/Android.mk b/lib/Transforms/ObjCARC/Android.mk
+new file mode 100644
+index 0000000..226e9e1
+--- /dev/null
++++ b/lib/Transforms/ObjCARC/Android.mk
+@@ -0,0 +1,40 @@
++LOCAL_PATH:= $(call my-dir)
++
++transforms_objcarc_SRC_FILES := \
++  DependencyAnalysis.cpp \
++  ObjCARCAliasAnalysis.cpp \
++  ObjCARCAPElim.cpp \
++  ObjCARCContract.cpp \
++  ObjCARC.cpp \
++  ObjCARCExpand.cpp \
++  ObjCARCOpts.cpp \
++  ObjCARCUtil.cpp \
++  ProvenanceAnalysis.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES)
++LOCAL_MODULE:= libLLVMTransformObjCARC
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES)
++LOCAL_MODULE:= libLLVMTransformObjCARC
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Transforms/Scalar/Android.mk b/lib/Transforms/Scalar/Android.mk
+new file mode 100644
+index 0000000..3894f93
+--- /dev/null
++++ b/lib/Transforms/Scalar/Android.mk
+@@ -0,0 +1,73 @@
++LOCAL_PATH:= $(call my-dir)
++
++transforms_scalar_SRC_FILES := \
++  ADCE.cpp \
++  ConstantProp.cpp \
++  ConstantHoisting.cpp \
++  CorrelatedValuePropagation.cpp \
++  DCE.cpp \
++  DeadStoreElimination.cpp \
++  EarlyCSE.cpp \
++  GlobalMerge.cpp \
++  GVN.cpp \
++  IndVarSimplify.cpp \
++  JumpThreading.cpp \
++  LICM.cpp \
++  LoopDeletion.cpp \
++  LoopIdiomRecognize.cpp \
++  LoopInstSimplify.cpp \
++  LoopRerollPass.cpp \
++  LoopRotation.cpp \
++  LoopStrengthReduce.cpp \
++  LoopUnrollPass.cpp \
++  LoopUnswitch.cpp \
++  LowerAtomic.cpp \
++  MemCpyOptimizer.cpp \
++  PartiallyInlineLibCalls.cpp \
++  Reassociate.cpp \
++  Reg2Mem.cpp \
++  SCCP.cpp \
++  SROA.cpp \
++  SampleProfile.cpp \
++  Scalar.cpp \
++  Scalarizer.cpp \
++  ScalarReplAggregates.cpp \
++  SimplifyCFGPass.cpp \
++  Sink.cpp \
++  StructurizeCFG.cpp \
++  TailRecursionElimination.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES :=	\
++	$(transforms_scalar_SRC_FILES)
++
++LOCAL_MODULE:= libLLVMScalarOpts
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_scalar_SRC_FILES)
++LOCAL_MODULE:= libLLVMScalarOpts
++
++# Override the default optimization level to work around a SIGSEGV
++# on x86 target builds for SROA.cpp.
++# Bug: 8047767
++LOCAL_CFLAGS_x86 += -O1
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Transforms/Utils/Android.mk b/lib/Transforms/Utils/Android.mk
+new file mode 100644
+index 0000000..ab4d8a8
+--- /dev/null
++++ b/lib/Transforms/Utils/Android.mk
+@@ -0,0 +1,66 @@
++LOCAL_PATH:= $(call my-dir)
++
++transforms_utils_SRC_FILES := \
++  AddDiscriminators.cpp \
++  ASanStackFrameLayout.cpp \
++  BasicBlockUtils.cpp \
++  BreakCriticalEdges.cpp \
++  BuildLibCalls.cpp \
++  BypassSlowDivision.cpp \
++  CloneFunction.cpp \
++  CloneModule.cpp \
++  CmpInstAnalysis.cpp \
++  CodeExtractor.cpp \
++  DemoteRegToStack.cpp \
++  GlobalStatus.cpp \
++  InlineFunction.cpp \
++  InstructionNamer.cpp \
++  LCSSA.cpp \
++  Local.cpp \
++  LoopSimplify.cpp \
++  LoopUnroll.cpp \
++  LoopUnrollRuntime.cpp \
++  LowerExpectIntrinsic.cpp \
++  LowerInvoke.cpp \
++  LowerSwitch.cpp \
++  Mem2Reg.cpp \
++  MetaRenamer.cpp \
++  ModuleUtils.cpp \
++  PromoteMemoryToRegister.cpp \
++  SSAUpdater.cpp \
++  SimplifyCFG.cpp \
++  SimplifyIndVar.cpp \
++  SimplifyInstructions.cpp \
++  SimplifyLibCalls.cpp \
++  SpecialCaseList.cpp \
++  UnifyFunctionExitNodes.cpp \
++  Utils.cpp \
++  ValueMapper.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES)
++LOCAL_MODULE:= libLLVMTransformUtils
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES)
++LOCAL_MODULE:= libLLVMTransformUtils
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/lib/Transforms/Vectorize/Android.mk b/lib/Transforms/Vectorize/Android.mk
+new file mode 100644
+index 0000000..ea090c0
+--- /dev/null
++++ b/lib/Transforms/Vectorize/Android.mk
+@@ -0,0 +1,35 @@
++LOCAL_PATH:= $(call my-dir)
++
++transforms_vectorize_SRC_FILES := \
++  BBVectorize.cpp \
++  LoopVectorize.cpp \
++  SLPVectorizer.cpp \
++  Vectorize.cpp
++
++# For the host
++# =====================================================
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES)
++LOCAL_MODULE:= libLLVMVectorize
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_STATIC_LIBRARY)
++
++# For the device
++# =====================================================
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES)
++LOCAL_MODULE:= libLLVMVectorize
++
++LOCAL_MODULE_TAGS := optional
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_STATIC_LIBRARY)
++endif
+diff --git a/llvm-device-build.mk b/llvm-device-build.mk
+new file mode 100644
+index 0000000..7464c98
+--- /dev/null
++++ b/llvm-device-build.mk
+@@ -0,0 +1,79 @@
++LOCAL_MODULE_TARGET_ARCH := $(LLVM_SUPPORTED_ARCH)
++
++LOCAL_CLANG := true
++
++LOCAL_CFLAGS :=	\
++	-D_GNU_SOURCE	\
++	-D__STDC_LIMIT_MACROS	\
++	-D__STDC_CONSTANT_MACROS	\
++	-D__STDC_FORMAT_MACROS	\
++	-O2	\
++	-fomit-frame-pointer	\
++	-Wall	\
++	-W	\
++	-Wno-unused-parameter	\
++	-Wwrite-strings	\
++        -Dsprintf=sprintf \
++	$(LOCAL_CFLAGS)
++
++# The three inline options together reduce libbcc.so almost 1MB.
++# We move them from global build/core/combo/TARGET_linux-arm.mk
++# to here.
++LOCAL_CFLAGS := -DANDROID_TARGET_BUILD \
++		-finline-functions \
++		$(LOCAL_CFLAGS)
++
++ifeq ($(TARGET_BUILD_VARIANT),eng)
++LOCAL_CFLAGS := -DANDROID_ENGINEERING_BUILD \
++                $(LOCAL_CFLAGS)
++endif
++
++ifeq ($(LLVM_ENABLE_ASSERTION),true)
++LOCAL_CFLAGS :=	\
++	$(LOCAL_CFLAGS) \
++	-D_DEBUG	\
++	-UNDEBUG
++endif
++
++ifneq ($(REQUIRES_EH),1)
++LOCAL_CFLAGS +=	-fno-exceptions
++else
++# No action. The device target should not have exception enabled since bionic
++# doesn't support it
++REQUIRES_EH := 0
++endif
++
++ifneq ($(REQUIRES_RTTI),1)
++LOCAL_CPPFLAGS +=	-fno-rtti
++else
++REQUIRES_RTTI := 0
++endif
++
++LOCAL_CPPFLAGS :=	\
++	$(LOCAL_CPPFLAGS)	\
++	-Woverloaded-virtual	\
++	-Wno-sign-promo
++
++# Make sure bionic is first so we can include system headers.
++LOCAL_C_INCLUDES :=	\
++	bionic \
++	external/stlport/stlport \
++	$(LLVM_ROOT_PATH)	\
++	$(LLVM_ROOT_PATH)/include	\
++	$(LLVM_ROOT_PATH)/device/include	\
++	$(LOCAL_C_INCLUDES)
++
++###########################################################
++## Commands for running tblgen to compile a td file
++###########################################################
++define transform-device-td-to-out
++@mkdir -p $(dir $@)
++@echo "Device TableGen (gen-$(1)): $(TBLGEN_LOCAL_MODULE) <= $<"
++$(hide) $(TBLGEN) \
++	-I $(dir $<)	\
++	-I $(LLVM_ROOT_PATH)/include	\
++	-I $(LLVM_ROOT_PATH)/device/include	\
++	-I $(LLVM_ROOT_PATH)/lib/Target	\
++    -gen-$(strip $(1)) \
++    -o $@ $<
++endef
+diff --git a/llvm-gen-intrinsics.mk b/llvm-gen-intrinsics.mk
+new file mode 100644
+index 0000000..358027b
+--- /dev/null
++++ b/llvm-gen-intrinsics.mk
+@@ -0,0 +1,19 @@
++# We treat Intrinsics.td as a very special target just like what lib/VMCore/Makefile does
++INTRINSICTD := $(LLVM_ROOT_PATH)/include/llvm/IR/Intrinsics.td
++INTRINSICTDS := $(wildcard $(dir $(INTRINSICTD))/Intrinsics*.td)
++
++LOCAL_SRC_FILES := $(INTRINSICTD) $(LOCAL_SRC_FILES)
++
++ifeq ($(LOCAL_MODULE_CLASS),)
++	LOCAL_MODULE_CLASS := STATIC_LIBRARIES
++endif
++
++GENFILE := $(addprefix $(call local-generated-sources-dir)/llvm/IR/,Intrinsics.gen)
++LOCAL_GENERATED_SOURCES += $(GENFILE)
++$(GENFILE): TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(GENFILE): $(INTRINSICTD) $(INTRINSICTDS) | $(TBLGEN)
++ifeq ($(LOCAL_IS_HOST_MODULE),true)
++	$(call transform-host-td-to-out,intrinsic)
++else
++	$(call transform-device-td-to-out,intrinsic)
++endif
+diff --git a/llvm-host-build.mk b/llvm-host-build.mk
+new file mode 100644
+index 0000000..7e96615
+--- /dev/null
++++ b/llvm-host-build.mk
+@@ -0,0 +1,64 @@
++LOCAL_CLANG := true
++
++LOCAL_CFLAGS +=	\
++	-D_GNU_SOURCE	\
++	-D__STDC_LIMIT_MACROS	\
++	-O2	\
++	-fomit-frame-pointer	\
++	-Wall	\
++	-W	\
++	-Wno-unused-parameter	\
++	-Wwrite-strings	\
++        -Dsprintf=sprintf \
++	$(LOCAL_CFLAGS)
++
++ifeq ($(LLVM_ENABLE_ASSERTION),true)
++LOCAL_CFLAGS :=	\
++	$(LOCAL_CFLAGS) \
++	-D_DEBUG	\
++	-UNDEBUG
++endif
++
++ifneq ($(REQUIRES_EH),1)
++LOCAL_CFLAGS += -fno-exceptions
++else
++REQUIRES_EH := 0
++LOCAL_CFLAGS += -fexceptions
++endif
++
++ifneq ($(REQUIRES_RTTI),1)
++LOCAL_CPPFLAGS += -fno-rtti
++else
++REQUIRES_RTTI := 0
++endif
++
++LOCAL_CPPFLAGS :=	\
++	$(LOCAL_CPPFLAGS)	\
++	-Woverloaded-virtual	\
++	-Wno-sign-promo         \
++	-std=c++11
++
++# Make sure bionic is first so we can include system headers.
++LOCAL_C_INCLUDES :=	\
++	$(LLVM_ROOT_PATH)	\
++	$(LLVM_ROOT_PATH)/include	\
++	$(LLVM_ROOT_PATH)/host/include	\
++	$(LOCAL_C_INCLUDES)
++
++LOCAL_IS_HOST_MODULE := true
++
++###########################################################
++## Commands for running tblgen to compile a td file
++###########################################################
++define transform-host-td-to-out
++@mkdir -p $(dir $@)
++@echo "Host TableGen: $(TBLGEN_LOCAL_MODULE) (gen-$(1)) <= $<"
++$(hide) $(TBLGEN) \
++	-I $(dir $<)	\
++	-I $(LLVM_ROOT_PATH)/include	\
++	-I $(LLVM_ROOT_PATH)/host/include	\
++	-I $(LLVM_ROOT_PATH)/lib/Target	\
++	$(if $(strip $(CLANG_ROOT_PATH)),-I $(CLANG_ROOT_PATH)/include,)	\
++	-gen-$(strip $(1))	\
++	-o $@ $<
++endef
+diff --git a/llvm-tblgen-rules.mk b/llvm-tblgen-rules.mk
+new file mode 100644
+index 0000000..0746e8b
+--- /dev/null
++++ b/llvm-tblgen-rules.mk
+@@ -0,0 +1,208 @@
++###########################################################
++## Commands for running tblgen to compile a td file
++##########################################################
++define transform-td-to-out
++$(if $(LOCAL_IS_HOST_MODULE),	\
++	$(call transform-host-td-to-out,$(1)),	\
++	$(call transform-device-td-to-out,$(1)))
++endef
++
++###########################################################
++## TableGen: Compile .td files to .inc.
++###########################################################
++
++# Set LOCAL_MODULE_CLASS to STATIC_LIBRARIES default (require
++# for macro local-generated-sources-dir)
++ifeq ($(LOCAL_MODULE_CLASS),)
++	LOCAL_MODULE_CLASS := STATIC_LIBRARIES
++endif
++
++ifneq ($(strip $(TBLGEN_TABLES)),)
++
++generated_sources := $(call local-generated-sources-dir)
++tblgen_gen_tables := $(addprefix $(generated_sources)/,$(TBLGEN_TABLES))
++LOCAL_GENERATED_SOURCES += $(tblgen_gen_tables)
++
++tblgen_source_dir := $(LOCAL_PATH)
++ifneq ($(TBLGEN_TD_DIR),)
++tblgen_source_dir := $(TBLGEN_TD_DIR)
++endif
++
++ifneq (,$(filter $(tblgen_source_dir),MCTargetDesc))
++tblgen_td_deps := $(tblgen_source_dir)/../*.td
++else
++tblgen_td_deps := $(tblgen_source_dir)/*.td
++endif
++tblgen_td_deps := $(wildcard $(tblgen_td_deps))
++
++#
++# The directory and the .td directory is not the same.
++#
++ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/ARM/MCTargetDesc)
++$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/../%.td \
++                                       $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out, register-info)
++
++$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/../%.td \
++                                    $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,instr-info)
++
++$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/../%.td \
++                                        $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,subtarget)
++endif
++
++ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/X86/MCTargetDesc)
++$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/../%.td \
++                                       $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out, register-info)
++
++$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/../%.td \
++                                    $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,instr-info)
++
++$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/../%.td \
++                                        $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,subtarget)
++endif
++
++ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/Mips/MCTargetDesc)
++$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/../%.td \
++                                       $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out, register-info)
++
++$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/../%.td \
++                                    $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,instr-info)
++
++$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/../%.td \
++                                        $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,subtarget)
++endif
++
++
++ifneq ($(filter %GenRegisterInfo.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/%.td \
++                                       $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,register-info)
++endif
++
++ifneq ($(filter %GenInstrInfo.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/%.td \
++                                    $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,instr-info)
++endif
++
++ifneq ($(filter %GenAsmWriter.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenAsmWriter.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenAsmWriter.inc: $(tblgen_source_dir)/%.td \
++                                    $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,asm-writer)
++endif
++
++ifneq ($(filter %GenAsmWriter1.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenAsmWriter1.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenAsmWriter1.inc: $(tblgen_source_dir)/%.td \
++                                     $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,asm-writer -asmwriternum=1)
++endif
++
++ifneq ($(filter %GenAsmMatcher.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenAsmMatcher.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenAsmMatcher.inc: $(tblgen_source_dir)/%.td \
++                                     $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,asm-matcher)
++endif
++
++ifneq ($(filter %GenCodeEmitter.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenCodeEmitter.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenCodeEmitter.inc: $(tblgen_source_dir)/%.td \
++                                      $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,emitter)
++endif
++
++ifneq ($(filter %GenMCCodeEmitter.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenMCCodeEmitter.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenMCCodeEmitter.inc: $(tblgen_source_dir)/%.td \
++                                        $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,emitter -mc-emitter)
++endif
++
++ifneq ($(filter %GenMCPseudoLowering.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenMCPseudoLowering.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenMCPseudoLowering.inc: $(tblgen_source_dir)/%.td \
++                                           $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,pseudo-lowering)
++endif
++
++ifneq ($(filter %GenDAGISel.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenDAGISel.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenDAGISel.inc: $(tblgen_source_dir)/%.td \
++                                  $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,dag-isel)
++endif
++
++ifneq ($(filter %GenDisassemblerTables.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenDisassemblerTables.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenDisassemblerTables.inc: $(tblgen_source_dir)/%.td \
++                                             $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,disassembler)
++endif
++
++ifneq ($(filter %GenEDInfo.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenEDInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenEDInfo.inc: $(tblgen_source_dir)/%.td \
++                                 $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,enhanced-disassembly-info)
++endif
++
++ifneq ($(filter %GenFastISel.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenFastISel.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenFastISel.inc: $(tblgen_source_dir)/%.td \
++                                   $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,fast-isel)
++endif
++
++ifneq ($(filter %GenSubtargetInfo.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/%.td \
++                                        $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,subtarget)
++endif
++
++ifneq ($(filter %GenCallingConv.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenCallingConv.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenCallingConv.inc: $(tblgen_source_dir)/%.td \
++                                      $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,callingconv)
++endif
++
++ifneq ($(filter %GenIntrinsics.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/%GenIntrinsics.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/%GenIntrinsics.inc: $(tblgen_source_dir)/%.td \
++                                     $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,tgt_intrinsics)
++endif
++
++ifneq ($(findstring ARMGenDecoderTables.inc,$(tblgen_gen_tables)),)
++$(generated_sources)/ARMGenDecoderTables.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
++$(generated_sources)/ARMGenDecoderTables.inc: $(tblgen_source_dir)/ARM.td \
++                                          $(tblgen_td_deps) | $(TBLGEN)
++	$(call transform-td-to-out,arm-decoder)
++endif
++
++# Reset local variables
++tblgen_td_deps :=
++
++endif
+diff --git a/llvm.mk b/llvm.mk
+new file mode 100644
+index 0000000..073ceb7
+--- /dev/null
++++ b/llvm.mk
+@@ -0,0 +1,11 @@
++ifeq ($(LLVM_ROOT_PATH),)
++$(error Must set variable LLVM_ROOT_PATH before including this! $(LOCAL_PATH))
++endif
++
++CLEAR_TBLGEN_VARS := $(LLVM_ROOT_PATH)/clear_tblgen_vars.mk
++LLVM_HOST_BUILD_MK := $(LLVM_ROOT_PATH)/llvm-host-build.mk
++LLVM_DEVICE_BUILD_MK := $(LLVM_ROOT_PATH)/llvm-device-build.mk
++LLVM_GEN_INTRINSICS_MK := $(LLVM_ROOT_PATH)/llvm-gen-intrinsics.mk
++LLVM_TBLGEN_RULES_MK := $(LLVM_ROOT_PATH)/llvm-tblgen-rules.mk
++
++LLVM_SUPPORTED_ARCH := arm arm64 mips x86 x86_64
+diff --git a/shared_llvm.mk b/shared_llvm.mk
+new file mode 100644
+index 0000000..f4be822
+--- /dev/null
++++ b/shared_llvm.mk
+@@ -0,0 +1,137 @@
++# Don't build the library in unbundled branches.
++ifeq (,$(TARGET_BUILD_APPS))
++
++LOCAL_PATH:= $(call my-dir)
++
++llvm_pre_static_libraries := \
++  libLLVMLinker \
++  libLLVMipo \
++  libLLVMIRReader \
++  libLLVMBitWriter \
++  libLLVMBitReader
++
++llvm_arm_static_libraries := \
++  libLLVMARMCodeGen \
++  libLLVMARMAsmParser \
++  libLLVMARMAsmPrinter \
++  libLLVMARMInfo \
++  libLLVMARMDesc \
++  libLLVMARMDisassembler
++
++llvm_x86_static_libraries := \
++  libLLVMX86CodeGen \
++  libLLVMX86Info \
++  libLLVMX86Desc \
++  libLLVMX86AsmParser \
++  libLLVMX86AsmPrinter \
++  libLLVMX86Utils \
++  libLLVMX86Disassembler
++
++llvm_mips_static_libraries := \
++  libLLVMMipsCodeGen \
++  libLLVMMipsInfo \
++  libLLVMMipsDesc \
++  libLLVMMipsAsmParser \
++  libLLVMMipsAsmPrinter \
++  libLLVMMipsDisassembler
++
++llvm_arm64_static_libraries := \
++  libLLVMARM64CodeGen \
++  libLLVMARM64Info \
++  libLLVMARM64Desc \
++  libLLVMARM64AsmParser \
++  libLLVMARM64AsmPrinter \
++  libLLVMARM64Utils \
++  libLLVMARM64Disassembler
++
++llvm_post_static_libraries := \
++  libLLVMAsmPrinter \
++  libLLVMSelectionDAG \
++  libLLVMCodeGen \
++  libLLVMObject \
++  libLLVMScalarOpts \
++  libLLVMInstCombine \
++  libLLVMInstrumentation \
++  libLLVMTransformObjCARC \
++  libLLVMTransformUtils \
++  libLLVMipa \
++  libLLVMAnalysis \
++  libLLVMTarget \
++  libLLVMMC \
++  libLLVMMCParser \
++  libLLVMCore \
++  libLLVMAsmParser \
++  libLLVMOption \
++  libLLVMSupport \
++  libLLVMVectorize
++
++llvm_host_static_libraries := \
++  libLLVMExecutionEngine \
++  libLLVMMCDisassembler \
++  libLLVMRuntimeDyld \
++  libLLVMJIT \
++  libLLVMMCJIT
++
++ifeq (true,$(FORCE_BUILD_LLVM_COMPONENTS))
++# HOST LLVM shared library build
++include $(CLEAR_VARS)
++LOCAL_IS_HOST_MODULE := true
++
++LOCAL_MODULE:= libLLVM
++
++LOCAL_MODULE_TAGS := optional
++
++# Host build pulls in all ARM, Mips, X86 components.
++LOCAL_WHOLE_STATIC_LIBRARIES := \
++  $(llvm_pre_static_libraries) \
++  $(llvm_arm_static_libraries) \
++  $(llvm_x86_static_libraries) \
++  $(llvm_mips_static_libraries) \
++  $(llvm_arm64_static_libraries) \
++  $(llvm_host_static_libraries) \
++  $(llvm_post_static_libraries)
++
++ifeq ($(HOST_OS),windows)
++  LOCAL_LDLIBS := -limagehlp -lpsapi
++else
++  LOCAL_LDLIBS := -ldl -lpthread
++endif
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_SHARED_LIBRARY)
++endif
++
++ifeq (,$(filter $(TARGET_ARCH),$(LLVM_SUPPORTED_ARCH)))
++$(warning TODO $(TARGET_ARCH): Enable llvm build)
++endif
++
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++# DEVICE LLVM shared library build
++include $(CLEAR_VARS)
++
++LOCAL_MODULE:= libLLVM
++
++LOCAL_MODULE_TAGS := optional
++
++# Device build selectively pulls in ARM, Mips, X86 components.
++LOCAL_WHOLE_STATIC_LIBRARIES := \
++  $(llvm_pre_static_libraries)
++
++LOCAL_WHOLE_STATIC_LIBRARIES_arm += $(llvm_arm_static_libraries)
++LOCAL_WHOLE_STATIC_LIBRARIES_x86 += $(llvm_x86_static_libraries)
++LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 += $(llvm_x86_static_libraries)
++LOCAL_WHOLE_STATIC_LIBRARIES_mips += $(llvm_mips_static_libraries)
++LOCAL_WHOLE_STATIC_LIBRARIES_arm64 += $(llvm_arm64_static_libraries)
++
++LOCAL_WHOLE_STATIC_LIBRARIES += $(llvm_post_static_libraries)
++
++#LOCAL_LDLIBS := -ldl -lpthread
++LOCAL_SHARED_LIBRARIES := libcutils libdl libstlport
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(BUILD_SHARED_LIBRARY)
++
++endif
++
++endif # don't build in unbundled branches
++
+diff --git a/tools/llc/Android.mk b/tools/llc/Android.mk
+new file mode 100644
+index 0000000..b9d4b74
+--- /dev/null
++++ b/tools/llc/Android.mk
+@@ -0,0 +1,136 @@
++LOCAL_PATH := $(call my-dir)
++
++LLVM_ROOT_PATH := $(LOCAL_PATH)/../..
++
++
++#===---------------------------------------------------------------===
++# llc command line tool (common)
++#===---------------------------------------------------------------===
++
++llvm_llc_SRC_FILES := \
++  llc.cpp
++
++llvm_llc_mips_STATIC_LIBRARIES := \
++  libLLVMMipsAsmParser \
++  libLLVMMipsInfo \
++  libLLVMMipsCodeGen \
++  libLLVMMipsDesc \
++  libLLVMMipsAsmPrinter \
++
++llvm_llc_x86_STATIC_LIBRARIES := \
++  libLLVMX86Info \
++  libLLVMX86AsmParser \
++  libLLVMX86CodeGen \
++  libLLVMX86Disassembler \
++  libLLVMX86Desc \
++  libLLVMX86AsmPrinter \
++  libLLVMX86Utils
++
++llvm_llc_arm_STATIC_LIBRARIES := \
++  libLLVMARMCodeGen \
++  libLLVMARMDisassembler \
++  libLLVMARMAsmParser \
++  libLLVMARMAsmPrinter \
++  libLLVMARMDesc \
++  libLLVMARMInfo
++
++llvm_llc_STATIC_LIBRARIES := \
++  libLLVMAsmPrinter \
++  libLLVMIRReader \
++  libLLVMAsmParser \
++  libLLVMBitReader \
++  libLLVMBitWriter \
++  libLLVMSelectionDAG \
++  libLLVMInstCombine \
++  libLLVMInstrumentation \
++  libLLVMCodeGen \
++  libLLVMObject \
++  libLLVMipo \
++  libLLVMipa \
++  libLLVMLinker \
++  libLLVMMC \
++  libLLVMMCParser \
++  libLLVMScalarOpts \
++  libLLVMTransformUtils \
++  libLLVMVectorize \
++  libLLVMAnalysis \
++  libLLVMTarget \
++  libLLVMCore \
++  libLLVMSupport
++
++llvm_llc_arm64_STATIC_LIBRARIES := \
++  libLLVMARM64Info \
++  libLLVMARM64AsmParser \
++  libLLVMARM64CodeGen \
++  libLLVMARM64Disassembler \
++  libLLVMARM64Desc \
++  libLLVMARM64AsmPrinter \
++  libLLVMARM64Utils
++
++
++
++#===---------------------------------------------------------------===
++# llc command line tool (host)
++#===---------------------------------------------------------------===
++
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := llc
++LOCAL_MODULE_TAGS := optional
++LOCAL_MODULE_CLASS := EXECUTABLES
++LOCAL_IS_HOST_MODULE := true
++
++LOCAL_SRC_FILES := $(llvm_llc_SRC_FILES)
++
++LOCAL_STATIC_LIBRARIES := \
++  $(llvm_llc_arm_STATIC_LIBRARIES) \
++  $(llvm_llc_mips_STATIC_LIBRARIES) \
++  $(llvm_llc_x86_STATIC_LIBRARIES) \
++  $(llvm_llc_arm64_STATIC_LIBRARIES) \
++  $(llvm_llc_STATIC_LIBRARIES)
++
++LOCAL_LDLIBS += -lpthread -lm -ldl
++LOCAL_C_INCLUDES += external/llvm/include
++
++include $(LLVM_ROOT_PATH)/llvm.mk
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_EXECUTABLE)
++
++
++#===---------------------------------------------------------------===
++# llc command line tool (target)
++#===---------------------------------------------------------------===
++
++ifeq (,$(filter $(TARGET_ARCH),$(LLVM_SUPPORTED_ARCH)))
++$(warning TODO $(TARGET_ARCH): Enable llc build)
++endif
++
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := llc
++LOCAL_MODULE_TAGS := optional
++LOCAL_MODULE_CLASS := EXECUTABLES
++
++LOCAL_SRC_FILES := $(llvm_llc_SRC_FILES)
++LOCAL_C_INCLUDES += external/llvm/include
++
++LOCAL_STATIC_LIBRARIES_arm := $(llvm_llc_arm_STATIC_LIBRARIES)
++LOCAL_STATIC_LIBRARIES_mips := $(llvm_llc_mips_STATIC_LIBRARIES)
++LOCAL_STATIC_LIBRARIES_x86 := $(llvm_llc_x86_STATIC_LIBRARIES)
++LOCAL_STATIC_LIBRARIES_x86_64 := $(llvm_llc_x86_STATIC_LIBRARIES)
++LOCAL_STATIC_LIBRARIES_arm64 := $(llvm_llc_arm64_STATIC_LIBRARIES)
++
++LOCAL_STATIC_LIBRARIES += $(llvm_llc_STATIC_LIBRARIES)
++
++LOCAL_SHARED_LIBRARIES :=  \
++  libcutils  \
++  libdl  \
++  libstlport
++
++include $(LLVM_ROOT_PATH)/llvm.mk
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_EXECUTABLE)
++endif
+diff --git a/tools/llvm-as/Android.mk b/tools/llvm-as/Android.mk
+new file mode 100644
+index 0000000..e58868b
+--- /dev/null
++++ b/tools/llvm-as/Android.mk
+@@ -0,0 +1,28 @@
++LOCAL_PATH:= $(call my-dir)
++
++llvm_as_SRC_FILES := \
++  llvm-as.cpp
++
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := llvm-as
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(llvm_as_SRC_FILES)
++LOCAL_LDLIBS += -lm
++ifdef USE_MINGW
++LOCAL_LDLIBS += -limagehlp
++else
++LOCAL_LDLIBS += -lpthread -ldl
++endif
++
++REQUIRES_EH := 1
++REQUIRES_RTTI := 1
++
++LOCAL_STATIC_LIBRARIES := \
++  libLLVMAsmParser \
++  libLLVMBitWriter \
++  libLLVMCore \
++  libLLVMSupport
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_EXECUTABLE)
+diff --git a/tools/llvm-dis/Android.mk b/tools/llvm-dis/Android.mk
+new file mode 100644
+index 0000000..22d44fd
+--- /dev/null
++++ b/tools/llvm-dis/Android.mk
+@@ -0,0 +1,25 @@
++LOCAL_PATH:= $(call my-dir)
++
++llvm_dis_SRC_FILES := \
++  llvm-dis.cpp
++
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := llvm-dis
++LOCAL_MODULE_CLASS := EXECUTABLES
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(llvm_dis_SRC_FILES)
++LOCAL_LDLIBS += -lpthread -lm -ldl
++
++REQUIRES_EH := 1
++REQUIRES_RTTI := 1
++
++LOCAL_STATIC_LIBRARIES := \
++  libLLVMAnalysis \
++  libLLVMBitReader \
++  libLLVMCore \
++  libLLVMSupport
++
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_EXECUTABLE)
+diff --git a/tools/llvm-link/Android.mk b/tools/llvm-link/Android.mk
+new file mode 100644
+index 0000000..e051492
+--- /dev/null
++++ b/tools/llvm-link/Android.mk
+@@ -0,0 +1,50 @@
++LOCAL_PATH:= $(call my-dir)
++
++llvm_link_SRC_FILES := \
++  llvm-link.cpp
++
++llvm_link_STATIC_LIBRARIES := \
++  libLLVMLinker \
++  libLLVMIRReader \
++  libLLVMBitReader \
++  libLLVMBitWriter \
++  libLLVMAsmParser \
++  libLLVMTransformUtils \
++  libLLVMAnalysis \
++  libLLVMTarget \
++  libLLVMCore \
++  libLLVMSupport
++
++#===---------------------------------------------------------------===
++# llvm-link command line tool (host)
++#===---------------------------------------------------------------===
++
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := llvm-link
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(llvm_link_SRC_FILES)
++LOCAL_STATIC_LIBRARIES := $(llvm_link_STATIC_LIBRARIES)
++LOCAL_LDLIBS += -lpthread -lm -ldl
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_EXECUTABLE)
++
++#===---------------------------------------------------------------===
++# llvm-link command line tool (target)
++#===---------------------------------------------------------------===
++
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := llvm-link
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(llvm_link_SRC_FILES)
++LOCAL_STATIC_LIBRARIES := $(llvm_link_STATIC_LIBRARIES)
++LOCAL_SHARED_LIBRARIES := \
++  libcutils  \
++  libstlport
++
++include $(LLVM_DEVICE_BUILD_MK)
++include $(BUILD_EXECUTABLE)
++endif
+diff --git a/tools/opt/Android.mk b/tools/opt/Android.mk
+new file mode 100644
+index 0000000..c5bb4f8
+--- /dev/null
++++ b/tools/opt/Android.mk
+@@ -0,0 +1,81 @@
++LOCAL_PATH := $(call my-dir)
++
++LLVM_ROOT_PATH := $(LOCAL_PATH)/../..
++
++
++#===---------------------------------------------------------------===
++# opt command line tool (common)
++#===---------------------------------------------------------------===
++
++llvm_opt_SRC_FILES := \
++  AnalysisWrappers.cpp \
++  GraphPrinters.cpp \
++  PrintSCC.cpp \
++  opt.cpp
++
++llvm_opt_STATIC_LIBRARIES := \
++  libLLVMScalarOpts \
++  libLLVMInstCombine \
++  libLLVMInstrumentation \
++  libLLVMMCParser \
++  libLLVMMC \
++  libLLVMAsmParser \
++  libLLVMBitWriter \
++  libLLVMBitReader \
++  libLLVMipa \
++  libLLVMipo \
++  libLLVMTransformUtils \
++  libLLVMVectorize \
++  libLLVMAnalysis \
++  libLLVMTarget \
++  libLLVMCore \
++  libLLVMSupport
++
++
++#===---------------------------------------------------------------===
++# opt command line tool (host)
++#===---------------------------------------------------------------===
++
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := opt
++LOCAL_MODULE_TAGS := optional
++LOCAL_MODULE_CLASS := EXECUTABLES
++LOCAL_IS_HOST_MODULE := true
++
++LOCAL_SRC_FILES := $(llvm_opt_SRC_FILES)
++LOCAL_STATIC_LIBRARIES := $(llvm_opt_STATIC_LIBRARIES)
++LOCAL_LDLIBS += -lpthread -lm -ldl
++LOCAL_C_INCLUDES += external/llvm/include
++
++include $(LLVM_ROOT_PATH)/llvm.mk
++include $(LLVM_HOST_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_HOST_EXECUTABLE)
++
++
++#===---------------------------------------------------------------===
++# opt command line tool (target)
++#===---------------------------------------------------------------===
++
++ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := opt
++LOCAL_MODULE_TAGS := optional
++LOCAL_MODULE_CLASS := EXECUTABLES
++
++LOCAL_SRC_FILES := $(llvm_opt_SRC_FILES)
++LOCAL_C_INCLUDES += external/llvm/include
++LOCAL_STATIC_LIBRARIES := $(llvm_opt_STATIC_LIBRARIES)
++LOCAL_SHARED_LIBRARIES :=  \
++  libcutils  \
++  libdl  \
++  libstlport
++
++
++include $(LLVM_ROOT_PATH)/llvm.mk
++include $(LLVM_DEVICE_BUILD_MK)
++include $(LLVM_GEN_INTRINSICS_MK)
++include $(BUILD_EXECUTABLE)
++endif
+diff --git a/utils/FileCheck/Android.mk b/utils/FileCheck/Android.mk
+new file mode 100644
+index 0000000..2c211cf
+--- /dev/null
++++ b/utils/FileCheck/Android.mk
+@@ -0,0 +1,23 @@
++LOCAL_PATH:= $(call my-dir)
++
++filecheck_SRC_FILES := \
++  FileCheck.cpp
++
++filecheck_STATIC_LIBRARIES := \
++  libLLVMSupport
++
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := FileCheck
++LOCAL_SRC_FILES := $(filecheck_SRC_FILES)
++LOCAL_STATIC_LIBRARIES := $(filecheck_STATIC_LIBRARIES)
++LOCAL_C_INCLUDES += external/llvm/include
++LOCAL_C_INCLUDES += external/llvm/host/include
++LOCAL_LDLIBS += -lpthread -lm -ldl
++LOCAL_CFLAGS += -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS
++
++#REQUIRES_EH := 1
++#REQUIRES_RTTI := 1
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_EXECUTABLE)
+diff --git a/utils/TableGen/Android.mk b/utils/TableGen/Android.mk
+new file mode 100644
+index 0000000..8117672
+--- /dev/null
++++ b/utils/TableGen/Android.mk
+@@ -0,0 +1,58 @@
++LOCAL_PATH:= $(call my-dir)
++
++tablegen_SRC_FILES := \
++  AsmMatcherEmitter.cpp \
++  AsmWriterEmitter.cpp \
++  AsmWriterInst.cpp \
++  CallingConvEmitter.cpp \
++  CodeEmitterGen.cpp \
++  CodeGenDAGPatterns.cpp \
++  CodeGenInstruction.cpp \
++  CodeGenMapTable.cpp \
++  CodeGenRegisters.cpp \
++  CodeGenSchedule.cpp \
++  CodeGenTarget.cpp \
++  CTagsEmitter.cpp \
++  DAGISelEmitter.cpp \
++  DAGISelMatcherEmitter.cpp \
++  DAGISelMatcherGen.cpp \
++  DAGISelMatcherOpt.cpp \
++  DAGISelMatcher.cpp \
++  DFAPacketizerEmitter.cpp \
++  DisassemblerEmitter.cpp \
++  FastISelEmitter.cpp \
++  FixedLenDecoderEmitter.cpp \
++  InstrInfoEmitter.cpp \
++  IntrinsicEmitter.cpp \
++  OptParserEmitter.cpp \
++  PseudoLoweringEmitter.cpp \
++  RegisterInfoEmitter.cpp \
++  SetTheory.cpp \
++  SubtargetEmitter.cpp \
++  TableGen.cpp \
++  X86DisassemblerTables.cpp \
++  X86ModRMFilters.cpp \
++  X86RecognizableInstr.cpp
++
++include $(CLEAR_VARS)
++
++LOCAL_MODULE := tblgen
++LOCAL_MODULE_TAGS := optional
++LOCAL_SRC_FILES := $(tablegen_SRC_FILES)
++
++REQUIRES_EH := 1
++REQUIRES_RTTI := 1
++
++LOCAL_STATIC_LIBRARIES := \
++  libLLVMTableGen \
++  libLLVMSupport
++
++LOCAL_LDLIBS += -lm
++ifeq ($(HOST_OS),windows)
++  LOCAL_LDLIBS += -limagehlp -lpsapi
++else
++  LOCAL_LDLIBS += -lpthread -ldl
++endif
++
++include $(LLVM_HOST_BUILD_MK)
++include $(BUILD_HOST_EXECUTABLE)
+-- 
+1.9.1.423.g4596e3a
+
diff --git a/shared_llvm.mk b/shared_llvm.mk
new file mode 100644
index 0000000..44e7f1a
--- /dev/null
+++ b/shared_llvm.mk
@@ -0,0 +1,137 @@
+# Don't build the library in unbundled branches.
+ifeq (,$(TARGET_BUILD_APPS))
+
+LOCAL_PATH:= $(call my-dir)
+
+llvm_pre_static_libraries := \
+  libLLVMLinker \
+  libLLVMipo \
+  libLLVMIRReader \
+  libLLVMBitWriter \
+  libLLVMBitReader
+
+llvm_arm_static_libraries := \
+  libLLVMARMCodeGen \
+  libLLVMARMAsmParser \
+  libLLVMARMAsmPrinter \
+  libLLVMARMInfo \
+  libLLVMARMDesc \
+  libLLVMARMDisassembler
+
+llvm_x86_static_libraries := \
+  libLLVMX86CodeGen \
+  libLLVMX86Info \
+  libLLVMX86Desc \
+  libLLVMX86AsmParser \
+  libLLVMX86AsmPrinter \
+  libLLVMX86Utils \
+  libLLVMX86Disassembler
+
+llvm_mips_static_libraries := \
+  libLLVMMipsCodeGen \
+  libLLVMMipsInfo \
+  libLLVMMipsDesc \
+  libLLVMMipsAsmParser \
+  libLLVMMipsAsmPrinter \
+  libLLVMMipsDisassembler
+
+llvm_arm64_static_libraries := \
+  libLLVMARM64CodeGen \
+  libLLVMARM64Info \
+  libLLVMARM64Desc \
+  libLLVMARM64AsmParser \
+  libLLVMARM64AsmPrinter \
+  libLLVMARM64Utils \
+  libLLVMARM64Disassembler
+
+llvm_post_static_libraries := \
+  libLLVMAsmPrinter \
+  libLLVMSelectionDAG \
+  libLLVMCodeGen \
+  libLLVMObject \
+  libLLVMScalarOpts \
+  libLLVMInstCombine \
+  libLLVMInstrumentation \
+  libLLVMTransformObjCARC \
+  libLLVMTransformUtils \
+  libLLVMipa \
+  libLLVMAnalysis \
+  libLLVMTarget \
+  libLLVMMC \
+  libLLVMMCParser \
+  libLLVMCore \
+  libLLVMAsmParser \
+  libLLVMOption \
+  libLLVMSupport \
+  libLLVMVectorize \
+
+llvm_host_static_libraries := \
+  libLLVMExecutionEngine \
+  libLLVMMCDisassembler \
+  libLLVMRuntimeDyld \
+  libLLVMJIT \
+  libLLVMMCJIT \
+  libLLVMProfileData
+
+ifeq (true,$(FORCE_BUILD_LLVM_COMPONENTS))
+# HOST LLVM shared library build
+include $(CLEAR_VARS)
+LOCAL_IS_HOST_MODULE := true
+
+LOCAL_MODULE:= libLLVM
+
+LOCAL_MODULE_TAGS := optional
+
+# Host build pulls in all ARM, Mips, X86 components.
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+  $(llvm_pre_static_libraries) \
+  $(llvm_arm_static_libraries) \
+  $(llvm_x86_static_libraries) \
+  $(llvm_mips_static_libraries) \
+  $(llvm_arm64_static_libraries) \
+  $(llvm_host_static_libraries) \
+  $(llvm_post_static_libraries)
+
+ifeq ($(HOST_OS),windows)
+  LOCAL_LDLIBS := -limagehlp -lpsapi
+else
+  LOCAL_LDLIBS := -ldl -lpthread
+endif
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_SHARED_LIBRARY)
+endif
+
+ifeq (,$(filter $(TARGET_ARCH),$(LLVM_SUPPORTED_ARCH)))
+$(warning TODO $(TARGET_ARCH): Enable llvm build)
+endif
+
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+# DEVICE LLVM shared library build
+include $(CLEAR_VARS)
+
+LOCAL_MODULE:= libLLVM
+
+LOCAL_MODULE_TAGS := optional
+
+# Device build selectively pulls in ARM, Mips, X86 components.
+LOCAL_WHOLE_STATIC_LIBRARIES := \
+  $(llvm_pre_static_libraries)
+
+LOCAL_WHOLE_STATIC_LIBRARIES_arm += $(llvm_arm_static_libraries)
+LOCAL_WHOLE_STATIC_LIBRARIES_x86 += $(llvm_x86_static_libraries)
+LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 += $(llvm_x86_static_libraries)
+LOCAL_WHOLE_STATIC_LIBRARIES_mips += $(llvm_mips_static_libraries)
+LOCAL_WHOLE_STATIC_LIBRARIES_arm64 += $(llvm_arm64_static_libraries)
+
+LOCAL_WHOLE_STATIC_LIBRARIES += $(llvm_post_static_libraries)
+
+#LOCAL_LDLIBS := -ldl -lpthread
+LOCAL_SHARED_LIBRARIES := libcutils libdl libc++
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_SHARED_LIBRARY)
+
+endif
+
+endif # don't build in unbundled branches
diff --git a/tools/llc/Android.mk b/tools/llc/Android.mk
new file mode 100644
index 0000000..2167fe3
--- /dev/null
+++ b/tools/llc/Android.mk
@@ -0,0 +1,136 @@
+LOCAL_PATH := $(call my-dir)
+
+LLVM_ROOT_PATH := $(LOCAL_PATH)/../..
+
+
+#===---------------------------------------------------------------===
+# llc command line tool (common)
+#===---------------------------------------------------------------===
+
+llvm_llc_SRC_FILES := \
+  llc.cpp
+
+llvm_llc_mips_STATIC_LIBRARIES := \
+  libLLVMMipsAsmParser \
+  libLLVMMipsInfo \
+  libLLVMMipsCodeGen \
+  libLLVMMipsDesc \
+  libLLVMMipsAsmPrinter \
+
+llvm_llc_x86_STATIC_LIBRARIES := \
+  libLLVMX86Info \
+  libLLVMX86AsmParser \
+  libLLVMX86CodeGen \
+  libLLVMX86Disassembler \
+  libLLVMX86Desc \
+  libLLVMX86AsmPrinter \
+  libLLVMX86Utils
+
+llvm_llc_arm_STATIC_LIBRARIES := \
+  libLLVMARMCodeGen \
+  libLLVMARMDisassembler \
+  libLLVMARMAsmParser \
+  libLLVMARMAsmPrinter \
+  libLLVMARMDesc \
+  libLLVMARMInfo
+
+llvm_llc_STATIC_LIBRARIES := \
+  libLLVMAsmPrinter \
+  libLLVMIRReader \
+  libLLVMAsmParser \
+  libLLVMBitReader \
+  libLLVMBitWriter \
+  libLLVMSelectionDAG \
+  libLLVMInstCombine \
+  libLLVMInstrumentation \
+  libLLVMCodeGen \
+  libLLVMObject \
+  libLLVMipo \
+  libLLVMipa \
+  libLLVMLinker \
+  libLLVMMC \
+  libLLVMMCParser \
+  libLLVMScalarOpts \
+  libLLVMTransformUtils \
+  libLLVMVectorize \
+  libLLVMAnalysis \
+  libLLVMTarget \
+  libLLVMCore \
+  libLLVMSupport
+
+llvm_llc_arm64_STATIC_LIBRARIES := \
+  libLLVMARM64Info \
+  libLLVMARM64AsmParser \
+  libLLVMARM64CodeGen \
+  libLLVMARM64Disassembler \
+  libLLVMARM64Desc \
+  libLLVMARM64AsmPrinter \
+  libLLVMARM64Utils
+
+
+
+#===---------------------------------------------------------------===
+# llc command line tool (host)
+#===---------------------------------------------------------------===
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := llc
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_IS_HOST_MODULE := true
+
+LOCAL_SRC_FILES := $(llvm_llc_SRC_FILES)
+
+LOCAL_STATIC_LIBRARIES := \
+  $(llvm_llc_arm_STATIC_LIBRARIES) \
+  $(llvm_llc_mips_STATIC_LIBRARIES) \
+  $(llvm_llc_x86_STATIC_LIBRARIES) \
+  $(llvm_llc_arm64_STATIC_LIBRARIES) \
+  $(llvm_llc_STATIC_LIBRARIES)
+
+LOCAL_LDLIBS += -lpthread -lm -ldl
+LOCAL_C_INCLUDES += external/llvm/include
+
+include $(LLVM_ROOT_PATH)/llvm.mk
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_EXECUTABLE)
+
+
+#===---------------------------------------------------------------===
+# llc command line tool (target)
+#===---------------------------------------------------------------===
+
+ifeq (,$(filter $(TARGET_ARCH),$(LLVM_SUPPORTED_ARCH)))
+$(warning TODO $(TARGET_ARCH): Enable llc build)
+endif
+
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := llc
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := EXECUTABLES
+
+LOCAL_SRC_FILES := $(llvm_llc_SRC_FILES)
+LOCAL_C_INCLUDES += external/llvm/include
+
+LOCAL_STATIC_LIBRARIES_arm := $(llvm_llc_arm_STATIC_LIBRARIES)
+LOCAL_STATIC_LIBRARIES_mips := $(llvm_llc_mips_STATIC_LIBRARIES)
+LOCAL_STATIC_LIBRARIES_x86 := $(llvm_llc_x86_STATIC_LIBRARIES)
+LOCAL_STATIC_LIBRARIES_x86_64 := $(llvm_llc_x86_STATIC_LIBRARIES)
+LOCAL_STATIC_LIBRARIES_arm64 := $(llvm_llc_arm64_STATIC_LIBRARIES)
+
+LOCAL_STATIC_LIBRARIES += $(llvm_llc_STATIC_LIBRARIES)
+
+LOCAL_SHARED_LIBRARIES :=  \
+  libcutils  \
+  libdl  \
+  libc++
+
+include $(LLVM_ROOT_PATH)/llvm.mk
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_EXECUTABLE)
+endif
diff --git a/tools/llvm-as/Android.mk b/tools/llvm-as/Android.mk
new file mode 100644
index 0000000..e58868b
--- /dev/null
+++ b/tools/llvm-as/Android.mk
@@ -0,0 +1,28 @@
+LOCAL_PATH:= $(call my-dir)
+
+llvm_as_SRC_FILES := \
+  llvm-as.cpp
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := llvm-as
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(llvm_as_SRC_FILES)
+LOCAL_LDLIBS += -lm
+ifdef USE_MINGW
+LOCAL_LDLIBS += -limagehlp
+else
+LOCAL_LDLIBS += -lpthread -ldl
+endif
+
+REQUIRES_EH := 1
+REQUIRES_RTTI := 1
+
+LOCAL_STATIC_LIBRARIES := \
+  libLLVMAsmParser \
+  libLLVMBitWriter \
+  libLLVMCore \
+  libLLVMSupport
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_EXECUTABLE)
diff --git a/tools/llvm-dis/Android.mk b/tools/llvm-dis/Android.mk
new file mode 100644
index 0000000..22d44fd
--- /dev/null
+++ b/tools/llvm-dis/Android.mk
@@ -0,0 +1,25 @@
+LOCAL_PATH:= $(call my-dir)
+
+llvm_dis_SRC_FILES := \
+  llvm-dis.cpp
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := llvm-dis
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(llvm_dis_SRC_FILES)
+LOCAL_LDLIBS += -lpthread -lm -ldl
+
+REQUIRES_EH := 1
+REQUIRES_RTTI := 1
+
+LOCAL_STATIC_LIBRARIES := \
+  libLLVMAnalysis \
+  libLLVMBitReader \
+  libLLVMCore \
+  libLLVMSupport
+
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_EXECUTABLE)
diff --git a/tools/llvm-link/Android.mk b/tools/llvm-link/Android.mk
new file mode 100644
index 0000000..cbcd0af
--- /dev/null
+++ b/tools/llvm-link/Android.mk
@@ -0,0 +1,50 @@
+LOCAL_PATH:= $(call my-dir)
+
+llvm_link_SRC_FILES := \
+  llvm-link.cpp
+
+llvm_link_STATIC_LIBRARIES := \
+  libLLVMLinker \
+  libLLVMIRReader \
+  libLLVMBitReader \
+  libLLVMBitWriter \
+  libLLVMAsmParser \
+  libLLVMTransformUtils \
+  libLLVMAnalysis \
+  libLLVMTarget \
+  libLLVMCore \
+  libLLVMSupport
+
+#===---------------------------------------------------------------===
+# llvm-link command line tool (host)
+#===---------------------------------------------------------------===
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := llvm-link
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(llvm_link_SRC_FILES)
+LOCAL_STATIC_LIBRARIES := $(llvm_link_STATIC_LIBRARIES)
+LOCAL_LDLIBS += -lpthread -lm -ldl
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_EXECUTABLE)
+
+#===---------------------------------------------------------------===
+# llvm-link command line tool (target)
+#===---------------------------------------------------------------===
+
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := llvm-link
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(llvm_link_SRC_FILES)
+LOCAL_STATIC_LIBRARIES := $(llvm_link_STATIC_LIBRARIES)
+LOCAL_SHARED_LIBRARIES := \
+  libcutils  \
+  libc++
+
+include $(LLVM_DEVICE_BUILD_MK)
+include $(BUILD_EXECUTABLE)
+endif
diff --git a/tools/opt/Android.mk b/tools/opt/Android.mk
new file mode 100644
index 0000000..9ba9584
--- /dev/null
+++ b/tools/opt/Android.mk
@@ -0,0 +1,81 @@
+LOCAL_PATH := $(call my-dir)
+
+LLVM_ROOT_PATH := $(LOCAL_PATH)/../..
+
+
+#===---------------------------------------------------------------===
+# opt command line tool (common)
+#===---------------------------------------------------------------===
+
+llvm_opt_SRC_FILES := \
+  AnalysisWrappers.cpp \
+  GraphPrinters.cpp \
+  PrintSCC.cpp \
+  opt.cpp
+
+llvm_opt_STATIC_LIBRARIES := \
+  libLLVMScalarOpts \
+  libLLVMInstCombine \
+  libLLVMInstrumentation \
+  libLLVMMCParser \
+  libLLVMMC \
+  libLLVMAsmParser \
+  libLLVMBitWriter \
+  libLLVMBitReader \
+  libLLVMipa \
+  libLLVMipo \
+  libLLVMTransformUtils \
+  libLLVMVectorize \
+  libLLVMAnalysis \
+  libLLVMTarget \
+  libLLVMCore \
+  libLLVMSupport
+
+
+#===---------------------------------------------------------------===
+# opt command line tool (host)
+#===---------------------------------------------------------------===
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := opt
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_IS_HOST_MODULE := true
+
+LOCAL_SRC_FILES := $(llvm_opt_SRC_FILES)
+LOCAL_STATIC_LIBRARIES := $(llvm_opt_STATIC_LIBRARIES)
+LOCAL_LDLIBS += -lpthread -lm -ldl
+LOCAL_C_INCLUDES += external/llvm/include
+
+include $(LLVM_ROOT_PATH)/llvm.mk
+include $(LLVM_HOST_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_HOST_EXECUTABLE)
+
+
+#===---------------------------------------------------------------===
+# opt command line tool (target)
+#===---------------------------------------------------------------===
+
+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := opt
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_CLASS := EXECUTABLES
+
+LOCAL_SRC_FILES := $(llvm_opt_SRC_FILES)
+LOCAL_C_INCLUDES += external/llvm/include
+LOCAL_STATIC_LIBRARIES := $(llvm_opt_STATIC_LIBRARIES)
+LOCAL_SHARED_LIBRARIES :=  \
+  libcutils  \
+  libdl  \
+  libcxx
+
+
+include $(LLVM_ROOT_PATH)/llvm.mk
+include $(LLVM_DEVICE_BUILD_MK)
+include $(LLVM_GEN_INTRINSICS_MK)
+include $(BUILD_EXECUTABLE)
+endif
diff --git a/utils/FileCheck/Android.mk b/utils/FileCheck/Android.mk
new file mode 100644
index 0000000..2c211cf
--- /dev/null
+++ b/utils/FileCheck/Android.mk
@@ -0,0 +1,23 @@
+LOCAL_PATH:= $(call my-dir)
+
+filecheck_SRC_FILES := \
+  FileCheck.cpp
+
+filecheck_STATIC_LIBRARIES := \
+  libLLVMSupport
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := FileCheck
+LOCAL_SRC_FILES := $(filecheck_SRC_FILES)
+LOCAL_STATIC_LIBRARIES := $(filecheck_STATIC_LIBRARIES)
+LOCAL_C_INCLUDES += external/llvm/include
+LOCAL_C_INCLUDES += external/llvm/host/include
+LOCAL_LDLIBS += -lpthread -lm -ldl
+LOCAL_CFLAGS += -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS
+
+#REQUIRES_EH := 1
+#REQUIRES_RTTI := 1
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_EXECUTABLE)
diff --git a/utils/TableGen/Android.mk b/utils/TableGen/Android.mk
new file mode 100644
index 0000000..8117672
--- /dev/null
+++ b/utils/TableGen/Android.mk
@@ -0,0 +1,58 @@
+LOCAL_PATH:= $(call my-dir)
+
+tablegen_SRC_FILES := \
+  AsmMatcherEmitter.cpp \
+  AsmWriterEmitter.cpp \
+  AsmWriterInst.cpp \
+  CallingConvEmitter.cpp \
+  CodeEmitterGen.cpp \
+  CodeGenDAGPatterns.cpp \
+  CodeGenInstruction.cpp \
+  CodeGenMapTable.cpp \
+  CodeGenRegisters.cpp \
+  CodeGenSchedule.cpp \
+  CodeGenTarget.cpp \
+  CTagsEmitter.cpp \
+  DAGISelEmitter.cpp \
+  DAGISelMatcherEmitter.cpp \
+  DAGISelMatcherGen.cpp \
+  DAGISelMatcherOpt.cpp \
+  DAGISelMatcher.cpp \
+  DFAPacketizerEmitter.cpp \
+  DisassemblerEmitter.cpp \
+  FastISelEmitter.cpp \
+  FixedLenDecoderEmitter.cpp \
+  InstrInfoEmitter.cpp \
+  IntrinsicEmitter.cpp \
+  OptParserEmitter.cpp \
+  PseudoLoweringEmitter.cpp \
+  RegisterInfoEmitter.cpp \
+  SetTheory.cpp \
+  SubtargetEmitter.cpp \
+  TableGen.cpp \
+  X86DisassemblerTables.cpp \
+  X86ModRMFilters.cpp \
+  X86RecognizableInstr.cpp
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := tblgen
+LOCAL_MODULE_TAGS := optional
+LOCAL_SRC_FILES := $(tablegen_SRC_FILES)
+
+REQUIRES_EH := 1
+REQUIRES_RTTI := 1
+
+LOCAL_STATIC_LIBRARIES := \
+  libLLVMTableGen \
+  libLLVMSupport
+
+LOCAL_LDLIBS += -lm
+ifeq ($(HOST_OS),windows)
+  LOCAL_LDLIBS += -limagehlp -lpsapi
+else
+  LOCAL_LDLIBS += -lpthread -ldl
+endif
+
+include $(LLVM_HOST_BUILD_MK)
+include $(BUILD_HOST_EXECUTABLE)