1From ca95c159402c89aff7dab5a29f3ea3b54c5a77a4 Mon Sep 17 00:00:00 2001
2From: Tim Murray <timmurray@google.com>
3Date: Thu, 27 Mar 2014 15:10:30 -0700
4Subject: [PATCH 4/5] Add Android makefiles for LLVM.
5
6Change-Id: I4f561d517605569e11af40bb191d056d7e7196de
7---
8 Android.mk                                 |  90 +++++++++++++
9 CleanSpec.mk                               |  54 ++++++++
10 clear_tblgen_vars.mk                       |   2 +
11 lib/Analysis/Android.mk                    |  80 +++++++++++
12 lib/Analysis/IPA/Android.mk                |  40 ++++++
13 lib/AsmParser/Android.mk                   |  34 +++++
14 lib/Bitcode/Reader/Android.mk              |  36 +++++
15 lib/Bitcode/Writer/Android.mk              |  37 +++++
16 lib/CodeGen/Android.mk                     | 143 ++++++++++++++++++++
17 lib/CodeGen/AsmPrinter/Android.mk          |  62 +++++++++
18 lib/CodeGen/SelectionDAG/Android.mk        |  56 ++++++++
19 lib/ExecutionEngine/Android.mk             |  18 +++
20 lib/ExecutionEngine/JIT/Android.mk         |  17 +++
21 lib/ExecutionEngine/MCJIT/Android.mk       |  16 +++
22 lib/ExecutionEngine/RuntimeDyld/Android.mk |  18 +++
23 lib/IR/Android.mk                          |  79 +++++++++++
24 lib/IRReader/Android.mk                    |  38 ++++++
25 lib/Linker/Android.mk                      |  32 +++++
26 lib/MC/Android.mk                          |  78 +++++++++++
27 lib/MC/MCDisassembler/Android.mk           |  15 +++
28 lib/MC/MCParser/Android.mk                 |  40 ++++++
29 lib/Object/Android.mk                      |  45 +++++++
30 lib/Option/Android.mk                      |  42 ++++++
31 lib/Support/Android.mk                     | 120 +++++++++++++++++
32 lib/TableGen/Android.mk                    |  39 ++++++
33 lib/Target/AArch64/Android.mk              |  67 ++++++++++
34 lib/Target/AArch64/AsmParser/Android.mk    |  63 +++++++++
35 lib/Target/AArch64/Disassembler/Android.mk |  55 ++++++++
36 lib/Target/AArch64/InstPrinter/Android.mk  |  57 ++++++++
37 lib/Target/AArch64/MCTargetDesc/Android.mk |  57 ++++++++
38 lib/Target/AArch64/TargetInfo/Android.mk   |  55 ++++++++
39 lib/Target/AArch64/Utils/Android.mk        |  36 +++++
40 lib/Target/ARM/Android.mk                  |  87 ++++++++++++
41 lib/Target/ARM/AsmParser/Android.mk        |  63 +++++++++
42 lib/Target/ARM/Disassembler/Android.mk     |  55 ++++++++
43 lib/Target/ARM/InstPrinter/Android.mk      |  57 ++++++++
44 lib/Target/ARM/MCTargetDesc/Android.mk     |  61 +++++++++
45 lib/Target/ARM/TargetInfo/Android.mk       |  55 ++++++++
46 lib/Target/Android.mk                      |  39 ++++++
47 lib/Target/Mips/Android.mk                 |  85 ++++++++++++
48 lib/Target/Mips/AsmParser/Android.mk       |  56 ++++++++
49 lib/Target/Mips/Disassembler/Android.mk    |  48 +++++++
50 lib/Target/Mips/InstPrinter/Android.mk     |  48 +++++++
51 lib/Target/Mips/MCTargetDesc/Android.mk    |  58 ++++++++
52 lib/Target/Mips/TargetInfo/Android.mk      |  47 +++++++
53 lib/Target/X86/Android.mk                  |  72 ++++++++++
54 lib/Target/X86/AsmParser/Android.mk        |  59 ++++++++
55 lib/Target/X86/Disassembler/Android.mk     |  56 ++++++++
56 lib/Target/X86/InstPrinter/Android.mk      |  57 ++++++++
57 lib/Target/X86/MCTargetDesc/Android.mk     |  56 ++++++++
58 lib/Target/X86/TargetInfo/Android.mk       |  55 ++++++++
59 lib/Target/X86/Utils/Android.mk            |  36 +++++
60 lib/Transforms/IPO/Android.mk              |  52 ++++++++
61 lib/Transforms/InstCombine/Android.mk      |  44 ++++++
62 lib/Transforms/Instrumentation/Android.mk  |  37 +++++
63 lib/Transforms/ObjCARC/Android.mk          |  40 ++++++
64 lib/Transforms/Scalar/Android.mk           |  73 ++++++++++
65 lib/Transforms/Utils/Android.mk            |  66 +++++++++
66 lib/Transforms/Vectorize/Android.mk        |  35 +++++
67 llvm-device-build.mk                       |  79 +++++++++++
68 llvm-gen-intrinsics.mk                     |  19 +++
69 llvm-host-build.mk                         |  64 +++++++++
70 llvm-tblgen-rules.mk                       | 208 +++++++++++++++++++++++++++++
71 llvm.mk                                    |  11 ++
72 shared_llvm.mk                             | 137 +++++++++++++++++++
73 tools/llc/Android.mk                       | 136 +++++++++++++++++++
74 tools/llvm-as/Android.mk                   |  28 ++++
75 tools/llvm-dis/Android.mk                  |  25 ++++
76 tools/llvm-link/Android.mk                 |  50 +++++++
77 tools/opt/Android.mk                       |  81 +++++++++++
78 utils/FileCheck/Android.mk                 |  23 ++++
79 utils/TableGen/Android.mk                  |  58 ++++++++
80 72 files changed, 4037 insertions(+)
81 create mode 100644 Android.mk
82 create mode 100644 CleanSpec.mk
83 create mode 100644 clear_tblgen_vars.mk
84 create mode 100644 lib/Analysis/Android.mk
85 create mode 100644 lib/Analysis/IPA/Android.mk
86 create mode 100644 lib/AsmParser/Android.mk
87 create mode 100644 lib/Bitcode/Reader/Android.mk
88 create mode 100644 lib/Bitcode/Writer/Android.mk
89 create mode 100644 lib/CodeGen/Android.mk
90 create mode 100644 lib/CodeGen/AsmPrinter/Android.mk
91 create mode 100644 lib/CodeGen/SelectionDAG/Android.mk
92 create mode 100644 lib/ExecutionEngine/Android.mk
93 create mode 100644 lib/ExecutionEngine/JIT/Android.mk
94 create mode 100644 lib/ExecutionEngine/MCJIT/Android.mk
95 create mode 100644 lib/ExecutionEngine/RuntimeDyld/Android.mk
96 create mode 100644 lib/IR/Android.mk
97 create mode 100644 lib/IRReader/Android.mk
98 create mode 100644 lib/Linker/Android.mk
99 create mode 100644 lib/MC/Android.mk
100 create mode 100644 lib/MC/MCDisassembler/Android.mk
101 create mode 100644 lib/MC/MCParser/Android.mk
102 create mode 100644 lib/Object/Android.mk
103 create mode 100644 lib/Option/Android.mk
104 create mode 100644 lib/Support/Android.mk
105 create mode 100644 lib/TableGen/Android.mk
106 create mode 100644 lib/Target/AArch64/Android.mk
107 create mode 100644 lib/Target/AArch64/AsmParser/Android.mk
108 create mode 100644 lib/Target/AArch64/Disassembler/Android.mk
109 create mode 100644 lib/Target/AArch64/InstPrinter/Android.mk
110 create mode 100644 lib/Target/AArch64/MCTargetDesc/Android.mk
111 create mode 100644 lib/Target/AArch64/TargetInfo/Android.mk
112 create mode 100644 lib/Target/AArch64/Utils/Android.mk
113 create mode 100644 lib/Target/ARM/Android.mk
114 create mode 100644 lib/Target/ARM/AsmParser/Android.mk
115 create mode 100644 lib/Target/ARM/Disassembler/Android.mk
116 create mode 100644 lib/Target/ARM/InstPrinter/Android.mk
117 create mode 100644 lib/Target/ARM/MCTargetDesc/Android.mk
118 create mode 100644 lib/Target/ARM/TargetInfo/Android.mk
119 create mode 100644 lib/Target/Android.mk
120 create mode 100644 lib/Target/Mips/Android.mk
121 create mode 100644 lib/Target/Mips/AsmParser/Android.mk
122 create mode 100644 lib/Target/Mips/Disassembler/Android.mk
123 create mode 100644 lib/Target/Mips/InstPrinter/Android.mk
124 create mode 100644 lib/Target/Mips/MCTargetDesc/Android.mk
125 create mode 100644 lib/Target/Mips/TargetInfo/Android.mk
126 create mode 100644 lib/Target/X86/Android.mk
127 create mode 100644 lib/Target/X86/AsmParser/Android.mk
128 create mode 100644 lib/Target/X86/Disassembler/Android.mk
129 create mode 100644 lib/Target/X86/InstPrinter/Android.mk
130 create mode 100644 lib/Target/X86/MCTargetDesc/Android.mk
131 create mode 100644 lib/Target/X86/TargetInfo/Android.mk
132 create mode 100644 lib/Target/X86/Utils/Android.mk
133 create mode 100644 lib/Transforms/IPO/Android.mk
134 create mode 100644 lib/Transforms/InstCombine/Android.mk
135 create mode 100644 lib/Transforms/Instrumentation/Android.mk
136 create mode 100644 lib/Transforms/ObjCARC/Android.mk
137 create mode 100644 lib/Transforms/Scalar/Android.mk
138 create mode 100644 lib/Transforms/Utils/Android.mk
139 create mode 100644 lib/Transforms/Vectorize/Android.mk
140 create mode 100644 llvm-device-build.mk
141 create mode 100644 llvm-gen-intrinsics.mk
142 create mode 100644 llvm-host-build.mk
143 create mode 100644 llvm-tblgen-rules.mk
144 create mode 100644 llvm.mk
145 create mode 100644 shared_llvm.mk
146 create mode 100644 tools/llc/Android.mk
147 create mode 100644 tools/llvm-as/Android.mk
148 create mode 100644 tools/llvm-dis/Android.mk
149 create mode 100644 tools/llvm-link/Android.mk
150 create mode 100644 tools/opt/Android.mk
151 create mode 100644 utils/FileCheck/Android.mk
152 create mode 100644 utils/TableGen/Android.mk
153
154diff --git a/Android.mk b/Android.mk
155new file mode 100644
156index 0000000..9f6e8a5
157--- /dev/null
158+++ b/Android.mk
159@@ -0,0 +1,90 @@
160+LOCAL_PATH := $(call my-dir)
161+LLVM_ROOT_PATH := $(LOCAL_PATH)
162+LLVM_ENABLE_ASSERTION := false
163+
164+include $(CLEAR_VARS)
165+
166+# LLVM Libraries
167+subdirs := \
168+  lib/Analysis \
169+  lib/Analysis/IPA \
170+  lib/AsmParser \
171+  lib/Bitcode/Reader \
172+  lib/Bitcode/Writer \
173+  lib/ExecutionEngine \
174+  lib/ExecutionEngine/RuntimeDyld \
175+  lib/ExecutionEngine/JIT \
176+  lib/ExecutionEngine/MCJIT \
177+  lib/CodeGen \
178+  lib/CodeGen/AsmPrinter \
179+  lib/CodeGen/SelectionDAG \
180+  lib/IR \
181+  lib/IRReader \
182+  lib/Linker \
183+  lib/MC \
184+  lib/MC/MCDisassembler \
185+  lib/MC/MCParser \
186+  lib/Object \
187+  lib/Option \
188+  lib/Support \
189+  lib/TableGen \
190+  lib/Target \
191+  lib/Transforms/IPO \
192+  lib/Transforms/InstCombine \
193+  lib/Transforms/Instrumentation \
194+  lib/Transforms/ObjCARC \
195+  lib/Transforms/Scalar \
196+  lib/Transforms/Utils \
197+  lib/Transforms/Vectorize \
198+  utils/FileCheck \
199+  utils/TableGen
200+
201+# ARM Code Generation Libraries
202+subdirs += \
203+  lib/Target/ARM \
204+  lib/Target/ARM/AsmParser \
205+  lib/Target/ARM/InstPrinter \
206+  lib/Target/ARM/Disassembler \
207+  lib/Target/ARM/MCTargetDesc \
208+  lib/Target/ARM/TargetInfo
209+
210+# ARM64 Code Generation Libraries
211+subdirs += \
212+  lib/Target/AArch64  \
213+  lib/Target/AArch64/AsmParser \
214+  lib/Target/AArch64/InstPrinter \
215+  lib/Target/AArch64/Disassembler \
216+  lib/Target/AArch64/MCTargetDesc \
217+  lib/Target/AArch64/TargetInfo \
218+  lib/Target/AArch64/Utils
219+
220+# MIPS Code Generation Libraries
221+subdirs += \
222+  lib/Target/Mips \
223+  lib/Target/Mips/AsmParser \
224+  lib/Target/Mips/InstPrinter \
225+  lib/Target/Mips/Disassembler \
226+  lib/Target/Mips/MCTargetDesc \
227+  lib/Target/Mips/TargetInfo
228+
229+# X86 Code Generation Libraries
230+subdirs += \
231+  lib/Target/X86 \
232+  lib/Target/X86/AsmParser \
233+  lib/Target/X86/InstPrinter \
234+  lib/Target/X86/Disassembler \
235+  lib/Target/X86/MCTargetDesc \
236+  lib/Target/X86/TargetInfo \
237+  lib/Target/X86/Utils
238+
239+# LLVM Command Line Tools
240+subdirs += tools/llc
241+subdirs += tools/llvm-as
242+subdirs += tools/llvm-dis
243+subdirs += tools/llvm-link
244+#subdirs += tools/opt
245+
246+include $(LOCAL_PATH)/llvm.mk
247+include $(LOCAL_PATH)/shared_llvm.mk
248+
249+include $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, $(subdirs)))
250diff --git a/CleanSpec.mk b/CleanSpec.mk
251new file mode 100644
252index 0000000..f756f04
253--- /dev/null
254+++ b/CleanSpec.mk
255@@ -0,0 +1,54 @@
256+# Copyright (C) 2007 The Android Open Source Project
257+#
258+# Licensed under the Apache License, Version 2.0 (the "License");
259+# you may not use this file except in compliance with the License.
260+# You may obtain a copy of the License at
261+#
262+#      http://www.apache.org/licenses/LICENSE-2.0
263+#
264+# Unless required by applicable law or agreed to in writing, software
265+# distributed under the License is distributed on an "AS IS" BASIS,
266+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
267+# See the License for the specific language governing permissions and
268+# limitations under the License.
269+#
270+
271+# If you don't need to do a full clean build but would like to touch
272+# a file or delete some intermediate files, add a clean step to the end
273+# of the list.  These steps will only be run once, if they haven't been
274+# run before.
275+#
276+# E.g.:
277+#     $(call add-clean-step, touch -c external/sqlite/sqlite3.h)
278+#     $(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libz_intermediates)
279+#
280+# Always use "touch -c" and "rm -f" or "rm -rf" to gracefully deal with
281+# files that are missing or have been moved.
282+#
283+# Use $(PRODUCT_OUT) to get to the "out/target/product/blah/" directory.
284+# Use $(OUT_DIR) to refer to the "out" directory.
285+#
286+# If you need to re-do something that's already mentioned, just copy
287+# the command and add it to the bottom of the list.  E.g., if a change
288+# that you made last week required touching a file and a change you
289+# made today requires touching the same file, just copy the old
290+# touch step and add it to the end of the list.
291+#
292+# ************************************************
293+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
294+# ************************************************
295+
296+# For example:
297+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/APPS/AndroidTests_intermediates)
298+#$(call add-clean-step, rm -rf $(OUT_DIR)/target/common/obj/JAVA_LIBRARIES/core_intermediates)
299+#$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
300+#$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
301+
302+# ************************************************
303+# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
304+# ************************************************
305+$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/stingray/obj/STATIC_LIBRARIES/libLLVM*)
306+$(call add-clean-step, rm -rf $(OUT_DIR)/target/product/stingray/obj/STATIC_LIBRARIES/libLLVMARMCodeGen_intermediates*)
307+$(call add-clean-step, rm -rf $(OUT_DIR)/host/$(HOST_PREBUILT_TAG)/obj/STATIC_LIBRARIES/libLLVMARM*)
308+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/STATIC_LIBRARIES/libLLVMARM*)
309+$(call add-clean-step, rm -rf $(PRODUCT_OUT)/obj/EXECUTABLES/app_process__asan_intermediates*)
310diff --git a/clear_tblgen_vars.mk b/clear_tblgen_vars.mk
311new file mode 100644
312index 0000000..6c9623e
313--- /dev/null
314+++ b/clear_tblgen_vars.mk
315@@ -0,0 +1,2 @@
316+TBLGEN_TABLES :=
317+TBLGEN_TD_DIR :=
318diff --git a/lib/Analysis/Android.mk b/lib/Analysis/Android.mk
319new file mode 100644
320index 0000000..76eee74
321--- /dev/null
322+++ b/lib/Analysis/Android.mk
323@@ -0,0 +1,80 @@
324+LOCAL_PATH:= $(call my-dir)
325+
326+analysis_SRC_FILES := \
327+  AliasAnalysis.cpp \
328+  AliasAnalysisCounter.cpp \
329+  AliasAnalysisEvaluator.cpp \
330+  AliasDebugger.cpp \
331+  AliasSetTracker.cpp \
332+  Analysis.cpp \
333+  BasicAliasAnalysis.cpp \
334+  BlockFrequencyInfo.cpp \
335+  BranchProbabilityInfo.cpp \
336+  CFG.cpp \
337+  CFGPrinter.cpp \
338+  CaptureTracking.cpp \
339+  CodeMetrics.cpp \
340+  ConstantFolding.cpp \
341+  CostModel.cpp \
342+  Delinearization.cpp \
343+  DependenceAnalysis.cpp \
344+  DomPrinter.cpp \
345+  DominanceFrontier.cpp \
346+  IVUsers.cpp \
347+  InstCount.cpp \
348+  InstructionSimplify.cpp \
349+  Interval.cpp \
350+  IntervalPartition.cpp \
351+  LazyValueInfo.cpp \
352+  LibCallAliasAnalysis.cpp \
353+  LibCallSemantics.cpp \
354+  Lint.cpp \
355+  Loads.cpp \
356+  LoopInfo.cpp \
357+  LoopPass.cpp \
358+  MemDepPrinter.cpp \
359+  MemoryBuiltins.cpp \
360+  MemoryDependenceAnalysis.cpp \
361+  ModuleDebugInfoPrinter.cpp \
362+  NoAliasAnalysis.cpp \
363+  PHITransAddr.cpp \
364+  PostDominators.cpp \
365+  PtrUseVisitor.cpp \
366+  RegionInfo.cpp \
367+  RegionPass.cpp \
368+  RegionPrinter.cpp \
369+  ScalarEvolution.cpp \
370+  ScalarEvolutionAliasAnalysis.cpp \
371+  ScalarEvolutionExpander.cpp \
372+  ScalarEvolutionNormalization.cpp \
373+  SparsePropagation.cpp \
374+  TargetTransformInfo.cpp \
375+  Trace.cpp \
376+  TypeBasedAliasAnalysis.cpp \
377+  ValueTracking.cpp
378+
379+# For the host
380+# =====================================================
381+include $(CLEAR_VARS)
382+
383+LOCAL_MODULE:= libLLVMAnalysis
384+LOCAL_MODULE_TAGS := optional
385+LOCAL_SRC_FILES := $(analysis_SRC_FILES)
386+
387+include $(LLVM_HOST_BUILD_MK)
388+include $(LLVM_GEN_INTRINSICS_MK)
389+include $(BUILD_HOST_STATIC_LIBRARY)
390+
391+# For the device
392+# =====================================================
393+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
394+include $(CLEAR_VARS)
395+
396+LOCAL_MODULE:= libLLVMAnalysis
397+LOCAL_MODULE_TAGS := optional
398+LOCAL_SRC_FILES := $(analysis_SRC_FILES)
399+
400+include $(LLVM_DEVICE_BUILD_MK)
401+include $(LLVM_GEN_INTRINSICS_MK)
402+include $(BUILD_STATIC_LIBRARY)
403+endif
404diff --git a/lib/Analysis/IPA/Android.mk b/lib/Analysis/IPA/Android.mk
405new file mode 100644
406index 0000000..d56d931
407--- /dev/null
408+++ b/lib/Analysis/IPA/Android.mk
409@@ -0,0 +1,40 @@
410+LOCAL_PATH:= $(call my-dir)
411+
412+analysis_ipa_SRC_FILES := \
413+  CallGraph.cpp \
414+  CallGraphSCCPass.cpp \
415+  CallPrinter.cpp \
416+  FindUsedTypes.cpp \
417+  GlobalsModRef.cpp \
418+  IPA.cpp \
419+  InlineCost.cpp
420+
421+# For the host
422+# =====================================================
423+include $(CLEAR_VARS)
424+
425+LOCAL_SRC_FILES := $(analysis_ipa_SRC_FILES)
426+
427+LOCAL_MODULE:= libLLVMipa
428+
429+LOCAL_MODULE_TAGS := optional
430+
431+include $(LLVM_HOST_BUILD_MK)
432+include $(LLVM_GEN_INTRINSICS_MK)
433+include $(BUILD_HOST_STATIC_LIBRARY)
434+
435+# For the device
436+# =====================================================
437+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
438+include $(CLEAR_VARS)
439+
440+LOCAL_SRC_FILES := $(analysis_ipa_SRC_FILES)
441+
442+LOCAL_MODULE:= libLLVMipa
443+
444+LOCAL_MODULE_TAGS := optional
445+
446+include $(LLVM_DEVICE_BUILD_MK)
447+include $(LLVM_GEN_INTRINSICS_MK)
448+include $(BUILD_STATIC_LIBRARY)
449+endif
450diff --git a/lib/AsmParser/Android.mk b/lib/AsmParser/Android.mk
451new file mode 100644
452index 0000000..7bd29a7
453--- /dev/null
454+++ b/lib/AsmParser/Android.mk
455@@ -0,0 +1,34 @@
456+LOCAL_PATH:= $(call my-dir)
457+
458+asm_parser_SRC_FILES := \
459+  LLLexer.cpp \
460+  LLParser.cpp \
461+  Parser.cpp
462+
463+# For the host
464+# =====================================================
465+include $(CLEAR_VARS)
466+
467+LOCAL_SRC_FILES := $(asm_parser_SRC_FILES)
468+
469+LOCAL_MODULE:= libLLVMAsmParser
470+
471+LOCAL_MODULE_TAGS := optional
472+
473+include $(LOCAL_PATH)/../../llvm-host-build.mk
474+include $(BUILD_HOST_STATIC_LIBRARY)
475+
476+# For the device
477+# =====================================================
478+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
479+include $(CLEAR_VARS)
480+
481+LOCAL_SRC_FILES := $(asm_parser_SRC_FILES)
482+
483+LOCAL_MODULE:= libLLVMAsmParser
484+
485+LOCAL_MODULE_TAGS := optional
486+
487+include $(LOCAL_PATH)/../../llvm-device-build.mk
488+include $(BUILD_STATIC_LIBRARY)
489+endif
490\ No newline at end of file
491diff --git a/lib/Bitcode/Reader/Android.mk b/lib/Bitcode/Reader/Android.mk
492new file mode 100644
493index 0000000..3bdcdda
494--- /dev/null
495+++ b/lib/Bitcode/Reader/Android.mk
496@@ -0,0 +1,36 @@
497+LOCAL_PATH:= $(call my-dir)
498+
499+bitcode_reader_SRC_FILES := \
500+	BitReader.cpp	\
501+	BitcodeReader.cpp \
502+	BitstreamReader.cpp
503+
504+# For the host
505+# =====================================================
506+include $(CLEAR_VARS)
507+
508+LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES)
509+
510+LOCAL_MODULE:= libLLVMBitReader
511+
512+LOCAL_MODULE_TAGS := optional
513+
514+include $(LLVM_HOST_BUILD_MK)
515+include $(LLVM_GEN_INTRINSICS_MK)
516+include $(BUILD_HOST_STATIC_LIBRARY)
517+
518+# For the device
519+# =====================================================
520+include $(CLEAR_VARS)
521+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
522+
523+LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES)
524+
525+LOCAL_MODULE:= libLLVMBitReader
526+
527+LOCAL_MODULE_TAGS := optional
528+
529+include $(LLVM_DEVICE_BUILD_MK)
530+include $(LLVM_GEN_INTRINSICS_MK)
531+include $(BUILD_STATIC_LIBRARY)
532+endif
533diff --git a/lib/Bitcode/Writer/Android.mk b/lib/Bitcode/Writer/Android.mk
534new file mode 100644
535index 0000000..6aa208c
536--- /dev/null
537+++ b/lib/Bitcode/Writer/Android.mk
538@@ -0,0 +1,37 @@
539+LOCAL_PATH:= $(call my-dir)
540+
541+bitcode_writer_SRC_FILES := \
542+	BitWriter.cpp	\
543+	BitcodeWriter.cpp	\
544+	BitcodeWriterPass.cpp	\
545+	ValueEnumerator.cpp
546+
547+# For the host
548+# =====================================================
549+include $(CLEAR_VARS)
550+
551+LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES)
552+
553+LOCAL_MODULE:= libLLVMBitWriter
554+
555+LOCAL_MODULE_TAGS := optional
556+
557+include $(LLVM_HOST_BUILD_MK)
558+include $(LLVM_GEN_INTRINSICS_MK)
559+include $(BUILD_HOST_STATIC_LIBRARY)
560+
561+# For the device
562+# =====================================================
563+include $(CLEAR_VARS)
564+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
565+
566+LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES)
567+
568+LOCAL_MODULE:= libLLVMBitWriter
569+
570+LOCAL_MODULE_TAGS := optional
571+
572+include $(LLVM_DEVICE_BUILD_MK)
573+include $(LLVM_GEN_INTRINSICS_MK)
574+include $(BUILD_STATIC_LIBRARY)
575+endif
576diff --git a/lib/CodeGen/Android.mk b/lib/CodeGen/Android.mk
577new file mode 100644
578index 0000000..26f04d0
579--- /dev/null
580+++ b/lib/CodeGen/Android.mk
581@@ -0,0 +1,143 @@
582+LOCAL_PATH:= $(call my-dir)
583+
584+codegen_SRC_FILES := \
585+  AggressiveAntiDepBreaker.cpp \
586+  AllocationOrder.cpp \
587+  Analysis.cpp \
588+  BasicTargetTransformInfo.cpp \
589+  BranchFolding.cpp \
590+  CalcSpillWeights.cpp \
591+  CallingConvLower.cpp \
592+  CodeGen.cpp \
593+  CodeGenPrepare.cpp \
594+  CriticalAntiDepBreaker.cpp \
595+  DeadMachineInstructionElim.cpp \
596+  DFAPacketizer.cpp \
597+  DwarfEHPrepare.cpp \
598+  EarlyIfConversion.cpp \
599+  EdgeBundles.cpp \
600+  ErlangGC.cpp \
601+  ExecutionDepsFix.cpp \
602+  ExpandISelPseudos.cpp \
603+  ExpandPostRAPseudos.cpp \
604+  GCMetadata.cpp \
605+  GCMetadataPrinter.cpp \
606+  GCStrategy.cpp \
607+  IfConversion.cpp \
608+  InlineSpiller.cpp \
609+  InterferenceCache.cpp \
610+  IntrinsicLowering.cpp \
611+  JITCodeEmitter.cpp \
612+  LatencyPriorityQueue.cpp \
613+  LexicalScopes.cpp \
614+  LiveDebugVariables.cpp \
615+  LiveIntervalAnalysis.cpp \
616+  LiveInterval.cpp \
617+  LiveIntervalUnion.cpp \
618+  LivePhysRegs.cpp \
619+  LiveRangeCalc.cpp \
620+  LiveRangeEdit.cpp \
621+  LiveRegMatrix.cpp \
622+  LiveStackAnalysis.cpp \
623+  LiveVariables.cpp \
624+  LLVMTargetMachine.cpp \
625+  LocalStackSlotAllocation.cpp \
626+  MachineBasicBlock.cpp \
627+  MachineBlockFrequencyInfo.cpp \
628+  MachineBlockPlacement.cpp \
629+  MachineBranchProbabilityInfo.cpp \
630+  MachineCodeEmitter.cpp \
631+  MachineCopyPropagation.cpp \
632+  MachineCSE.cpp \
633+  MachineDominators.cpp \
634+  MachineFunctionAnalysis.cpp \
635+  MachineFunction.cpp \
636+  MachineFunctionPass.cpp \
637+  MachineFunctionPrinterPass.cpp \
638+  MachineInstrBundle.cpp \
639+  MachineInstr.cpp \
640+  MachineLICM.cpp \
641+  MachineLoopInfo.cpp \
642+  MachineModuleInfo.cpp \
643+  MachineModuleInfoImpls.cpp \
644+  MachinePassRegistry.cpp \
645+  MachinePostDominators.cpp \
646+  MachineRegisterInfo.cpp \
647+  MachineScheduler.cpp \
648+  MachineSink.cpp \
649+  MachineSSAUpdater.cpp \
650+  MachineTraceMetrics.cpp \
651+  MachineVerifier.cpp \
652+  OcamlGC.cpp \
653+  OptimizePHIs.cpp \
654+  Passes.cpp \
655+  PeepholeOptimizer.cpp \
656+  PHIElimination.cpp \
657+  PHIEliminationUtils.cpp \
658+  PostRASchedulerList.cpp \
659+  ProcessImplicitDefs.cpp \
660+  PrologEpilogInserter.cpp \
661+  PseudoSourceValue.cpp \
662+  RegAllocBase.cpp \
663+  RegAllocBasic.cpp \
664+  RegAllocFast.cpp \
665+  RegAllocGreedy.cpp \
666+  RegAllocPBQP.cpp \
667+  RegisterClassInfo.cpp \
668+  RegisterCoalescer.cpp \
669+  RegisterPressure.cpp \
670+  RegisterScavenging.cpp \
671+  ScheduleDAG.cpp \
672+  ScheduleDAGInstrs.cpp \
673+  ScheduleDAGPrinter.cpp \
674+  ScoreboardHazardRecognizer.cpp \
675+  ShadowStackGC.cpp \
676+  SjLjEHPrepare.cpp \
677+  SlotIndexes.cpp \
678+  Spiller.cpp \
679+  SpillPlacement.cpp \
680+  SplitKit.cpp \
681+  StackColoring.cpp \
682+  StackMapLivenessAnalysis.cpp \
683+  StackMaps.cpp \
684+  StackProtector.cpp \
685+  StackSlotColoring.cpp \
686+  TailDuplication.cpp \
687+  TargetFrameLoweringImpl.cpp \
688+  TargetInstrInfo.cpp \
689+  TargetLoweringBase.cpp \
690+  TargetLoweringObjectFileImpl.cpp \
691+  TargetOptionsImpl.cpp \
692+  TargetRegisterInfo.cpp \
693+  TargetSchedule.cpp \
694+  TwoAddressInstructionPass.cpp \
695+  UnreachableBlockElim.cpp \
696+  VirtRegMap.cpp
697+
698+# For the host
699+# =====================================================
700+include $(CLEAR_VARS)
701+
702+LOCAL_SRC_FILES := $(codegen_SRC_FILES)
703+LOCAL_MODULE:= libLLVMCodeGen
704+
705+LOCAL_MODULE_TAGS := optional
706+
707+include $(LLVM_HOST_BUILD_MK)
708+include $(LLVM_GEN_INTRINSICS_MK)
709+include $(BUILD_HOST_STATIC_LIBRARY)
710+
711+# For the device
712+# =====================================================
713+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
714+include $(CLEAR_VARS)
715+
716+LOCAL_SRC_FILES := $(codegen_SRC_FILES)
717+LOCAL_MODULE:= libLLVMCodeGen
718+
719+LOCAL_MODULE_TAGS := optional
720+
721+include $(LLVM_DEVICE_BUILD_MK)
722+include $(LLVM_GEN_INTRINSICS_MK)
723+include $(BUILD_STATIC_LIBRARY)
724+endif
725diff --git a/lib/CodeGen/AsmPrinter/Android.mk b/lib/CodeGen/AsmPrinter/Android.mk
726new file mode 100644
727index 0000000..1e403ee
728--- /dev/null
729+++ b/lib/CodeGen/AsmPrinter/Android.mk
730@@ -0,0 +1,62 @@
731+LOCAL_PATH := $(call my-dir)
732+
733+codegen_asmprinter_SRC_FILES := \
734+  AsmPrinter.cpp
735+
736+# For the host
737+# =====================================================
738+include $(CLEAR_VARS)
739+
740+LOCAL_SRC_FILES :=	\
741+	AsmPrinter.cpp	\
742+	AsmPrinterDwarf.cpp	\
743+	AsmPrinterInlineAsm.cpp	\
744+	ARMException.cpp	\
745+	DIE.cpp	\
746+	DIEHash.cpp \
747+	DwarfAccelTable.cpp \
748+	DwarfCFIException.cpp \
749+	DwarfDebug.cpp	\
750+	DwarfException.cpp	\
751+	DwarfUnit.cpp \
752+	ErlangGCPrinter.cpp \
753+	OcamlGCPrinter.cpp \
754+	Win64Exception.cpp \
755+	WinCodeViewLineTables.cpp
756+
757+LOCAL_MODULE:= libLLVMAsmPrinter
758+
759+LOCAL_MODULE_TAGS := optional
760+
761+include $(LLVM_HOST_BUILD_MK)
762+include $(LLVM_GEN_INTRINSICS_MK)
763+include $(BUILD_HOST_STATIC_LIBRARY)
764+
765+# For the device
766+# =====================================================
767+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
768+include $(CLEAR_VARS)
769+
770+LOCAL_SRC_FILES :=	\
771+	AsmPrinter.cpp \
772+	AsmPrinterDwarf.cpp \
773+	AsmPrinterInlineAsm.cpp \
774+	ARMException.cpp        \
775+	DIE.cpp \
776+	DIEHash.cpp \
777+	DwarfAccelTable.cpp \
778+	DwarfCFIException.cpp \
779+	DwarfDebug.cpp  \
780+	DwarfException.cpp      \
781+	ErlangGCPrinter.cpp \
782+	Win64Exception.cpp \
783+	$(LOCAL_SRC_FILES)
784+
785+LOCAL_MODULE:= libLLVMAsmPrinter
786+
787+LOCAL_MODULE_TAGS := optional
788+
789+include $(LLVM_DEVICE_BUILD_MK)
790+include $(LLVM_GEN_INTRINSICS_MK)
791+include $(BUILD_STATIC_LIBRARY)
792+endif
793diff --git a/lib/CodeGen/SelectionDAG/Android.mk b/lib/CodeGen/SelectionDAG/Android.mk
794new file mode 100644
795index 0000000..0e52ee3
796--- /dev/null
797+++ b/lib/CodeGen/SelectionDAG/Android.mk
798@@ -0,0 +1,56 @@
799+LOCAL_PATH:= $(call my-dir)
800+
801+codegen_selectiondag_SRC_FILES := \
802+  DAGCombiner.cpp \
803+  FastISel.cpp \
804+  FunctionLoweringInfo.cpp \
805+  InstrEmitter.cpp \
806+  LegalizeDAG.cpp \
807+  LegalizeFloatTypes.cpp \
808+  LegalizeIntegerTypes.cpp \
809+  LegalizeTypes.cpp \
810+  LegalizeTypesGeneric.cpp \
811+  LegalizeVectorOps.cpp \
812+  LegalizeVectorTypes.cpp \
813+  ResourcePriorityQueue.cpp \
814+  ScheduleDAGFast.cpp \
815+  ScheduleDAGRRList.cpp \
816+  ScheduleDAGSDNodes.cpp \
817+  ScheduleDAGVLIW.cpp \
818+  SelectionDAG.cpp \
819+  SelectionDAGBuilder.cpp \
820+  SelectionDAGDumper.cpp \
821+  SelectionDAGISel.cpp \
822+  SelectionDAGPrinter.cpp \
823+  TargetLowering.cpp \
824+  TargetSelectionDAGInfo.cpp
825+
826+# For the host
827+# =====================================================
828+include $(CLEAR_VARS)
829+
830+LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES)
831+
832+LOCAL_MODULE:= libLLVMSelectionDAG
833+
834+LOCAL_MODULE_TAGS := optional
835+
836+include $(LLVM_HOST_BUILD_MK)
837+include $(LLVM_GEN_INTRINSICS_MK)
838+include $(BUILD_HOST_STATIC_LIBRARY)
839+
840+# For the device
841+# =====================================================
842+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
843+include $(CLEAR_VARS)
844+
845+LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES)
846+
847+LOCAL_MODULE:= libLLVMSelectionDAG
848+
849+LOCAL_MODULE_TAGS := optional
850+
851+include $(LLVM_DEVICE_BUILD_MK)
852+include $(LLVM_GEN_INTRINSICS_MK)
853+include $(BUILD_STATIC_LIBRARY)
854+endif
855diff --git a/lib/ExecutionEngine/Android.mk b/lib/ExecutionEngine/Android.mk
856new file mode 100644
857index 0000000..9f1befd
858--- /dev/null
859+++ b/lib/ExecutionEngine/Android.mk
860@@ -0,0 +1,18 @@
861+LOCAL_PATH:= $(call my-dir)
862+
863+# For the host
864+# =====================================================
865+include $(CLEAR_VARS)
866+
867+LOCAL_SRC_FILES := \
868+	ExecutionEngineBindings.cpp \
869+	ExecutionEngine.cpp \
870+	RTDyldMemoryManager.cpp \
871+	TargetSelect.cpp
872+
873+LOCAL_MODULE:= libLLVMExecutionEngine
874+
875+LOCAL_MODULE_TAGS := optional
876+
877+include $(LLVM_HOST_BUILD_MK)
878+include $(BUILD_HOST_STATIC_LIBRARY)
879diff --git a/lib/ExecutionEngine/JIT/Android.mk b/lib/ExecutionEngine/JIT/Android.mk
880new file mode 100644
881index 0000000..0466ba0
882--- /dev/null
883+++ b/lib/ExecutionEngine/JIT/Android.mk
884@@ -0,0 +1,17 @@
885+LOCAL_PATH:= $(call my-dir)
886+
887+# For the host
888+# =====================================================
889+include $(CLEAR_VARS)
890+
891+LOCAL_SRC_FILES :=	\
892+	JIT.cpp	\
893+	JITEmitter.cpp	\
894+	JITMemoryManager.cpp
895+
896+LOCAL_MODULE:= libLLVMJIT
897+
898+LOCAL_MODULE_TAGS := optional
899+
900+include $(LLVM_HOST_BUILD_MK)
901+include $(BUILD_HOST_STATIC_LIBRARY)
902diff --git a/lib/ExecutionEngine/MCJIT/Android.mk b/lib/ExecutionEngine/MCJIT/Android.mk
903new file mode 100644
904index 0000000..0314958
905--- /dev/null
906+++ b/lib/ExecutionEngine/MCJIT/Android.mk
907@@ -0,0 +1,16 @@
908+LOCAL_PATH:= $(call my-dir)
909+
910+# For the host
911+# =====================================================
912+include $(CLEAR_VARS)
913+
914+LOCAL_SRC_FILES :=	\
915+	MCJIT.cpp \
916+	SectionMemoryManager.cpp
917+
918+LOCAL_MODULE:= libLLVMMCJIT
919+
920+LOCAL_MODULE_TAGS := optional
921+
922+include $(LLVM_HOST_BUILD_MK)
923+include $(BUILD_HOST_STATIC_LIBRARY)
924diff --git a/lib/ExecutionEngine/RuntimeDyld/Android.mk b/lib/ExecutionEngine/RuntimeDyld/Android.mk
925new file mode 100644
926index 0000000..e98e80a
927--- /dev/null
928+++ b/lib/ExecutionEngine/RuntimeDyld/Android.mk
929@@ -0,0 +1,18 @@
930+LOCAL_PATH:= $(call my-dir)
931+
932+# For the host
933+# =====================================================
934+include $(CLEAR_VARS)
935+
936+LOCAL_SRC_FILES :=	\
937+	GDBRegistrar.cpp \
938+	RuntimeDyld.cpp \
939+	RuntimeDyldELF.cpp \
940+	RuntimeDyldMachO.cpp
941+
942+LOCAL_MODULE:= libLLVMRuntimeDyld
943+
944+LOCAL_MODULE_TAGS := optional
945+
946+include $(LLVM_HOST_BUILD_MK)
947+include $(BUILD_HOST_STATIC_LIBRARY)
948diff --git a/lib/IR/Android.mk b/lib/IR/Android.mk
949new file mode 100644
950index 0000000..071bb04
951--- /dev/null
952+++ b/lib/IR/Android.mk
953@@ -0,0 +1,79 @@
954+LOCAL_PATH:= $(call my-dir)
955+
956+vmcore_SRC_FILES := \
957+  AsmWriter.cpp \
958+  Attributes.cpp \
959+  AutoUpgrade.cpp \
960+  BasicBlock.cpp \
961+  ConstantFold.cpp \
962+  ConstantRange.cpp \
963+  Constants.cpp \
964+  Core.cpp \
965+  DataLayout.cpp \
966+  DebugInfo.cpp \
967+  DebugLoc.cpp \
968+  DiagnosticInfo.cpp \
969+  DiagnosticPrinter.cpp \
970+  DIBuilder.cpp \
971+  Dominators.cpp \
972+  Function.cpp \
973+  GVMaterializer.cpp \
974+  Globals.cpp \
975+  IRBuilder.cpp \
976+  IRPrintingPasses.cpp \
977+  InlineAsm.cpp \
978+  Instruction.cpp \
979+  Instructions.cpp \
980+  IntrinsicInst.cpp \
981+  LLVMContext.cpp \
982+  LLVMContextImpl.cpp \
983+  LeakDetector.cpp \
984+  LegacyPassManager.cpp \
985+  Mangler.cpp \
986+  Metadata.cpp \
987+  Module.cpp \
988+  Pass.cpp \
989+  PassManager.cpp \
990+  PassRegistry.cpp \
991+  Type.cpp \
992+  TypeFinder.cpp \
993+  Use.cpp \
994+  User.cpp \
995+  Value.cpp \
996+  ValueSymbolTable.cpp \
997+  ValueTypes.cpp \
998+  Verifier.cpp
999+
1000+# For the host
1001+# =====================================================
1002+include $(CLEAR_VARS)
1003+
1004+REQUIRES_RTTI := 1
1005+
1006+LOCAL_SRC_FILES := $(vmcore_SRC_FILES)
1007+
1008+LOCAL_MODULE:= libLLVMCore
1009+
1010+LOCAL_MODULE_TAGS := optional
1011+
1012+include $(LLVM_HOST_BUILD_MK)
1013+include $(LLVM_GEN_INTRINSICS_MK)
1014+include $(BUILD_HOST_STATIC_LIBRARY)
1015+
1016+# For the device
1017+# =====================================================
1018+include $(CLEAR_VARS)
1019+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1020+
1021+REQUIRES_RTTI := 1
1022+
1023+LOCAL_SRC_FILES := $(vmcore_SRC_FILES)
1024+
1025+LOCAL_MODULE:= libLLVMCore
1026+
1027+LOCAL_MODULE_TAGS := optional
1028+
1029+include $(LLVM_DEVICE_BUILD_MK)
1030+include $(LLVM_GEN_INTRINSICS_MK)
1031+include $(BUILD_STATIC_LIBRARY)
1032+endif
1033diff --git a/lib/IRReader/Android.mk b/lib/IRReader/Android.mk
1034new file mode 100644
1035index 0000000..d620521
1036--- /dev/null
1037+++ b/lib/IRReader/Android.mk
1038@@ -0,0 +1,38 @@
1039+LOCAL_PATH:= $(call my-dir)
1040+
1041+irreader_SRC_FILES := \
1042+  IRReader.cpp
1043+
1044+# For the host
1045+# =====================================================
1046+include $(CLEAR_VARS)
1047+
1048+REQUIRES_RTTI := 1
1049+
1050+LOCAL_SRC_FILES := $(irreader_SRC_FILES)
1051+
1052+LOCAL_MODULE:= libLLVMIRReader
1053+
1054+LOCAL_MODULE_TAGS := optional
1055+
1056+include $(LLVM_HOST_BUILD_MK)
1057+include $(LLVM_GEN_INTRINSICS_MK)
1058+include $(BUILD_HOST_STATIC_LIBRARY)
1059+
1060+# For the device
1061+# =====================================================
1062+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1063+include $(CLEAR_VARS)
1064+
1065+REQUIRES_RTTI := 1
1066+
1067+LOCAL_SRC_FILES := $(irreader_SRC_FILES)
1068+
1069+LOCAL_MODULE:= libLLVMIRReader
1070+
1071+LOCAL_MODULE_TAGS := optional
1072+
1073+include $(LLVM_DEVICE_BUILD_MK)
1074+include $(LLVM_GEN_INTRINSICS_MK)
1075+include $(BUILD_STATIC_LIBRARY)
1076+endif
1077\ No newline at end of file
1078diff --git a/lib/Linker/Android.mk b/lib/Linker/Android.mk
1079new file mode 100644
1080index 0000000..161b2ae
1081--- /dev/null
1082+++ b/lib/Linker/Android.mk
1083@@ -0,0 +1,32 @@
1084+LOCAL_PATH:= $(call my-dir)
1085+
1086+linker_SRC_FILES := \
1087+  LinkModules.cpp
1088+
1089+# For the host
1090+# =====================================================
1091+include $(CLEAR_VARS)
1092+include $(CLEAR_TBLGEN_VARS)
1093+
1094+LOCAL_SRC_FILES := $(linker_SRC_FILES)
1095+
1096+LOCAL_MODULE:= libLLVMLinker
1097+LOCAL_MODULE_TAGS := optional
1098+
1099+include $(LLVM_HOST_BUILD_MK)
1100+include $(BUILD_HOST_STATIC_LIBRARY)
1101+
1102+# For the device
1103+# =====================================================
1104+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1105+include $(CLEAR_VARS)
1106+
1107+LOCAL_SRC_FILES := $(linker_SRC_FILES)
1108+
1109+LOCAL_MODULE:= libLLVMLinker
1110+LOCAL_MODULE_TAGS := optional
1111+
1112+include $(LLVM_DEVICE_BUILD_MK)
1113+include $(LLVM_GEN_INTRINSICS_MK)
1114+include $(BUILD_STATIC_LIBRARY)
1115+endif
1116diff --git a/lib/MC/Android.mk b/lib/MC/Android.mk
1117new file mode 100644
1118index 0000000..abf346b
1119--- /dev/null
1120+++ b/lib/MC/Android.mk
1121@@ -0,0 +1,78 @@
1122+LOCAL_PATH:= $(call my-dir)
1123+
1124+mc_SRC_FILES := \
1125+  ELFObjectWriter.cpp \
1126+  MachObjectWriter.cpp \
1127+  MCAsmBackend.cpp \
1128+  MCAsmInfo.cpp \
1129+  MCAsmInfoCOFF.cpp \
1130+  MCAsmInfoDarwin.cpp \
1131+  MCAsmInfoELF.cpp \
1132+  MCAsmStreamer.cpp \
1133+  MCAssembler.cpp \
1134+  MCCodeEmitter.cpp \
1135+  MCCodeGenInfo.cpp \
1136+  MCContext.cpp \
1137+  MCDisassembler.cpp \
1138+  MCDwarf.cpp \
1139+  MCELF.cpp \
1140+  MCELFObjectTargetWriter.cpp \
1141+  MCELFStreamer.cpp \
1142+  MCExpr.cpp \
1143+  MCExternalSymbolizer.cpp \
1144+  MCFixup.cpp \
1145+  MCInst.cpp \
1146+  MCInstPrinter.cpp \
1147+  MCInstrAnalysis.cpp \
1148+  MCLabel.cpp \
1149+  MCLinkerOptimizationHint.cpp \
1150+  MCMachObjectTargetWriter.cpp \
1151+  MCMachOStreamer.cpp \
1152+  MCNullStreamer.cpp \
1153+  MCObjectFileInfo.cpp \
1154+  MCObjectStreamer.cpp \
1155+  MCObjectWriter.cpp \
1156+  MCRegisterInfo.cpp \
1157+  MCRelocationInfo.cpp \
1158+  MCSection.cpp \
1159+  MCSectionCOFF.cpp	\
1160+  MCSectionELF.cpp \
1161+  MCSectionMachO.cpp \
1162+  MCStreamer.cpp \
1163+  MCSubtargetInfo.cpp \
1164+  MCSymbol.cpp \
1165+  MCSymbolizer.cpp \
1166+  MCValue.cpp \
1167+  MCWin64EH.cpp \
1168+  WinCOFFObjectWriter.cpp \
1169+  WinCOFFStreamer.cpp \
1170+  SubtargetFeature.cpp
1171+
1172+# For the host
1173+# =====================================================
1174+include $(CLEAR_VARS)
1175+
1176+LOCAL_SRC_FILES := $(mc_SRC_FILES)
1177+
1178+LOCAL_MODULE:= libLLVMMC
1179+
1180+LOCAL_MODULE_TAGS := optional
1181+
1182+
1183+include $(LLVM_HOST_BUILD_MK)
1184+include $(BUILD_HOST_STATIC_LIBRARY)
1185+
1186+# For the device
1187+# =====================================================
1188+include $(CLEAR_VARS)
1189+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1190+
1191+LOCAL_SRC_FILES := $(mc_SRC_FILES)
1192+
1193+LOCAL_MODULE:= libLLVMMC
1194+
1195+LOCAL_MODULE_TAGS := optional
1196+
1197+include $(LLVM_DEVICE_BUILD_MK)
1198+include $(BUILD_STATIC_LIBRARY)
1199+endif
1200diff --git a/lib/MC/MCDisassembler/Android.mk b/lib/MC/MCDisassembler/Android.mk
1201new file mode 100644
1202index 0000000..7f73df3
1203--- /dev/null
1204+++ b/lib/MC/MCDisassembler/Android.mk
1205@@ -0,0 +1,15 @@
1206+LOCAL_PATH:= $(call my-dir)
1207+
1208+# For the host
1209+# =====================================================
1210+include $(CLEAR_VARS)
1211+
1212+LOCAL_SRC_FILES :=	\
1213+	Disassembler.cpp
1214+
1215+LOCAL_MODULE:= libLLVMMCDisassembler
1216+
1217+LOCAL_MODULE_TAGS := optional
1218+
1219+include $(LLVM_HOST_BUILD_MK)
1220+include $(BUILD_HOST_STATIC_LIBRARY)
1221diff --git a/lib/MC/MCParser/Android.mk b/lib/MC/MCParser/Android.mk
1222new file mode 100644
1223index 0000000..505a12b
1224--- /dev/null
1225+++ b/lib/MC/MCParser/Android.mk
1226@@ -0,0 +1,40 @@
1227+LOCAL_PATH:= $(call my-dir)
1228+
1229+mc_parser_SRC_FILES := \
1230+  AsmLexer.cpp \
1231+  AsmParser.cpp \
1232+  COFFAsmParser.cpp \
1233+  DarwinAsmParser.cpp \
1234+  ELFAsmParser.cpp \
1235+  MCAsmLexer.cpp \
1236+  MCAsmParser.cpp \
1237+  MCAsmParserExtension.cpp \
1238+  MCTargetAsmParser.cpp
1239+
1240+# For the host
1241+# =====================================================
1242+include $(CLEAR_VARS)
1243+
1244+LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
1245+
1246+LOCAL_MODULE:= libLLVMMCParser
1247+
1248+LOCAL_MODULE_TAGS := optional
1249+
1250+include $(LLVM_HOST_BUILD_MK)
1251+include $(BUILD_HOST_STATIC_LIBRARY)
1252+
1253+# For the device
1254+# =====================================================
1255+include $(CLEAR_VARS)
1256+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1257+
1258+LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
1259+
1260+LOCAL_MODULE:= libLLVMMCParser
1261+
1262+LOCAL_MODULE_TAGS := optional
1263+
1264+include $(LLVM_DEVICE_BUILD_MK)
1265+include $(BUILD_STATIC_LIBRARY)
1266+endif
1267diff --git a/lib/Object/Android.mk b/lib/Object/Android.mk
1268new file mode 100644
1269index 0000000..7dfa44f
1270--- /dev/null
1271+++ b/lib/Object/Android.mk
1272@@ -0,0 +1,45 @@
1273+LOCAL_PATH := $(call my-dir)
1274+
1275+object_SRC_FILES := \
1276+  Archive.cpp \
1277+  Binary.cpp \
1278+  COFFObjectFile.cpp \
1279+  ELF.cpp \
1280+  ELFObjectFile.cpp \
1281+  Error.cpp \
1282+  IRObjectFile.cpp \
1283+  MachOObjectFile.cpp \
1284+  MachOUniversal.cpp \
1285+  Object.cpp \
1286+  ObjectFile.cpp \
1287+  SymbolicFile.cpp
1288+
1289+
1290+# For the host
1291+# =====================================================
1292+include $(CLEAR_VARS)
1293+include $(CLEAR_TBLGEN_VARS)
1294+
1295+LOCAL_MODULE:= libLLVMObject
1296+LOCAL_MODULE_TAGS := optional
1297+
1298+LOCAL_SRC_FILES := $(object_SRC_FILES)
1299+
1300+include $(LLVM_HOST_BUILD_MK)
1301+include $(LLVM_GEN_INTRINSICS_MK)
1302+include $(BUILD_HOST_STATIC_LIBRARY)
1303+
1304+# For the device only
1305+# =====================================================
1306+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1307+include $(CLEAR_VARS)
1308+
1309+LOCAL_MODULE:= libLLVMObject
1310+LOCAL_MODULE_TAGS := optional
1311+
1312+LOCAL_SRC_FILES := $(object_SRC_FILES)
1313+
1314+include $(LLVM_DEVICE_BUILD_MK)
1315+include $(LLVM_GEN_INTRINSICS_MK)
1316+include $(BUILD_STATIC_LIBRARY)
1317+endif
1318diff --git a/lib/Option/Android.mk b/lib/Option/Android.mk
1319new file mode 100644
1320index 0000000..8680ce4
1321--- /dev/null
1322+++ b/lib/Option/Android.mk
1323@@ -0,0 +1,42 @@
1324+LOCAL_PATH:= $(call my-dir)
1325+
1326+option_SRC_FILES := \
1327+    Arg.cpp \
1328+    ArgList.cpp \
1329+    Option.cpp \
1330+    OptTable.cpp
1331+
1332+# For the host
1333+# =====================================================
1334+include $(CLEAR_VARS)
1335+
1336+# FIXME: This only requires RTTI because tblgen uses it.  Fix that.
1337+REQUIRES_RTTI := 1
1338+
1339+LOCAL_SRC_FILES := $(option_SRC_FILES)
1340+
1341+LOCAL_MODULE:= libLLVMOption
1342+
1343+LOCAL_CFLAGS := -D__android__
1344+
1345+LOCAL_MODULE_TAGS := optional
1346+
1347+include $(LLVM_HOST_BUILD_MK)
1348+include $(BUILD_HOST_STATIC_LIBRARY)
1349+
1350+# For the device
1351+# =====================================================
1352+include $(CLEAR_VARS)
1353+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1354+
1355+LOCAL_SRC_FILES := $(option_SRC_FILES)
1356+
1357+LOCAL_MODULE:= libLLVMOption
1358+
1359+LOCAL_CFLAGS := -D__android__
1360+
1361+LOCAL_MODULE_TAGS := optional
1362+
1363+include $(LLVM_DEVICE_BUILD_MK)
1364+include $(BUILD_STATIC_LIBRARY)
1365+endif
1366diff --git a/lib/Support/Android.mk b/lib/Support/Android.mk
1367new file mode 100644
1368index 0000000..165305e
1369--- /dev/null
1370+++ b/lib/Support/Android.mk
1371@@ -0,0 +1,120 @@
1372+LOCAL_PATH:= $(call my-dir)
1373+
1374+support_SRC_FILES := \
1375+  Allocator.cpp \
1376+  APFloat.cpp \
1377+  APInt.cpp \
1378+  APSInt.cpp \
1379+  ARMBuildAttrs.cpp \
1380+  Atomic.cpp \
1381+  BlockFrequency.cpp \
1382+  BranchProbability.cpp \
1383+  CommandLine.cpp \
1384+  Compression.cpp \
1385+  ConvertUTF.c \
1386+  ConvertUTFWrapper.cpp \
1387+  CrashRecoveryContext.cpp \
1388+  DAGDeltaAlgorithm.cpp \
1389+  DataStream.cpp \
1390+  DataExtractor.cpp \
1391+  Debug.cpp \
1392+  DeltaAlgorithm.cpp \
1393+  Dwarf.cpp \
1394+  DynamicLibrary.cpp \
1395+  Errno.cpp \
1396+  ErrorHandling.cpp \
1397+  FileUtilities.cpp \
1398+  FoldingSet.cpp \
1399+  FormattedStream.cpp \
1400+  GraphWriter.cpp \
1401+  Hashing.cpp \
1402+  Host.cpp \
1403+  IntervalMap.cpp \
1404+  IntEqClasses.cpp \
1405+  IntrusiveRefCntPtr.cpp \
1406+  IsInf.cpp \
1407+  IsNAN.cpp \
1408+  LEB128.cpp \
1409+  LineIterator.cpp \
1410+  Locale.cpp \
1411+  LockFileManager.cpp \
1412+  MD5.cpp \
1413+  ManagedStatic.cpp \
1414+  Memory.cpp \
1415+  MemoryBuffer.cpp \
1416+  MemoryObject.cpp \
1417+  Mutex.cpp \
1418+  Path.cpp \
1419+  PluginLoader.cpp \
1420+  PrettyStackTrace.cpp \
1421+  Process.cpp \
1422+  Program.cpp \
1423+  Regex.cpp \
1424+  RWMutex.cpp \
1425+  SearchForAddressOfSpecialSymbol.cpp \
1426+  Signals.cpp \
1427+  SmallPtrSet.cpp \
1428+  SmallVector.cpp \
1429+  SourceMgr.cpp \
1430+  Statistic.cpp \
1431+  StreamableMemoryObject.cpp \
1432+  StringExtras.cpp \
1433+  StringMap.cpp \
1434+  StringPool.cpp \
1435+  StringRef.cpp \
1436+  SystemUtils.cpp \
1437+  TargetRegistry.cpp \
1438+  Threading.cpp \
1439+  ThreadLocal.cpp \
1440+  Timer.cpp \
1441+  TimeValue.cpp \
1442+  ToolOutputFile.cpp \
1443+  Triple.cpp \
1444+  Twine.cpp \
1445+  Unicode.cpp \
1446+  Valgrind.cpp \
1447+  Watchdog.cpp \
1448+  circular_raw_ostream.cpp \
1449+  raw_os_ostream.cpp \
1450+  raw_ostream.cpp \
1451+  regcomp.c \
1452+  regerror.c \
1453+  regexec.c \
1454+  regfree.c \
1455+  regstrlcpy.c \
1456+  system_error.cpp
1457+
1458+# For the host
1459+# =====================================================
1460+include $(CLEAR_VARS)
1461+
1462+# FIXME: This only requires RTTI because tblgen uses it.  Fix that.
1463+REQUIRES_RTTI := 1
1464+
1465+LOCAL_SRC_FILES := $(support_SRC_FILES)
1466+
1467+LOCAL_MODULE:= libLLVMSupport
1468+
1469+LOCAL_CFLAGS := -D__android__
1470+
1471+LOCAL_MODULE_TAGS := optional
1472+
1473+include $(LLVM_HOST_BUILD_MK)
1474+include $(BUILD_HOST_STATIC_LIBRARY)
1475+
1476+# For the device
1477+# =====================================================
1478+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1479+include $(CLEAR_VARS)
1480+
1481+LOCAL_SRC_FILES := $(support_SRC_FILES)
1482+
1483+LOCAL_MODULE:= libLLVMSupport
1484+
1485+LOCAL_CFLAGS := -D__android__
1486+
1487+LOCAL_MODULE_TAGS := optional
1488+
1489+include $(LLVM_DEVICE_BUILD_MK)
1490+include $(BUILD_STATIC_LIBRARY)
1491+endif
1492diff --git a/lib/TableGen/Android.mk b/lib/TableGen/Android.mk
1493new file mode 100644
1494index 0000000..1f01ef7
1495--- /dev/null
1496+++ b/lib/TableGen/Android.mk
1497@@ -0,0 +1,39 @@
1498+LOCAL_PATH:= $(call my-dir)
1499+
1500+libtablegen_SRC_FILES := \
1501+  Error.cpp \
1502+  Main.cpp \
1503+  Record.cpp \
1504+  StringMatcher.cpp \
1505+  TableGenBackend.cpp \
1506+  TGLexer.cpp \
1507+  TGParser.cpp
1508+
1509+# For the host
1510+# =====================================================
1511+include $(CLEAR_VARS)
1512+
1513+LOCAL_SRC_FILES := $(libtablegen_SRC_FILES)
1514+LOCAL_MODULE:= libLLVMTableGen
1515+
1516+LOCAL_MODULE_TAGS := optional
1517+
1518+REQUIRES_EH := 1
1519+REQUIRES_RTTI := 1
1520+
1521+include $(LLVM_HOST_BUILD_MK)
1522+include $(BUILD_HOST_STATIC_LIBRARY)
1523+
1524+## For the device
1525+## =====================================================
1526+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1527+#include $(CLEAR_VARS)
1528+#
1529+#LOCAL_SRC_FILES := $(libtablegen_SRC_FILES)
1530+#LOCAL_MODULE:= libLLVMTableGen
1531+#
1532+#LOCAL_MODULE_TAGS := optional
1533+#
1534+#include $(LLVM_DEVICE_BUILD_MK)
1535+#include $(BUILD_STATIC_LIBRARY)
1536+endif
1537diff --git a/lib/Target/AArch64/Android.mk b/lib/Target/AArch64/Android.mk
1538new file mode 100644
1539index 0000000..144c2d3
1540--- /dev/null
1541+++ b/lib/Target/AArch64/Android.mk
1542@@ -0,0 +1,67 @@
1543+LOCAL_PATH := $(call my-dir)
1544+
1545+arm64_codegen_TBLGEN_TABLES := \
1546+  AArch64GenRegisterInfo.inc \
1547+  AArch64GenInstrInfo.inc \
1548+  AArch64GenCodeEmitter.inc \
1549+  AArch64GenMCCodeEmitter.inc \
1550+  AArch64GenMCPseudoLowering.inc \
1551+  AArch64GenAsmWriter.inc \
1552+  AArch64GenAsmMatcher.inc \
1553+  AArch64GenDAGISel.inc \
1554+  AArch64GenFastISel.inc \
1555+  AArch64GenCallingConv.inc \
1556+  AArch64GenSubtargetInfo.inc \
1557+  AArch64GenDisassemblerTables.inc
1558+
1559+arm64_codegen_SRC_FILES := \
1560+  AArch64AsmPrinter.cpp \
1561+  AArch64FrameLowering.cpp \
1562+  AArch64ISelDAGToDAG.cpp \
1563+  AArch64MachineFunctionInfo.cpp \
1564+  AArch64RegisterInfo.cpp \
1565+  AArch64Subtarget.cpp \
1566+  AArch64TargetObjectFile.cpp \
1567+  AArch64BranchFixupPass.cpp \
1568+  AArch64InstrInfo.cpp \
1569+  AArch64ISelLowering.cpp \
1570+  AArch64MCInstLower.cpp \
1571+  AArch64SelectionDAGInfo.cpp \
1572+  AArch64TargetMachine.cpp \
1573+  AArch64TargetTransformInfo.cpp
1574+
1575+# For the host
1576+# =====================================================
1577+include $(CLEAR_VARS)
1578+include $(CLEAR_TBLGEN_VARS)
1579+
1580+LOCAL_MODULE:= libLLVMARM64CodeGen
1581+LOCAL_MODULE_TAGS := optional
1582+
1583+LOCAL_SRC_FILES := $(arm64_codegen_SRC_FILES)
1584+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
1585+TBLGEN_TABLES := $(arm64_codegen_TBLGEN_TABLES)
1586+
1587+include $(LLVM_HOST_BUILD_MK)
1588+include $(LLVM_TBLGEN_RULES_MK)
1589+include $(LLVM_GEN_INTRINSICS_MK)
1590+include $(BUILD_HOST_STATIC_LIBRARY)
1591+
1592+# For the device only
1593+# =====================================================
1594+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1595+include $(CLEAR_VARS)
1596+include $(CLEAR_TBLGEN_VARS)
1597+
1598+LOCAL_MODULE:= libLLVMARM64CodeGen
1599+LOCAL_MODULE_TAGS := optional
1600+
1601+LOCAL_SRC_FILES := $(arm64_codegen_SRC_FILES)
1602+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
1603+TBLGEN_TABLES := $(arm64_codegen_TBLGEN_TABLES)
1604+
1605+include $(LLVM_DEVICE_BUILD_MK)
1606+include $(LLVM_TBLGEN_RULES_MK)
1607+include $(LLVM_GEN_INTRINSICS_MK)
1608+include $(BUILD_STATIC_LIBRARY)
1609+endif
1610diff --git a/lib/Target/AArch64/AsmParser/Android.mk b/lib/Target/AArch64/AsmParser/Android.mk
1611new file mode 100644
1612index 0000000..0588511
1613--- /dev/null
1614+++ b/lib/Target/AArch64/AsmParser/Android.mk
1615@@ -0,0 +1,63 @@
1616+LOCAL_PATH := $(call my-dir)
1617+
1618+#===---------------------------------------------------------------===
1619+# libARMAsmParser (common)
1620+#===---------------------------------------------------------------===
1621+
1622+arm64_asm_parser_SRC_FILES := \
1623+  AArch64AsmParser.cpp
1624+
1625+arm64_asm_parser_TBLGEN_TABLES := \
1626+  AArch64GenInstrInfo.inc \
1627+  AArch64GenRegisterInfo.inc \
1628+  AArch64GenAsmMatcher.inc \
1629+  AArch64GenSubtargetInfo.inc
1630+
1631+arm64_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
1632+
1633+arm64_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
1634+
1635+
1636+#===---------------------------------------------------------------===
1637+# libARM64AsmParser (host)
1638+#===---------------------------------------------------------------===
1639+include $(CLEAR_VARS)
1640+include $(CLEAR_TBLGEN_VARS)
1641+
1642+LOCAL_MODULE:= libLLVMARM64AsmParser
1643+LOCAL_MODULE_TAGS := optional
1644+LOCAL_SRC_FILES := $(arm64_asm_parser_SRC_FILES)
1645+LOCAL_C_INCLUDES += $(arm64_asm_parser_C_INCLUDES)
1646+TBLGEN_TABLES := $(arm64_asm_parser_TBLGEN_TABLES)
1647+TBLGEN_TD_DIR := $(arm64_asm_parser_TBLGEN_TD_DIR)
1648+
1649+include $(LLVM_HOST_BUILD_MK)
1650+include $(LLVM_TBLGEN_RULES_MK)
1651+ifneq (,$(filter windows darwin,$(HOST_OS)))
1652+# Override the default optimization level to work around taking forever (~50m)
1653+# to compile ARM64AsmParser.cpp on Mac with gcc 4.2,
1654+# or on Linux with mingw32msvc-gcc 4.2, which is used to cross-compile
1655+# the win_sdk.
1656+LOCAL_CFLAGS += -O0
1657+endif
1658+include $(BUILD_HOST_STATIC_LIBRARY)
1659+
1660+
1661+#===---------------------------------------------------------------===
1662+# libARM64AsmParser (target)
1663+#===---------------------------------------------------------------===
1664+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1665+include $(CLEAR_VARS)
1666+include $(CLEAR_TBLGEN_VARS)
1667+
1668+LOCAL_MODULE:= libLLVMARM64AsmParser
1669+LOCAL_MODULE_TAGS := optional
1670+LOCAL_SRC_FILES := $(arm64_asm_parser_SRC_FILES)
1671+LOCAL_C_INCLUDES += $(arm64_asm_parser_C_INCLUDES)
1672+TBLGEN_TABLES := $(arm64_asm_parser_TBLGEN_TABLES)
1673+TBLGEN_TD_DIR := $(arm64_asm_parser_TBLGEN_TD_DIR)
1674+
1675+include $(LLVM_DEVICE_BUILD_MK)
1676+include $(LLVM_TBLGEN_RULES_MK)
1677+include $(BUILD_STATIC_LIBRARY)
1678+endif
1679diff --git a/lib/Target/AArch64/Disassembler/Android.mk b/lib/Target/AArch64/Disassembler/Android.mk
1680new file mode 100644
1681index 0000000..fcc53ad
1682--- /dev/null
1683+++ b/lib/Target/AArch64/Disassembler/Android.mk
1684@@ -0,0 +1,55 @@
1685+LOCAL_PATH := $(call my-dir)
1686+
1687+arm64_disassembler_TBLGEN_TABLES := \
1688+  AArch64GenDisassemblerTables.inc \
1689+  AArch64GenInstrInfo.inc \
1690+  AArch64GenSubtargetInfo.inc \
1691+  AArch64GenRegisterInfo.inc
1692+
1693+arm64_disassembler_SRC_FILES := \
1694+  AArch64Disassembler.cpp
1695+
1696+# For the device
1697+# =====================================================
1698+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1699+include $(CLEAR_VARS)
1700+include $(CLEAR_TBLGEN_VARS)
1701+
1702+TBLGEN_TABLES := $(arm64_disassembler_TBLGEN_TABLES)
1703+
1704+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
1705+
1706+LOCAL_SRC_FILES := $(arm64_disassembler_SRC_FILES)
1707+
1708+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
1709+
1710+LOCAL_MODULE:= libLLVMARM64Disassembler
1711+
1712+LOCAL_MODULE_TAGS := optional
1713+
1714+include $(LLVM_DEVICE_BUILD_MK)
1715+include $(LLVM_TBLGEN_RULES_MK)
1716+include $(BUILD_STATIC_LIBRARY)
1717+endif
1718+
1719+# For the host
1720+# =====================================================
1721+include $(CLEAR_VARS)
1722+include $(CLEAR_TBLGEN_VARS)
1723+
1724+TBLGEN_TABLES := $(arm64_disassembler_TBLGEN_TABLES)
1725+
1726+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
1727+
1728+LOCAL_SRC_FILES := $(arm64_disassembler_SRC_FILES)
1729+
1730+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
1731+
1732+LOCAL_MODULE:= libLLVMARM64Disassembler
1733+
1734+LOCAL_MODULE_TAGS := optional
1735+
1736+include $(LLVM_HOST_BUILD_MK)
1737+include $(LLVM_TBLGEN_RULES_MK)
1738+include $(BUILD_HOST_STATIC_LIBRARY)
1739+
1740diff --git a/lib/Target/AArch64/InstPrinter/Android.mk b/lib/Target/AArch64/InstPrinter/Android.mk
1741new file mode 100644
1742index 0000000..ac9b0df
1743--- /dev/null
1744+++ b/lib/Target/AArch64/InstPrinter/Android.mk
1745@@ -0,0 +1,57 @@
1746+LOCAL_PATH := $(call my-dir)
1747+
1748+arm64_asm_printer_TBLGEN_TABLES := \
1749+  AArch64GenAsmWriter.inc \
1750+  AArch64GenRegisterInfo.inc \
1751+  AArch64GenSubtargetInfo.inc \
1752+  AArch64GenInstrInfo.inc
1753+
1754+arm64_asm_printer_SRC_FILES := \
1755+  AArch64InstPrinter.cpp
1756+
1757+# For the host
1758+# =====================================================
1759+include $(CLEAR_VARS)
1760+include $(CLEAR_TBLGEN_VARS)
1761+
1762+TBLGEN_TABLES := $(arm64_asm_printer_TBLGEN_TABLES)
1763+
1764+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
1765+
1766+LOCAL_SRC_FILES := $(arm64_asm_printer_SRC_FILES)
1767+
1768+LOCAL_MODULE:= libLLVMARM64AsmPrinter
1769+
1770+LOCAL_C_INCLUDES += \
1771+    $(LOCAL_PATH)/..
1772+
1773+LOCAL_MODULE_TAGS := optional
1774+
1775+include $(LLVM_HOST_BUILD_MK)
1776+include $(LLVM_TBLGEN_RULES_MK)
1777+include $(BUILD_HOST_STATIC_LIBRARY)
1778+
1779+# For the device only
1780+# =====================================================
1781+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1782+include $(CLEAR_VARS)
1783+include $(CLEAR_TBLGEN_VARS)
1784+
1785+TBLGEN_TABLES := $(arm64_asm_printer_TBLGEN_TABLES)
1786+
1787+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
1788+
1789+LOCAL_SRC_FILES := $(arm64_asm_printer_SRC_FILES)
1790+
1791+LOCAL_C_INCLUDES+= \
1792+    $(LOCAL_PATH)/..
1793+
1794+LOCAL_MODULE:= libLLVMARM64AsmPrinter
1795+
1796+LOCAL_MODULE_TAGS := optional
1797+
1798+include $(LLVM_DEVICE_BUILD_MK)
1799+include $(LLVM_TBLGEN_RULES_MK)
1800+include $(BUILD_STATIC_LIBRARY)
1801+endif
1802+
1803diff --git a/lib/Target/AArch64/MCTargetDesc/Android.mk b/lib/Target/AArch64/MCTargetDesc/Android.mk
1804new file mode 100644
1805index 0000000..edcf1f2
1806--- /dev/null
1807+++ b/lib/Target/AArch64/MCTargetDesc/Android.mk
1808@@ -0,0 +1,57 @@
1809+LOCAL_PATH := $(call my-dir)
1810+
1811+arm64_mc_desc_TBLGEN_TABLES := \
1812+  AArch64GenRegisterInfo.inc \
1813+  AArch64GenInstrInfo.inc \
1814+  AArch64GenMCCodeEmitter.inc \
1815+  AArch64GenSubtargetInfo.inc
1816+
1817+arm64_mc_desc_SRC_FILES := \
1818+  AArch64AsmBackend.cpp \
1819+  AArch64ELFObjectWriter.cpp \
1820+  AArch64ELFStreamer.cpp \
1821+  AArch64MCAsmInfo.cpp \
1822+  AArch64MCCodeEmitter.cpp \
1823+  AArch64MCExpr.cpp \
1824+  AArch64MCTargetDesc.cpp
1825+
1826+# For the host
1827+# =====================================================
1828+include $(CLEAR_VARS)
1829+include $(CLEAR_TBLGEN_VARS)
1830+
1831+
1832+LOCAL_MODULE:= libLLVMARM64Desc
1833+LOCAL_MODULE_TAGS := optional
1834+
1835+LOCAL_SRC_FILES := $(arm64_mc_desc_SRC_FILES)
1836+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
1837+
1838+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
1839+TBLGEN_TABLES := $(arm64_mc_desc_TBLGEN_TABLES)
1840+
1841+include $(LLVM_HOST_BUILD_MK)
1842+include $(LLVM_TBLGEN_RULES_MK)
1843+include $(LLVM_GEN_INTRINSICS_MK)
1844+include $(BUILD_HOST_STATIC_LIBRARY)
1845+
1846+# For the device only
1847+# =====================================================
1848+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1849+include $(CLEAR_VARS)
1850+include $(CLEAR_TBLGEN_VARS)
1851+
1852+LOCAL_MODULE:= libLLVMARM64Desc
1853+LOCAL_MODULE_TAGS := optional
1854+
1855+LOCAL_SRC_FILES := $(arm64_mc_desc_SRC_FILES)
1856+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
1857+
1858+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
1859+TBLGEN_TABLES := $(arm64_mc_desc_TBLGEN_TABLES)
1860+
1861+include $(LLVM_DEVICE_BUILD_MK)
1862+include $(LLVM_TBLGEN_RULES_MK)
1863+include $(LLVM_GEN_INTRINSICS_MK)
1864+include $(BUILD_STATIC_LIBRARY)
1865+endif
1866diff --git a/lib/Target/AArch64/TargetInfo/Android.mk b/lib/Target/AArch64/TargetInfo/Android.mk
1867new file mode 100644
1868index 0000000..cc650f6
1869--- /dev/null
1870+++ b/lib/Target/AArch64/TargetInfo/Android.mk
1871@@ -0,0 +1,55 @@
1872+LOCAL_PATH := $(call my-dir)
1873+
1874+arm64_target_info_TBLGEN_TABLES := \
1875+  AArch64GenSubtargetInfo.inc \
1876+  AArch64GenRegisterInfo.inc \
1877+  AArch64GenInstrInfo.inc
1878+
1879+arm64_target_info_SRC_FILES := \
1880+  AArch64TargetInfo.cpp
1881+
1882+# For the host
1883+# =====================================================
1884+include $(CLEAR_VARS)
1885+include $(CLEAR_TBLGEN_VARS)
1886+
1887+TBLGEN_TABLES := $(arm64_target_info_TBLGEN_TABLES)
1888+
1889+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
1890+
1891+LOCAL_SRC_FILES := $(arm64_target_info_SRC_FILES)
1892+
1893+LOCAL_C_INCLUDES +=	\
1894+	$(LOCAL_PATH)/..
1895+
1896+LOCAL_MODULE:= libLLVMARM64Info
1897+
1898+LOCAL_MODULE_TAGS := optional
1899+
1900+include $(LLVM_HOST_BUILD_MK)
1901+include $(LLVM_TBLGEN_RULES_MK)
1902+include $(BUILD_HOST_STATIC_LIBRARY)
1903+
1904+# For the device
1905+# =====================================================
1906+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1907+include $(CLEAR_VARS)
1908+include $(CLEAR_TBLGEN_VARS)
1909+
1910+TBLGEN_TABLES := $(arm64_target_info_TBLGEN_TABLES)
1911+
1912+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
1913+
1914+LOCAL_SRC_FILES := $(arm64_target_info_SRC_FILES)
1915+
1916+LOCAL_C_INCLUDES +=	\
1917+	$(LOCAL_PATH)/..
1918+
1919+LOCAL_MODULE:= libLLVMARM64Info
1920+
1921+LOCAL_MODULE_TAGS := optional
1922+
1923+include $(LLVM_DEVICE_BUILD_MK)
1924+include $(LLVM_TBLGEN_RULES_MK)
1925+include $(BUILD_STATIC_LIBRARY)
1926+endif
1927diff --git a/lib/Target/AArch64/Utils/Android.mk b/lib/Target/AArch64/Utils/Android.mk
1928new file mode 100644
1929index 0000000..b8bf795
1930--- /dev/null
1931+++ b/lib/Target/AArch64/Utils/Android.mk
1932@@ -0,0 +1,36 @@
1933+LOCAL_PATH := $(call my-dir)
1934+
1935+arm64_utils_SRC_FILES := \
1936+  AArch64BaseInfo.cpp
1937+
1938+# For the device
1939+# =====================================================
1940+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
1941+include $(CLEAR_VARS)
1942+
1943+LOCAL_SRC_FILES := $(arm64_utils_SRC_FILES)
1944+
1945+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
1946+
1947+LOCAL_MODULE:= libLLVMARM64Utils
1948+
1949+LOCAL_MODULE_TAGS := optional
1950+
1951+include $(LLVM_DEVICE_BUILD_MK)
1952+include $(BUILD_STATIC_LIBRARY)
1953+endif
1954+
1955+# For the host
1956+# =====================================================
1957+include $(CLEAR_VARS)
1958+
1959+LOCAL_SRC_FILES := $(arm64_utils_SRC_FILES)
1960+
1961+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
1962+
1963+LOCAL_MODULE:= libLLVMARM64Utils
1964+
1965+LOCAL_MODULE_TAGS := optional
1966+
1967+include $(LLVM_HOST_BUILD_MK)
1968+include $(BUILD_HOST_STATIC_LIBRARY)
1969diff --git a/lib/Target/ARM/Android.mk b/lib/Target/ARM/Android.mk
1970new file mode 100644
1971index 0000000..4be95aa
1972--- /dev/null
1973+++ b/lib/Target/ARM/Android.mk
1974@@ -0,0 +1,87 @@
1975+LOCAL_PATH := $(call my-dir)
1976+
1977+arm_codegen_TBLGEN_TABLES := \
1978+  ARMGenRegisterInfo.inc \
1979+  ARMGenInstrInfo.inc \
1980+  ARMGenCodeEmitter.inc \
1981+  ARMGenMCCodeEmitter.inc \
1982+  ARMGenMCPseudoLowering.inc \
1983+  ARMGenAsmWriter.inc \
1984+  ARMGenAsmMatcher.inc \
1985+  ARMGenDAGISel.inc \
1986+  ARMGenFastISel.inc \
1987+  ARMGenCallingConv.inc \
1988+  ARMGenSubtargetInfo.inc \
1989+  ARMGenDisassemblerTables.inc
1990+
1991+arm_codegen_SRC_FILES := \
1992+  A15SDOptimizer.cpp \
1993+  ARMAsmPrinter.cpp \
1994+  ARMAtomicExpandPass.cpp \
1995+  ARMBaseInstrInfo.cpp \
1996+  ARMBaseRegisterInfo.cpp \
1997+  ARMCodeEmitter.cpp \
1998+  ARMConstantIslandPass.cpp \
1999+  ARMConstantPoolValue.cpp \
2000+  ARMExpandPseudoInsts.cpp \
2001+  ARMFastISel.cpp \
2002+  ARMFrameLowering.cpp \
2003+  ARMHazardRecognizer.cpp \
2004+  ARMISelDAGToDAG.cpp \
2005+  ARMISelLowering.cpp \
2006+  ARMInstrInfo.cpp \
2007+  ARMJITInfo.cpp \
2008+  ARMLoadStoreOptimizer.cpp \
2009+  ARMMCInstLower.cpp \
2010+  ARMMachineFunctionInfo.cpp \
2011+  ARMOptimizeBarriersPass.cpp \
2012+  ARMRegisterInfo.cpp \
2013+  ARMSelectionDAGInfo.cpp \
2014+  ARMSubtarget.cpp \
2015+  ARMTargetMachine.cpp \
2016+  ARMTargetObjectFile.cpp \
2017+  ARMTargetTransformInfo.cpp \
2018+  MLxExpansionPass.cpp \
2019+  Thumb1FrameLowering.cpp \
2020+  Thumb1InstrInfo.cpp \
2021+  Thumb1RegisterInfo.cpp \
2022+  Thumb2ITBlockPass.cpp \
2023+  Thumb2InstrInfo.cpp \
2024+  Thumb2RegisterInfo.cpp \
2025+  Thumb2SizeReduction.cpp
2026+
2027+# For the host
2028+# =====================================================
2029+include $(CLEAR_VARS)
2030+include $(CLEAR_TBLGEN_VARS)
2031+
2032+LOCAL_MODULE:= libLLVMARMCodeGen
2033+LOCAL_MODULE_TAGS := optional
2034+
2035+LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES)
2036+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
2037+TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES)
2038+
2039+include $(LLVM_HOST_BUILD_MK)
2040+include $(LLVM_TBLGEN_RULES_MK)
2041+include $(LLVM_GEN_INTRINSICS_MK)
2042+include $(BUILD_HOST_STATIC_LIBRARY)
2043+
2044+# For the device only
2045+# =====================================================
2046+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2047+include $(CLEAR_VARS)
2048+include $(CLEAR_TBLGEN_VARS)
2049+
2050+LOCAL_MODULE:= libLLVMARMCodeGen
2051+LOCAL_MODULE_TAGS := optional
2052+
2053+LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES)
2054+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
2055+TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES)
2056+
2057+include $(LLVM_DEVICE_BUILD_MK)
2058+include $(LLVM_TBLGEN_RULES_MK)
2059+include $(LLVM_GEN_INTRINSICS_MK)
2060+include $(BUILD_STATIC_LIBRARY)
2061+endif
2062diff --git a/lib/Target/ARM/AsmParser/Android.mk b/lib/Target/ARM/AsmParser/Android.mk
2063new file mode 100644
2064index 0000000..5f88cc3
2065--- /dev/null
2066+++ b/lib/Target/ARM/AsmParser/Android.mk
2067@@ -0,0 +1,63 @@
2068+LOCAL_PATH := $(call my-dir)
2069+
2070+#===---------------------------------------------------------------===
2071+# libARMAsmParser (common)
2072+#===---------------------------------------------------------------===
2073+
2074+arm_asm_parser_SRC_FILES := \
2075+  ARMAsmParser.cpp
2076+
2077+arm_asm_parser_TBLGEN_TABLES := \
2078+  ARMGenInstrInfo.inc \
2079+  ARMGenRegisterInfo.inc \
2080+  ARMGenAsmMatcher.inc \
2081+  ARMGenSubtargetInfo.inc
2082+
2083+arm_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2084+
2085+arm_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
2086+
2087+
2088+#===---------------------------------------------------------------===
2089+# libARMAsmParser (host)
2090+#===---------------------------------------------------------------===
2091+include $(CLEAR_VARS)
2092+include $(CLEAR_TBLGEN_VARS)
2093+
2094+LOCAL_MODULE:= libLLVMARMAsmParser
2095+LOCAL_MODULE_TAGS := optional
2096+LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES)
2097+LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES)
2098+TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES)
2099+TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR)
2100+
2101+include $(LLVM_HOST_BUILD_MK)
2102+include $(LLVM_TBLGEN_RULES_MK)
2103+ifneq (,$(filter windows darwin,$(HOST_OS)))
2104+# Override the default optimization level to work around taking forever (~50m)
2105+# to compile ARMAsmParser.cpp on Mac with gcc 4.2,
2106+# or on Linux with mingw32msvc-gcc 4.2, which is used to cross-compile
2107+# the win_sdk.
2108+LOCAL_CFLAGS += -O0
2109+endif
2110+include $(BUILD_HOST_STATIC_LIBRARY)
2111+
2112+
2113+#===---------------------------------------------------------------===
2114+# libARMAsmParser (target)
2115+#===---------------------------------------------------------------===
2116+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2117+include $(CLEAR_VARS)
2118+include $(CLEAR_TBLGEN_VARS)
2119+
2120+LOCAL_MODULE:= libLLVMARMAsmParser
2121+LOCAL_MODULE_TAGS := optional
2122+LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES)
2123+LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES)
2124+TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES)
2125+TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR)
2126+
2127+include $(LLVM_DEVICE_BUILD_MK)
2128+include $(LLVM_TBLGEN_RULES_MK)
2129+include $(BUILD_STATIC_LIBRARY)
2130+endif
2131diff --git a/lib/Target/ARM/Disassembler/Android.mk b/lib/Target/ARM/Disassembler/Android.mk
2132new file mode 100644
2133index 0000000..3db61a5
2134--- /dev/null
2135+++ b/lib/Target/ARM/Disassembler/Android.mk
2136@@ -0,0 +1,55 @@
2137+LOCAL_PATH := $(call my-dir)
2138+
2139+arm_disassembler_TBLGEN_TABLES := \
2140+  ARMGenDisassemblerTables.inc \
2141+  ARMGenInstrInfo.inc \
2142+  ARMGenSubtargetInfo.inc \
2143+  ARMGenRegisterInfo.inc
2144+
2145+arm_disassembler_SRC_FILES := \
2146+  ARMDisassembler.cpp
2147+
2148+# For the device
2149+# =====================================================
2150+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2151+include $(CLEAR_VARS)
2152+include $(CLEAR_TBLGEN_VARS)
2153+
2154+TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES)
2155+
2156+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2157+
2158+LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES)
2159+
2160+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
2161+
2162+LOCAL_MODULE:= libLLVMARMDisassembler
2163+
2164+LOCAL_MODULE_TAGS := optional
2165+
2166+include $(LLVM_DEVICE_BUILD_MK)
2167+include $(LLVM_TBLGEN_RULES_MK)
2168+include $(BUILD_STATIC_LIBRARY)
2169+endif
2170+
2171+# For the host
2172+# =====================================================
2173+include $(CLEAR_VARS)
2174+include $(CLEAR_TBLGEN_VARS)
2175+
2176+TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES)
2177+
2178+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2179+
2180+LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES)
2181+
2182+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
2183+
2184+LOCAL_MODULE:= libLLVMARMDisassembler
2185+
2186+LOCAL_MODULE_TAGS := optional
2187+
2188+include $(LLVM_HOST_BUILD_MK)
2189+include $(LLVM_TBLGEN_RULES_MK)
2190+include $(BUILD_HOST_STATIC_LIBRARY)
2191+
2192diff --git a/lib/Target/ARM/InstPrinter/Android.mk b/lib/Target/ARM/InstPrinter/Android.mk
2193new file mode 100644
2194index 0000000..cefed76
2195--- /dev/null
2196+++ b/lib/Target/ARM/InstPrinter/Android.mk
2197@@ -0,0 +1,57 @@
2198+LOCAL_PATH := $(call my-dir)
2199+
2200+arm_asm_printer_TBLGEN_TABLES := \
2201+  ARMGenAsmWriter.inc \
2202+  ARMGenRegisterInfo.inc \
2203+  ARMGenSubtargetInfo.inc \
2204+  ARMGenInstrInfo.inc
2205+
2206+arm_asm_printer_SRC_FILES := \
2207+  ARMInstPrinter.cpp
2208+
2209+# For the host
2210+# =====================================================
2211+include $(CLEAR_VARS)
2212+include $(CLEAR_TBLGEN_VARS)
2213+
2214+TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES)
2215+
2216+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2217+
2218+LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES)
2219+
2220+LOCAL_MODULE:= libLLVMARMAsmPrinter
2221+
2222+LOCAL_C_INCLUDES += \
2223+    $(LOCAL_PATH)/..
2224+
2225+LOCAL_MODULE_TAGS := optional
2226+
2227+include $(LLVM_HOST_BUILD_MK)
2228+include $(LLVM_TBLGEN_RULES_MK)
2229+include $(BUILD_HOST_STATIC_LIBRARY)
2230+
2231+# For the device only
2232+# =====================================================
2233+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2234+include $(CLEAR_VARS)
2235+include $(CLEAR_TBLGEN_VARS)
2236+
2237+TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES)
2238+
2239+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2240+
2241+LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES)
2242+
2243+LOCAL_C_INCLUDES+= \
2244+    $(LOCAL_PATH)/..
2245+
2246+LOCAL_MODULE:= libLLVMARMAsmPrinter
2247+
2248+LOCAL_MODULE_TAGS := optional
2249+
2250+include $(LLVM_DEVICE_BUILD_MK)
2251+include $(LLVM_TBLGEN_RULES_MK)
2252+include $(BUILD_STATIC_LIBRARY)
2253+endif
2254+
2255diff --git a/lib/Target/ARM/MCTargetDesc/Android.mk b/lib/Target/ARM/MCTargetDesc/Android.mk
2256new file mode 100644
2257index 0000000..074d29e
2258--- /dev/null
2259+++ b/lib/Target/ARM/MCTargetDesc/Android.mk
2260@@ -0,0 +1,61 @@
2261+LOCAL_PATH := $(call my-dir)
2262+
2263+arm_mc_desc_TBLGEN_TABLES := \
2264+  ARMGenRegisterInfo.inc \
2265+  ARMGenInstrInfo.inc \
2266+  ARMGenMCCodeEmitter.inc \
2267+  ARMGenSubtargetInfo.inc
2268+
2269+arm_mc_desc_SRC_FILES := \
2270+  ARMAsmBackend.cpp \
2271+  ARMELFObjectWriter.cpp \
2272+  ARMELFStreamer.cpp \
2273+  ARMMCAsmInfo.cpp \
2274+  ARMMCCodeEmitter.cpp \
2275+  ARMMCExpr.cpp \
2276+  ARMMCTargetDesc.cpp \
2277+  ARMMachObjectWriter.cpp \
2278+  ARMMachORelocationInfo.cpp \
2279+  ARMTargetStreamer.cpp \
2280+  ARMUnwindOpAsm.cpp
2281+
2282+# For the host
2283+# =====================================================
2284+include $(CLEAR_VARS)
2285+include $(CLEAR_TBLGEN_VARS)
2286+
2287+
2288+LOCAL_MODULE:= libLLVMARMDesc
2289+LOCAL_MODULE_TAGS := optional
2290+
2291+LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES)
2292+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
2293+
2294+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2295+TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES)
2296+
2297+include $(LLVM_HOST_BUILD_MK)
2298+include $(LLVM_TBLGEN_RULES_MK)
2299+include $(LLVM_GEN_INTRINSICS_MK)
2300+include $(BUILD_HOST_STATIC_LIBRARY)
2301+
2302+# For the device only
2303+# =====================================================
2304+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2305+include $(CLEAR_VARS)
2306+include $(CLEAR_TBLGEN_VARS)
2307+
2308+LOCAL_MODULE:= libLLVMARMDesc
2309+LOCAL_MODULE_TAGS := optional
2310+
2311+LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES)
2312+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
2313+
2314+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2315+TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES)
2316+
2317+include $(LLVM_DEVICE_BUILD_MK)
2318+include $(LLVM_TBLGEN_RULES_MK)
2319+include $(LLVM_GEN_INTRINSICS_MK)
2320+include $(BUILD_STATIC_LIBRARY)
2321+endif
2322diff --git a/lib/Target/ARM/TargetInfo/Android.mk b/lib/Target/ARM/TargetInfo/Android.mk
2323new file mode 100644
2324index 0000000..e31c2b8
2325--- /dev/null
2326+++ b/lib/Target/ARM/TargetInfo/Android.mk
2327@@ -0,0 +1,55 @@
2328+LOCAL_PATH := $(call my-dir)
2329+
2330+arm_target_info_TBLGEN_TABLES := \
2331+  ARMGenSubtargetInfo.inc \
2332+  ARMGenRegisterInfo.inc \
2333+  ARMGenInstrInfo.inc
2334+
2335+arm_target_info_SRC_FILES := \
2336+  ARMTargetInfo.cpp
2337+
2338+# For the host
2339+# =====================================================
2340+include $(CLEAR_VARS)
2341+include $(CLEAR_TBLGEN_VARS)
2342+
2343+TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES)
2344+
2345+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2346+
2347+LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES)
2348+
2349+LOCAL_C_INCLUDES +=	\
2350+	$(LOCAL_PATH)/..
2351+
2352+LOCAL_MODULE:= libLLVMARMInfo
2353+
2354+LOCAL_MODULE_TAGS := optional
2355+
2356+include $(LLVM_HOST_BUILD_MK)
2357+include $(LLVM_TBLGEN_RULES_MK)
2358+include $(BUILD_HOST_STATIC_LIBRARY)
2359+
2360+# For the device
2361+# =====================================================
2362+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2363+include $(CLEAR_VARS)
2364+include $(CLEAR_TBLGEN_VARS)
2365+
2366+TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES)
2367+
2368+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2369+
2370+LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES)
2371+
2372+LOCAL_C_INCLUDES +=	\
2373+	$(LOCAL_PATH)/..
2374+
2375+LOCAL_MODULE:= libLLVMARMInfo
2376+
2377+LOCAL_MODULE_TAGS := optional
2378+
2379+include $(LLVM_DEVICE_BUILD_MK)
2380+include $(LLVM_TBLGEN_RULES_MK)
2381+include $(BUILD_STATIC_LIBRARY)
2382+endif
2383diff --git a/lib/Target/Android.mk b/lib/Target/Android.mk
2384new file mode 100644
2385index 0000000..1b43ce4
2386--- /dev/null
2387+++ b/lib/Target/Android.mk
2388@@ -0,0 +1,39 @@
2389+LOCAL_PATH:= $(call my-dir)
2390+
2391+target_SRC_FILES := \
2392+  Target.cpp \
2393+  TargetIntrinsicInfo.cpp \
2394+  TargetJITInfo.cpp \
2395+  TargetLibraryInfo.cpp \
2396+  TargetLoweringObjectFile.cpp \
2397+  TargetMachineC.cpp \
2398+  TargetMachine.cpp \
2399+  TargetSubtargetInfo.cpp
2400+
2401+# For the host
2402+# =====================================================
2403+include $(CLEAR_VARS)
2404+
2405+LOCAL_SRC_FILES := $(target_SRC_FILES)
2406+
2407+LOCAL_MODULE:= libLLVMTarget
2408+
2409+LOCAL_MODULE_TAGS := optional
2410+
2411+include $(LLVM_HOST_BUILD_MK)
2412+include $(BUILD_HOST_STATIC_LIBRARY)
2413+
2414+# For the device
2415+# =====================================================
2416+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2417+include $(CLEAR_VARS)
2418+
2419+LOCAL_SRC_FILES := $(target_SRC_FILES)
2420+
2421+LOCAL_MODULE:= libLLVMTarget
2422+
2423+LOCAL_MODULE_TAGS := optional
2424+
2425+include $(LLVM_DEVICE_BUILD_MK)
2426+include $(BUILD_STATIC_LIBRARY)
2427+endif
2428diff --git a/lib/Target/Mips/Android.mk b/lib/Target/Mips/Android.mk
2429new file mode 100644
2430index 0000000..74b8a3b
2431--- /dev/null
2432+++ b/lib/Target/Mips/Android.mk
2433@@ -0,0 +1,85 @@
2434+LOCAL_PATH := $(call my-dir)
2435+
2436+mips_codegen_TBLGEN_TABLES := \
2437+  MipsGenRegisterInfo.inc \
2438+  MipsGenInstrInfo.inc \
2439+  MipsGenCodeEmitter.inc \
2440+  MipsGenMCCodeEmitter.inc \
2441+  MipsGenMCPseudoLowering.inc \
2442+  MipsGenAsmWriter.inc \
2443+  MipsGenDAGISel.inc \
2444+  MipsGenCallingConv.inc \
2445+  MipsGenSubtargetInfo.inc
2446+
2447+mips_codegen_SRC_FILES := \
2448+  Mips16FrameLowering.cpp \
2449+  Mips16HardFloat.cpp \
2450+  Mips16HardFloatInfo.cpp \
2451+  Mips16ISelDAGToDAG.cpp \
2452+  Mips16ISelLowering.cpp \
2453+  Mips16InstrInfo.cpp \
2454+  Mips16RegisterInfo.cpp \
2455+  MipsAnalyzeImmediate.cpp \
2456+  MipsAsmPrinter.cpp \
2457+  MipsCodeEmitter.cpp \
2458+  MipsConstantIslandPass.cpp \
2459+  MipsDelaySlotFiller.cpp \
2460+  MipsFrameLowering.cpp \
2461+  MipsInstrInfo.cpp \
2462+  MipsISelDAGToDAG.cpp \
2463+  MipsISelLowering.cpp \
2464+  MipsJITInfo.cpp \
2465+  MipsLongBranch.cpp \
2466+  MipsMachineFunction.cpp \
2467+  MipsMCInstLower.cpp \
2468+  MipsModuleISelDAGToDAG.cpp \
2469+  MipsOs16.cpp \
2470+  MipsOptimizePICCall.cpp \
2471+  MipsRegisterInfo.cpp \
2472+  MipsSEFrameLowering.cpp \
2473+  MipsSEISelDAGToDAG.cpp \
2474+  MipsSEISelLowering.cpp \
2475+  MipsSEInstrInfo.cpp \
2476+  MipsSERegisterInfo.cpp \
2477+  MipsSelectionDAGInfo.cpp \
2478+  MipsSubtarget.cpp \
2479+  MipsTargetMachine.cpp \
2480+  MipsTargetObjectFile.cpp
2481+
2482+# For the host
2483+# =====================================================
2484+include $(CLEAR_VARS)
2485+include $(CLEAR_TBLGEN_VARS)
2486+
2487+LOCAL_MODULE:= libLLVMMipsCodeGen
2488+LOCAL_MODULE_TAGS := optional
2489+
2490+LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES)
2491+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
2492+
2493+TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES)
2494+
2495+include $(LLVM_HOST_BUILD_MK)
2496+include $(LLVM_TBLGEN_RULES_MK)
2497+include $(LLVM_GEN_INTRINSICS_MK)
2498+include $(BUILD_HOST_STATIC_LIBRARY)
2499+
2500+# For the device only
2501+# =====================================================
2502+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2503+include $(CLEAR_VARS)
2504+include $(CLEAR_TBLGEN_VARS)
2505+
2506+LOCAL_MODULE:= libLLVMMipsCodeGen
2507+LOCAL_MODULE_TAGS := optional
2508+
2509+LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES)
2510+LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
2511+
2512+TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES)
2513+
2514+include $(LLVM_DEVICE_BUILD_MK)
2515+include $(LLVM_TBLGEN_RULES_MK)
2516+include $(LLVM_GEN_INTRINSICS_MK)
2517+include $(BUILD_STATIC_LIBRARY)
2518+endif
2519diff --git a/lib/Target/Mips/AsmParser/Android.mk b/lib/Target/Mips/AsmParser/Android.mk
2520new file mode 100644
2521index 0000000..7d8eec1
2522--- /dev/null
2523+++ b/lib/Target/Mips/AsmParser/Android.mk
2524@@ -0,0 +1,56 @@
2525+LOCAL_PATH := $(call my-dir)
2526+
2527+#===---------------------------------------------------------------===
2528+# libLLVMMipsAsmParser (common)
2529+#===---------------------------------------------------------------===
2530+
2531+mips_asm_parser_SRC_FILES := \
2532+  MipsAsmParser.cpp
2533+
2534+mips_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
2535+
2536+mips_asm_parser_TBLGEN_TABLES := \
2537+  MipsGenAsmMatcher.inc \
2538+  MipsGenInstrInfo.inc \
2539+  MipsGenRegisterInfo.inc \
2540+  MipsGenSubtargetInfo.inc
2541+
2542+mips_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2543+
2544+
2545+#===---------------------------------------------------------------===
2546+# libLLVMMipsAsmParser (host)
2547+#===---------------------------------------------------------------===
2548+include $(CLEAR_VARS)
2549+include $(CLEAR_TBLGEN_VARS)
2550+
2551+LOCAL_MODULE:= libLLVMMipsAsmParser
2552+LOCAL_MODULE_TAGS := optional
2553+LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES)
2554+LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES)
2555+TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES)
2556+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2557+
2558+include $(LLVM_HOST_BUILD_MK)
2559+include $(LLVM_TBLGEN_RULES_MK)
2560+include $(BUILD_HOST_STATIC_LIBRARY)
2561+
2562+
2563+#===---------------------------------------------------------------===
2564+# libLLVMMipsAsmParser (target)
2565+#===---------------------------------------------------------------===
2566+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2567+include $(CLEAR_VARS)
2568+include $(CLEAR_TBLGEN_VARS)
2569+
2570+LOCAL_MODULE:= libLLVMMipsAsmParser
2571+LOCAL_MODULE_TAGS := optional
2572+LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES)
2573+LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES)
2574+TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES)
2575+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2576+
2577+include $(LLVM_DEVICE_BUILD_MK)
2578+include $(LLVM_TBLGEN_RULES_MK)
2579+include $(BUILD_STATIC_LIBRARY)
2580+endif
2581diff --git a/lib/Target/Mips/Disassembler/Android.mk b/lib/Target/Mips/Disassembler/Android.mk
2582new file mode 100644
2583index 0000000..20fd87a
2584--- /dev/null
2585+++ b/lib/Target/Mips/Disassembler/Android.mk
2586@@ -0,0 +1,48 @@
2587+LOCAL_PATH := $(call my-dir)
2588+
2589+mips_disassembler_TBLGEN_TABLES := \
2590+  MipsGenDisassemblerTables.inc \
2591+  MipsGenInstrInfo.inc \
2592+  MipsGenRegisterInfo.inc \
2593+  MipsGenSubtargetInfo.inc
2594+
2595+mips_disassembler_SRC_FILES := \
2596+  MipsDisassembler.cpp
2597+
2598+# For the device
2599+# =====================================================
2600+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2601+include $(CLEAR_VARS)
2602+include $(CLEAR_TBLGEN_VARS)
2603+
2604+LOCAL_MODULE:= libLLVMMipsDisassembler
2605+LOCAL_MODULE_TAGS := optional
2606+
2607+LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES)
2608+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
2609+
2610+TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES)
2611+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2612+
2613+include $(LLVM_DEVICE_BUILD_MK)
2614+include $(LLVM_TBLGEN_RULES_MK)
2615+include $(BUILD_STATIC_LIBRARY)
2616+endif
2617+
2618+# For the host
2619+# =====================================================
2620+include $(CLEAR_VARS)
2621+include $(CLEAR_TBLGEN_VARS)
2622+
2623+LOCAL_MODULE:= libLLVMMipsDisassembler
2624+LOCAL_MODULE_TAGS := optional
2625+
2626+LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES)
2627+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
2628+
2629+TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES)
2630+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2631+
2632+include $(LLVM_HOST_BUILD_MK)
2633+include $(LLVM_TBLGEN_RULES_MK)
2634+include $(BUILD_HOST_STATIC_LIBRARY)
2635diff --git a/lib/Target/Mips/InstPrinter/Android.mk b/lib/Target/Mips/InstPrinter/Android.mk
2636new file mode 100644
2637index 0000000..f4f3a4f
2638--- /dev/null
2639+++ b/lib/Target/Mips/InstPrinter/Android.mk
2640@@ -0,0 +1,48 @@
2641+LOCAL_PATH := $(call my-dir)
2642+
2643+mips_asm_printer_TBLGEN_TABLES := \
2644+  MipsGenAsmWriter.inc \
2645+  MipsGenRegisterInfo.inc \
2646+  MipsGenSubtargetInfo.inc \
2647+  MipsGenInstrInfo.inc
2648+
2649+mips_asm_printer_SRC_FILES := \
2650+  MipsInstPrinter.cpp
2651+
2652+# For the host
2653+# =====================================================
2654+include $(CLEAR_VARS)
2655+include $(CLEAR_TBLGEN_VARS)
2656+
2657+LOCAL_MODULE:= libLLVMMipsAsmPrinter
2658+LOCAL_MODULE_TAGS := optional
2659+
2660+TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES)
2661+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2662+
2663+LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES)
2664+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
2665+
2666+include $(LLVM_HOST_BUILD_MK)
2667+include $(LLVM_TBLGEN_RULES_MK)
2668+include $(BUILD_HOST_STATIC_LIBRARY)
2669+
2670+# For the device only
2671+# =====================================================
2672+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2673+include $(CLEAR_VARS)
2674+include $(CLEAR_TBLGEN_VARS)
2675+
2676+LOCAL_MODULE:= libLLVMMipsAsmPrinter
2677+LOCAL_MODULE_TAGS := optional
2678+
2679+TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES)
2680+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2681+
2682+LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES)
2683+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
2684+
2685+include $(LLVM_DEVICE_BUILD_MK)
2686+include $(LLVM_TBLGEN_RULES_MK)
2687+include $(BUILD_STATIC_LIBRARY)
2688+endif
2689diff --git a/lib/Target/Mips/MCTargetDesc/Android.mk b/lib/Target/Mips/MCTargetDesc/Android.mk
2690new file mode 100644
2691index 0000000..7ee11a1
2692--- /dev/null
2693+++ b/lib/Target/Mips/MCTargetDesc/Android.mk
2694@@ -0,0 +1,58 @@
2695+LOCAL_PATH := $(call my-dir)
2696+
2697+mips_mc_desc_TBLGEN_TABLES := \
2698+  MipsGenRegisterInfo.inc \
2699+  MipsGenInstrInfo.inc \
2700+  MipsGenMCCodeEmitter.inc \
2701+  MipsGenSubtargetInfo.inc
2702+
2703+mips_mc_desc_SRC_FILES := \
2704+  MipsAsmBackend.cpp \
2705+  MipsELFObjectWriter.cpp \
2706+  MipsELFStreamer.cpp \
2707+  MipsMCAsmInfo.cpp \
2708+  MipsMCCodeEmitter.cpp \
2709+  MipsMCExpr.cpp \
2710+  MipsMCTargetDesc.cpp \
2711+  MipsNaClELFStreamer.cpp \
2712+  MipsTargetStreamer.cpp
2713+
2714+# For the host
2715+# =====================================================
2716+include $(CLEAR_VARS)
2717+include $(CLEAR_TBLGEN_VARS)
2718+
2719+LOCAL_MODULE:= libLLVMMipsDesc
2720+LOCAL_MODULE_TAGS := optional
2721+
2722+LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES)
2723+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
2724+
2725+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2726+TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES)
2727+
2728+include $(LLVM_HOST_BUILD_MK)
2729+include $(LLVM_TBLGEN_RULES_MK)
2730+include $(LLVM_GEN_INTRINSICS_MK)
2731+include $(BUILD_HOST_STATIC_LIBRARY)
2732+
2733+# For the device only
2734+# =====================================================
2735+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2736+include $(CLEAR_VARS)
2737+include $(CLEAR_TBLGEN_VARS)
2738+
2739+LOCAL_MODULE:= libLLVMMipsDesc
2740+LOCAL_MODULE_TAGS := optional
2741+
2742+LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES)
2743+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
2744+
2745+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2746+TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES)
2747+
2748+include $(LLVM_DEVICE_BUILD_MK)
2749+include $(LLVM_TBLGEN_RULES_MK)
2750+include $(LLVM_GEN_INTRINSICS_MK)
2751+include $(BUILD_STATIC_LIBRARY)
2752+endif
2753diff --git a/lib/Target/Mips/TargetInfo/Android.mk b/lib/Target/Mips/TargetInfo/Android.mk
2754new file mode 100644
2755index 0000000..173d05b
2756--- /dev/null
2757+++ b/lib/Target/Mips/TargetInfo/Android.mk
2758@@ -0,0 +1,47 @@
2759+LOCAL_PATH := $(call my-dir)
2760+
2761+mips_target_info_TBLGEN_TABLES := \
2762+  MipsGenInstrInfo.inc \
2763+  MipsGenRegisterInfo.inc \
2764+  MipsGenSubtargetInfo.inc
2765+
2766+mips_target_info_SRC_FILES := \
2767+  MipsTargetInfo.cpp
2768+
2769+# For the host
2770+# =====================================================
2771+include $(CLEAR_VARS)
2772+include $(CLEAR_TBLGEN_VARS)
2773+
2774+LOCAL_MODULE:= libLLVMMipsInfo
2775+LOCAL_MODULE_TAGS := optional
2776+
2777+TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES)
2778+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2779+
2780+LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES)
2781+LOCAL_C_INCLUDES +=	$(LOCAL_PATH)/..
2782+
2783+include $(LLVM_HOST_BUILD_MK)
2784+include $(LLVM_TBLGEN_RULES_MK)
2785+include $(BUILD_HOST_STATIC_LIBRARY)
2786+
2787+# For the device
2788+# =====================================================
2789+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2790+include $(CLEAR_VARS)
2791+include $(CLEAR_TBLGEN_VARS)
2792+
2793+LOCAL_MODULE:= libLLVMMipsInfo
2794+LOCAL_MODULE_TAGS := optional
2795+
2796+TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES)
2797+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2798+
2799+LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES)
2800+LOCAL_C_INCLUDES +=	$(LOCAL_PATH)/..
2801+
2802+include $(LLVM_DEVICE_BUILD_MK)
2803+include $(LLVM_TBLGEN_RULES_MK)
2804+include $(BUILD_STATIC_LIBRARY)
2805+endif
2806\ No newline at end of file
2807diff --git a/lib/Target/X86/Android.mk b/lib/Target/X86/Android.mk
2808new file mode 100644
2809index 0000000..73031de
2810--- /dev/null
2811+++ b/lib/Target/X86/Android.mk
2812@@ -0,0 +1,72 @@
2813+LOCAL_PATH := $(call my-dir)
2814+
2815+x86_codegen_TBLGEN_TABLES := \
2816+  X86GenAsmWriter.inc \
2817+  X86GenAsmWriter1.inc \
2818+  X86GenRegisterInfo.inc \
2819+  X86GenInstrInfo.inc \
2820+  X86GenDAGISel.inc \
2821+  X86GenFastISel.inc \
2822+  X86GenSubtargetInfo.inc \
2823+  X86GenCallingConv.inc
2824+
2825+x86_codegen_SRC_FILES := \
2826+  X86AsmPrinter.cpp \
2827+  X86COFFMachineModuleInfo.cpp \
2828+  X86CodeEmitter.cpp \
2829+  X86FastISel.cpp \
2830+  X86FixupLEAs.cpp \
2831+  X86FloatingPoint.cpp \
2832+  X86FrameLowering.cpp \
2833+  X86ISelDAGToDAG.cpp \
2834+  X86ISelLowering.cpp \
2835+  X86InstrInfo.cpp \
2836+  X86JITInfo.cpp \
2837+  X86MachineFunctionInfo.cpp \
2838+  X86MCInstLower.cpp \
2839+  X86PadShortFunction.cpp \
2840+  X86RegisterInfo.cpp \
2841+  X86SelectionDAGInfo.cpp \
2842+  X86Subtarget.cpp \
2843+  X86TargetMachine.cpp \
2844+  X86TargetObjectFile.cpp \
2845+  X86TargetTransformInfo.cpp \
2846+  X86VZeroUpper.cpp
2847+
2848+# For the host
2849+# =====================================================
2850+include $(CLEAR_VARS)
2851+include $(CLEAR_TBLGEN_VARS)
2852+
2853+TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES)
2854+
2855+LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES)
2856+
2857+LOCAL_MODULE:= libLLVMX86CodeGen
2858+
2859+LOCAL_MODULE_TAGS := optional
2860+
2861+include $(LLVM_HOST_BUILD_MK)
2862+include $(LLVM_TBLGEN_RULES_MK)
2863+include $(LLVM_GEN_INTRINSICS_MK)
2864+include $(BUILD_HOST_STATIC_LIBRARY)
2865+
2866+# For the device only
2867+# =====================================================
2868+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2869+include $(CLEAR_VARS)
2870+include $(CLEAR_TBLGEN_VARS)
2871+
2872+TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES)
2873+
2874+LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES)
2875+
2876+LOCAL_MODULE:= libLLVMX86CodeGen
2877+
2878+LOCAL_MODULE_TAGS := optional
2879+
2880+include $(LLVM_DEVICE_BUILD_MK)
2881+include $(LLVM_TBLGEN_RULES_MK)
2882+include $(LLVM_GEN_INTRINSICS_MK)
2883+include $(BUILD_STATIC_LIBRARY)
2884+endif
2885diff --git a/lib/Target/X86/AsmParser/Android.mk b/lib/Target/X86/AsmParser/Android.mk
2886new file mode 100644
2887index 0000000..4235cb1
2888--- /dev/null
2889+++ b/lib/Target/X86/AsmParser/Android.mk
2890@@ -0,0 +1,59 @@
2891+LOCAL_PATH := $(call my-dir)
2892+
2893+# For the device only
2894+# =====================================================
2895+include $(CLEAR_VARS)
2896+include $(CLEAR_TBLGEN_VARS)
2897+
2898+x86_asm_parser_SRC_FILES :=	\
2899+	X86AsmInstrumentation.cpp \
2900+	X86AsmParser.cpp
2901+
2902+x86_asm_parser_TBLGEN_TABLES :=	\
2903+	X86GenAsmMatcher.inc	\
2904+	X86GenInstrInfo.inc	\
2905+	X86GenRegisterInfo.inc \
2906+	X86GenSubtargetInfo.inc
2907+
2908+x86_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2909+
2910+x86_asm_parser_C_INCLUDES +=	\
2911+	$(LOCAL_PATH)/..
2912+
2913+
2914+#===---------------------------------------------------------------===
2915+# libX86AsmParser (host)
2916+#===---------------------------------------------------------------===
2917+include $(CLEAR_VARS)
2918+include $(CLEAR_TBLGEN_VARS)
2919+
2920+LOCAL_MODULE:= libLLVMX86AsmParser
2921+LOCAL_MODULE_TAGS := optional
2922+LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES)
2923+LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES)
2924+TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES)
2925+TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR)
2926+
2927+include $(LLVM_HOST_BUILD_MK)
2928+include $(LLVM_TBLGEN_RULES_MK)
2929+include $(BUILD_HOST_STATIC_LIBRARY)
2930+
2931+
2932+#===---------------------------------------------------------------===
2933+# libX86AsmParser (target)
2934+#===---------------------------------------------------------------===
2935+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2936+include $(CLEAR_VARS)
2937+include $(CLEAR_TBLGEN_VARS)
2938+
2939+LOCAL_MODULE:= libLLVMX86AsmParser
2940+LOCAL_MODULE_TAGS := optional
2941+LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES)
2942+LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES)
2943+TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES)
2944+TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR)
2945+
2946+include $(LLVM_DEVICE_BUILD_MK)
2947+include $(LLVM_TBLGEN_RULES_MK)
2948+include $(BUILD_STATIC_LIBRARY)
2949+endif
2950diff --git a/lib/Target/X86/Disassembler/Android.mk b/lib/Target/X86/Disassembler/Android.mk
2951new file mode 100644
2952index 0000000..3984266
2953--- /dev/null
2954+++ b/lib/Target/X86/Disassembler/Android.mk
2955@@ -0,0 +1,56 @@
2956+LOCAL_PATH := $(call my-dir)
2957+
2958+x86_disassembler_TBLGEN_TABLES := \
2959+  X86GenDisassemblerTables.inc \
2960+  X86GenInstrInfo.inc \
2961+  X86GenRegisterInfo.inc \
2962+  X86GenSubtargetInfo.inc
2963+
2964+x86_disassembler_SRC_FILES := \
2965+  X86Disassembler.cpp \
2966+  X86DisassemblerDecoder.c
2967+
2968+# For the device
2969+# =====================================================
2970+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
2971+include $(CLEAR_VARS)
2972+include $(CLEAR_TBLGEN_VARS)
2973+
2974+TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES)
2975+
2976+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2977+
2978+LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES)
2979+
2980+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
2981+
2982+LOCAL_MODULE:= libLLVMX86Disassembler
2983+
2984+LOCAL_MODULE_TAGS := optional
2985+
2986+include $(LLVM_DEVICE_BUILD_MK)
2987+include $(LLVM_TBLGEN_RULES_MK)
2988+include $(BUILD_STATIC_LIBRARY)
2989+endif
2990+
2991+# For the host
2992+# =====================================================
2993+include $(CLEAR_VARS)
2994+include $(CLEAR_TBLGEN_VARS)
2995+
2996+TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES)
2997+
2998+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
2999+
3000+LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES)
3001+
3002+LOCAL_C_INCLUDES +=	\
3003+	$(LOCAL_PATH)/..
3004+
3005+LOCAL_MODULE:= libLLVMX86Disassembler
3006+
3007+LOCAL_MODULE_TAGS := optional
3008+
3009+include $(LLVM_HOST_BUILD_MK)
3010+include $(LLVM_TBLGEN_RULES_MK)
3011+include $(BUILD_HOST_STATIC_LIBRARY)
3012diff --git a/lib/Target/X86/InstPrinter/Android.mk b/lib/Target/X86/InstPrinter/Android.mk
3013new file mode 100644
3014index 0000000..9881beb
3015--- /dev/null
3016+++ b/lib/Target/X86/InstPrinter/Android.mk
3017@@ -0,0 +1,57 @@
3018+LOCAL_PATH := $(call my-dir)
3019+
3020+x86_instprinter_TBLGEN_TABLES := \
3021+  X86GenAsmWriter.inc \
3022+  X86GenAsmWriter1.inc \
3023+  X86GenInstrInfo.inc \
3024+  X86GenRegisterInfo.inc \
3025+  X86GenSubtargetInfo.inc
3026+
3027+x86_instprinter_SRC_FILES := \
3028+  X86ATTInstPrinter.cpp \
3029+  X86IntelInstPrinter.cpp \
3030+  X86InstComments.cpp
3031+
3032+# For the device
3033+# =====================================================
3034+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3035+include $(CLEAR_VARS)
3036+include $(CLEAR_TBLGEN_VARS)
3037+
3038+TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES)
3039+
3040+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
3041+
3042+LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES)
3043+
3044+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
3045+
3046+LOCAL_MODULE:= libLLVMX86AsmPrinter
3047+
3048+LOCAL_MODULE_TAGS := optional
3049+
3050+include $(LLVM_DEVICE_BUILD_MK)
3051+include $(LLVM_TBLGEN_RULES_MK)
3052+include $(BUILD_STATIC_LIBRARY)
3053+endif
3054+
3055+# For the host
3056+# =====================================================
3057+include $(CLEAR_VARS)
3058+include $(CLEAR_TBLGEN_VARS)
3059+
3060+TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES)
3061+
3062+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
3063+
3064+LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES)
3065+
3066+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
3067+
3068+LOCAL_MODULE := libLLVMX86AsmPrinter
3069+
3070+LOCAL_MODULE_TAGS := optional
3071+
3072+include $(LLVM_HOST_BUILD_MK)
3073+include $(LLVM_TBLGEN_RULES_MK)
3074+include $(BUILD_HOST_STATIC_LIBRARY)
3075diff --git a/lib/Target/X86/MCTargetDesc/Android.mk b/lib/Target/X86/MCTargetDesc/Android.mk
3076new file mode 100644
3077index 0000000..ee37c27
3078--- /dev/null
3079+++ b/lib/Target/X86/MCTargetDesc/Android.mk
3080@@ -0,0 +1,56 @@
3081+LOCAL_PATH := $(call my-dir)
3082+
3083+x86_mc_desc_TBLGEN_TABLES := \
3084+  X86GenRegisterInfo.inc \
3085+  X86GenInstrInfo.inc \
3086+  X86GenSubtargetInfo.inc
3087+
3088+x86_mc_desc_SRC_FILES := \
3089+  X86AsmBackend.cpp \
3090+  X86ELFObjectWriter.cpp \
3091+  X86ELFRelocationInfo.cpp \
3092+  X86MCTargetDesc.cpp \
3093+  X86MCAsmInfo.cpp \
3094+  X86MCCodeEmitter.cpp \
3095+  X86MachORelocationInfo.cpp \
3096+  X86MachObjectWriter.cpp \
3097+  X86WinCOFFObjectWriter.cpp
3098+
3099+# For the host
3100+# =====================================================
3101+include $(CLEAR_VARS)
3102+include $(CLEAR_TBLGEN_VARS)
3103+
3104+LOCAL_MODULE:= libLLVMX86Desc
3105+LOCAL_MODULE_TAGS := optional
3106+
3107+LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES)
3108+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
3109+TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES)
3110+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
3111+
3112+include $(LLVM_HOST_BUILD_MK)
3113+include $(LLVM_TBLGEN_RULES_MK)
3114+include $(LLVM_GEN_INTRINSICS_MK)
3115+include $(BUILD_HOST_STATIC_LIBRARY)
3116+
3117+# For the device only
3118+# =====================================================
3119+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3120+include $(CLEAR_VARS)
3121+include $(CLEAR_TBLGEN_VARS)
3122+
3123+
3124+LOCAL_MODULE:= libLLVMX86Desc
3125+LOCAL_MODULE_TAGS := optional
3126+
3127+LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES)
3128+LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
3129+TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES)
3130+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
3131+
3132+include $(LLVM_DEVICE_BUILD_MK)
3133+include $(LLVM_TBLGEN_RULES_MK)
3134+include $(LLVM_GEN_INTRINSICS_MK)
3135+include $(BUILD_STATIC_LIBRARY)
3136+endif
3137diff --git a/lib/Target/X86/TargetInfo/Android.mk b/lib/Target/X86/TargetInfo/Android.mk
3138new file mode 100644
3139index 0000000..1a6c902
3140--- /dev/null
3141+++ b/lib/Target/X86/TargetInfo/Android.mk
3142@@ -0,0 +1,55 @@
3143+LOCAL_PATH := $(call my-dir)
3144+
3145+x86_target_info_TBLGEN_TABLES := \
3146+  X86GenRegisterInfo.inc \
3147+  X86GenSubtargetInfo.inc \
3148+  X86GenInstrInfo.inc
3149+
3150+x86_target_info_SRC_FILES := \
3151+  X86TargetInfo.cpp
3152+
3153+# For the host
3154+# =====================================================
3155+include $(CLEAR_VARS)
3156+include $(CLEAR_TBLGEN_VARS)
3157+
3158+TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES)
3159+
3160+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
3161+
3162+LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES)
3163+
3164+LOCAL_C_INCLUDES +=	\
3165+	$(LOCAL_PATH)/..
3166+
3167+LOCAL_MODULE:= libLLVMX86Info
3168+
3169+LOCAL_MODULE_TAGS := optional
3170+
3171+include $(LLVM_HOST_BUILD_MK)
3172+include $(LLVM_TBLGEN_RULES_MK)
3173+include $(BUILD_HOST_STATIC_LIBRARY)
3174+
3175+# For the device
3176+# =====================================================
3177+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3178+include $(CLEAR_VARS)
3179+include $(CLEAR_TBLGEN_VARS)
3180+
3181+TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES)
3182+
3183+TBLGEN_TD_DIR := $(LOCAL_PATH)/..
3184+
3185+LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES)
3186+
3187+LOCAL_C_INCLUDES +=     \
3188+        $(LOCAL_PATH)/..
3189+
3190+LOCAL_MODULE:= libLLVMX86Info
3191+
3192+LOCAL_MODULE_TAGS := optional
3193+
3194+include $(LLVM_DEVICE_BUILD_MK)
3195+include $(LLVM_TBLGEN_RULES_MK)
3196+include $(BUILD_STATIC_LIBRARY)
3197+endif
3198diff --git a/lib/Target/X86/Utils/Android.mk b/lib/Target/X86/Utils/Android.mk
3199new file mode 100644
3200index 0000000..e0c4797
3201--- /dev/null
3202+++ b/lib/Target/X86/Utils/Android.mk
3203@@ -0,0 +1,36 @@
3204+LOCAL_PATH := $(call my-dir)
3205+
3206+x86_utils_SRC_FILES := \
3207+  X86ShuffleDecode.cpp
3208+
3209+# For the device
3210+# =====================================================
3211+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3212+include $(CLEAR_VARS)
3213+
3214+LOCAL_SRC_FILES := $(x86_utils_SRC_FILES)
3215+
3216+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
3217+
3218+LOCAL_MODULE:= libLLVMX86Utils
3219+
3220+LOCAL_MODULE_TAGS := optional
3221+
3222+include $(LLVM_DEVICE_BUILD_MK)
3223+include $(BUILD_STATIC_LIBRARY)
3224+endif
3225+
3226+# For the host
3227+# =====================================================
3228+include $(CLEAR_VARS)
3229+
3230+LOCAL_SRC_FILES := $(x86_utils_SRC_FILES)
3231+
3232+LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
3233+
3234+LOCAL_MODULE:= libLLVMX86Utils
3235+
3236+LOCAL_MODULE_TAGS := optional
3237+
3238+include $(LLVM_HOST_BUILD_MK)
3239+include $(BUILD_HOST_STATIC_LIBRARY)
3240diff --git a/lib/Transforms/IPO/Android.mk b/lib/Transforms/IPO/Android.mk
3241new file mode 100644
3242index 0000000..1fe7d63
3243--- /dev/null
3244+++ b/lib/Transforms/IPO/Android.mk
3245@@ -0,0 +1,52 @@
3246+LOCAL_PATH:= $(call my-dir)
3247+
3248+transforms_ipo_SRC_FILES := \
3249+  ArgumentPromotion.cpp \
3250+  BarrierNoopPass.cpp \
3251+  ConstantMerge.cpp \
3252+  DeadArgumentElimination.cpp \
3253+  ExtractGV.cpp \
3254+  FunctionAttrs.cpp \
3255+  GlobalDCE.cpp \
3256+  GlobalOpt.cpp \
3257+  IPConstantPropagation.cpp \
3258+  IPO.cpp \
3259+  InlineAlways.cpp \
3260+  InlineSimple.cpp \
3261+  Inliner.cpp \
3262+  Internalize.cpp \
3263+  LoopExtractor.cpp \
3264+  MergeFunctions.cpp \
3265+  PartialInlining.cpp \
3266+  PassManagerBuilder.cpp \
3267+  PruneEH.cpp \
3268+  StripDeadPrototypes.cpp \
3269+  StripSymbols.cpp
3270+
3271+# For the host
3272+# =====================================================
3273+include $(CLEAR_VARS)
3274+
3275+LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES)
3276+LOCAL_MODULE:= libLLVMipo
3277+
3278+LOCAL_MODULE_TAGS := optional
3279+
3280+include $(LLVM_HOST_BUILD_MK)
3281+include $(LLVM_GEN_INTRINSICS_MK)
3282+include $(BUILD_HOST_STATIC_LIBRARY)
3283+
3284+# For the device
3285+# =====================================================
3286+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3287+include $(CLEAR_VARS)
3288+
3289+LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES)
3290+LOCAL_MODULE:= libLLVMipo
3291+
3292+LOCAL_MODULE_TAGS := optional
3293+
3294+include $(LLVM_DEVICE_BUILD_MK)
3295+include $(LLVM_GEN_INTRINSICS_MK)
3296+include $(BUILD_STATIC_LIBRARY)
3297+endif
3298diff --git a/lib/Transforms/InstCombine/Android.mk b/lib/Transforms/InstCombine/Android.mk
3299new file mode 100644
3300index 0000000..62dc7d9
3301--- /dev/null
3302+++ b/lib/Transforms/InstCombine/Android.mk
3303@@ -0,0 +1,44 @@
3304+LOCAL_PATH:= $(call my-dir)
3305+
3306+transforms_inst_combine_SRC_FILES := \
3307+  InstCombineAddSub.cpp \
3308+  InstCombineAndOrXor.cpp \
3309+  InstCombineCalls.cpp \
3310+  InstCombineCasts.cpp \
3311+  InstCombineCompares.cpp \
3312+  InstCombineLoadStoreAlloca.cpp \
3313+  InstCombineMulDivRem.cpp \
3314+  InstCombinePHI.cpp \
3315+  InstCombineSelect.cpp \
3316+  InstCombineShifts.cpp \
3317+  InstCombineSimplifyDemanded.cpp \
3318+  InstCombineVectorOps.cpp \
3319+  InstructionCombining.cpp
3320+
3321+# For the host
3322+# =====================================================
3323+include $(CLEAR_VARS)
3324+
3325+LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES)
3326+LOCAL_MODULE:= libLLVMInstCombine
3327+
3328+LOCAL_MODULE_TAGS := optional
3329+
3330+include $(LLVM_HOST_BUILD_MK)
3331+include $(LLVM_GEN_INTRINSICS_MK)
3332+include $(BUILD_HOST_STATIC_LIBRARY)
3333+
3334+# For the device
3335+# =====================================================
3336+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3337+include $(CLEAR_VARS)
3338+
3339+LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES)
3340+LOCAL_MODULE:= libLLVMInstCombine
3341+
3342+LOCAL_MODULE_TAGS := optional
3343+
3344+include $(LLVM_DEVICE_BUILD_MK)
3345+include $(LLVM_GEN_INTRINSICS_MK)
3346+include $(BUILD_STATIC_LIBRARY)
3347+endif
3348diff --git a/lib/Transforms/Instrumentation/Android.mk b/lib/Transforms/Instrumentation/Android.mk
3349new file mode 100644
3350index 0000000..f9a55c7
3351--- /dev/null
3352+++ b/lib/Transforms/Instrumentation/Android.mk
3353@@ -0,0 +1,37 @@
3354+LOCAL_PATH:= $(call my-dir)
3355+
3356+instrumentation_SRC_FILES := \
3357+  AddressSanitizer.cpp \
3358+  BoundsChecking.cpp \
3359+  DataFlowSanitizer.cpp \
3360+  DebugIR.cpp \
3361+  GCOVProfiling.cpp \
3362+  Instrumentation.cpp \
3363+  MemorySanitizer.cpp \
3364+  ThreadSanitizer.cpp
3365+
3366+# For the host
3367+# =====================================================
3368+include $(CLEAR_VARS)
3369+
3370+LOCAL_MODULE:= libLLVMInstrumentation
3371+LOCAL_MODULE_TAGS := optional
3372+LOCAL_SRC_FILES := $(instrumentation_SRC_FILES)
3373+
3374+include $(LLVM_HOST_BUILD_MK)
3375+include $(LLVM_GEN_INTRINSICS_MK)
3376+include $(BUILD_HOST_STATIC_LIBRARY)
3377+
3378+# For the target
3379+# =====================================================
3380+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3381+include $(CLEAR_VARS)
3382+
3383+LOCAL_MODULE:= libLLVMInstrumentation
3384+LOCAL_MODULE_TAGS := optional
3385+LOCAL_SRC_FILES := $(instrumentation_SRC_FILES)
3386+
3387+include $(LLVM_DEVICE_BUILD_MK)
3388+include $(LLVM_GEN_INTRINSICS_MK)
3389+include $(BUILD_STATIC_LIBRARY)
3390+endif
3391diff --git a/lib/Transforms/ObjCARC/Android.mk b/lib/Transforms/ObjCARC/Android.mk
3392new file mode 100644
3393index 0000000..226e9e1
3394--- /dev/null
3395+++ b/lib/Transforms/ObjCARC/Android.mk
3396@@ -0,0 +1,40 @@
3397+LOCAL_PATH:= $(call my-dir)
3398+
3399+transforms_objcarc_SRC_FILES := \
3400+  DependencyAnalysis.cpp \
3401+  ObjCARCAliasAnalysis.cpp \
3402+  ObjCARCAPElim.cpp \
3403+  ObjCARCContract.cpp \
3404+  ObjCARC.cpp \
3405+  ObjCARCExpand.cpp \
3406+  ObjCARCOpts.cpp \
3407+  ObjCARCUtil.cpp \
3408+  ProvenanceAnalysis.cpp
3409+
3410+# For the host
3411+# =====================================================
3412+include $(CLEAR_VARS)
3413+
3414+LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES)
3415+LOCAL_MODULE:= libLLVMTransformObjCARC
3416+
3417+LOCAL_MODULE_TAGS := optional
3418+
3419+include $(LLVM_HOST_BUILD_MK)
3420+include $(LLVM_GEN_INTRINSICS_MK)
3421+include $(BUILD_HOST_STATIC_LIBRARY)
3422+
3423+# For the device
3424+# =====================================================
3425+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3426+include $(CLEAR_VARS)
3427+
3428+LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES)
3429+LOCAL_MODULE:= libLLVMTransformObjCARC
3430+
3431+LOCAL_MODULE_TAGS := optional
3432+
3433+include $(LLVM_DEVICE_BUILD_MK)
3434+include $(LLVM_GEN_INTRINSICS_MK)
3435+include $(BUILD_STATIC_LIBRARY)
3436+endif
3437diff --git a/lib/Transforms/Scalar/Android.mk b/lib/Transforms/Scalar/Android.mk
3438new file mode 100644
3439index 0000000..3894f93
3440--- /dev/null
3441+++ b/lib/Transforms/Scalar/Android.mk
3442@@ -0,0 +1,73 @@
3443+LOCAL_PATH:= $(call my-dir)
3444+
3445+transforms_scalar_SRC_FILES := \
3446+  ADCE.cpp \
3447+  ConstantProp.cpp \
3448+  ConstantHoisting.cpp \
3449+  CorrelatedValuePropagation.cpp \
3450+  DCE.cpp \
3451+  DeadStoreElimination.cpp \
3452+  EarlyCSE.cpp \
3453+  GlobalMerge.cpp \
3454+  GVN.cpp \
3455+  IndVarSimplify.cpp \
3456+  JumpThreading.cpp \
3457+  LICM.cpp \
3458+  LoopDeletion.cpp \
3459+  LoopIdiomRecognize.cpp \
3460+  LoopInstSimplify.cpp \
3461+  LoopRerollPass.cpp \
3462+  LoopRotation.cpp \
3463+  LoopStrengthReduce.cpp \
3464+  LoopUnrollPass.cpp \
3465+  LoopUnswitch.cpp \
3466+  LowerAtomic.cpp \
3467+  MemCpyOptimizer.cpp \
3468+  PartiallyInlineLibCalls.cpp \
3469+  Reassociate.cpp \
3470+  Reg2Mem.cpp \
3471+  SCCP.cpp \
3472+  SROA.cpp \
3473+  SampleProfile.cpp \
3474+  Scalar.cpp \
3475+  Scalarizer.cpp \
3476+  ScalarReplAggregates.cpp \
3477+  SimplifyCFGPass.cpp \
3478+  Sink.cpp \
3479+  StructurizeCFG.cpp \
3480+  TailRecursionElimination.cpp
3481+
3482+# For the host
3483+# =====================================================
3484+include $(CLEAR_VARS)
3485+
3486+LOCAL_SRC_FILES :=	\
3487+	$(transforms_scalar_SRC_FILES)
3488+
3489+LOCAL_MODULE:= libLLVMScalarOpts
3490+
3491+LOCAL_MODULE_TAGS := optional
3492+
3493+include $(LLVM_HOST_BUILD_MK)
3494+include $(LLVM_GEN_INTRINSICS_MK)
3495+include $(BUILD_HOST_STATIC_LIBRARY)
3496+
3497+# For the device
3498+# =====================================================
3499+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3500+include $(CLEAR_VARS)
3501+
3502+LOCAL_SRC_FILES := $(transforms_scalar_SRC_FILES)
3503+LOCAL_MODULE:= libLLVMScalarOpts
3504+
3505+# Override the default optimization level to work around a SIGSEGV
3506+# on x86 target builds for SROA.cpp.
3507+# Bug: 8047767
3508+LOCAL_CFLAGS_x86 += -O1
3509+
3510+LOCAL_MODULE_TAGS := optional
3511+
3512+include $(LLVM_DEVICE_BUILD_MK)
3513+include $(LLVM_GEN_INTRINSICS_MK)
3514+include $(BUILD_STATIC_LIBRARY)
3515+endif
3516diff --git a/lib/Transforms/Utils/Android.mk b/lib/Transforms/Utils/Android.mk
3517new file mode 100644
3518index 0000000..ab4d8a8
3519--- /dev/null
3520+++ b/lib/Transforms/Utils/Android.mk
3521@@ -0,0 +1,66 @@
3522+LOCAL_PATH:= $(call my-dir)
3523+
3524+transforms_utils_SRC_FILES := \
3525+  AddDiscriminators.cpp \
3526+  ASanStackFrameLayout.cpp \
3527+  BasicBlockUtils.cpp \
3528+  BreakCriticalEdges.cpp \
3529+  BuildLibCalls.cpp \
3530+  BypassSlowDivision.cpp \
3531+  CloneFunction.cpp \
3532+  CloneModule.cpp \
3533+  CmpInstAnalysis.cpp \
3534+  CodeExtractor.cpp \
3535+  DemoteRegToStack.cpp \
3536+  GlobalStatus.cpp \
3537+  InlineFunction.cpp \
3538+  InstructionNamer.cpp \
3539+  LCSSA.cpp \
3540+  Local.cpp \
3541+  LoopSimplify.cpp \
3542+  LoopUnroll.cpp \
3543+  LoopUnrollRuntime.cpp \
3544+  LowerExpectIntrinsic.cpp \
3545+  LowerInvoke.cpp \
3546+  LowerSwitch.cpp \
3547+  Mem2Reg.cpp \
3548+  MetaRenamer.cpp \
3549+  ModuleUtils.cpp \
3550+  PromoteMemoryToRegister.cpp \
3551+  SSAUpdater.cpp \
3552+  SimplifyCFG.cpp \
3553+  SimplifyIndVar.cpp \
3554+  SimplifyInstructions.cpp \
3555+  SimplifyLibCalls.cpp \
3556+  SpecialCaseList.cpp \
3557+  UnifyFunctionExitNodes.cpp \
3558+  Utils.cpp \
3559+  ValueMapper.cpp
3560+
3561+# For the host
3562+# =====================================================
3563+include $(CLEAR_VARS)
3564+
3565+LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES)
3566+LOCAL_MODULE:= libLLVMTransformUtils
3567+
3568+LOCAL_MODULE_TAGS := optional
3569+
3570+include $(LLVM_HOST_BUILD_MK)
3571+include $(LLVM_GEN_INTRINSICS_MK)
3572+include $(BUILD_HOST_STATIC_LIBRARY)
3573+
3574+# For the device
3575+# =====================================================
3576+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3577+include $(CLEAR_VARS)
3578+
3579+LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES)
3580+LOCAL_MODULE:= libLLVMTransformUtils
3581+
3582+LOCAL_MODULE_TAGS := optional
3583+
3584+include $(LLVM_DEVICE_BUILD_MK)
3585+include $(LLVM_GEN_INTRINSICS_MK)
3586+include $(BUILD_STATIC_LIBRARY)
3587+endif
3588diff --git a/lib/Transforms/Vectorize/Android.mk b/lib/Transforms/Vectorize/Android.mk
3589new file mode 100644
3590index 0000000..ea090c0
3591--- /dev/null
3592+++ b/lib/Transforms/Vectorize/Android.mk
3593@@ -0,0 +1,35 @@
3594+LOCAL_PATH:= $(call my-dir)
3595+
3596+transforms_vectorize_SRC_FILES := \
3597+  BBVectorize.cpp \
3598+  LoopVectorize.cpp \
3599+  SLPVectorizer.cpp \
3600+  Vectorize.cpp
3601+
3602+# For the host
3603+# =====================================================
3604+include $(CLEAR_VARS)
3605+
3606+LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES)
3607+LOCAL_MODULE:= libLLVMVectorize
3608+
3609+LOCAL_MODULE_TAGS := optional
3610+
3611+include $(LLVM_HOST_BUILD_MK)
3612+include $(LLVM_GEN_INTRINSICS_MK)
3613+include $(BUILD_HOST_STATIC_LIBRARY)
3614+
3615+# For the device
3616+# =====================================================
3617+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
3618+include $(CLEAR_VARS)
3619+
3620+LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES)
3621+LOCAL_MODULE:= libLLVMVectorize
3622+
3623+LOCAL_MODULE_TAGS := optional
3624+
3625+include $(LLVM_DEVICE_BUILD_MK)
3626+include $(LLVM_GEN_INTRINSICS_MK)
3627+include $(BUILD_STATIC_LIBRARY)
3628+endif
3629diff --git a/llvm-device-build.mk b/llvm-device-build.mk
3630new file mode 100644
3631index 0000000..7464c98
3632--- /dev/null
3633+++ b/llvm-device-build.mk
3634@@ -0,0 +1,79 @@
3635+LOCAL_MODULE_TARGET_ARCH := $(LLVM_SUPPORTED_ARCH)
3636+
3637+LOCAL_CLANG := true
3638+
3639+LOCAL_CFLAGS :=	\
3640+	-D_GNU_SOURCE	\
3641+	-D__STDC_LIMIT_MACROS	\
3642+	-D__STDC_CONSTANT_MACROS	\
3643+	-D__STDC_FORMAT_MACROS	\
3644+	-O2	\
3645+	-fomit-frame-pointer	\
3646+	-Wall	\
3647+	-W	\
3648+	-Wno-unused-parameter	\
3649+	-Wwrite-strings	\
3650+        -Dsprintf=sprintf \
3651+	$(LOCAL_CFLAGS)
3652+
3653+# The three inline options together reduce libbcc.so almost 1MB.
3654+# We move them from global build/core/combo/TARGET_linux-arm.mk
3655+# to here.
3656+LOCAL_CFLAGS := -DANDROID_TARGET_BUILD \
3657+		-finline-functions \
3658+		$(LOCAL_CFLAGS)
3659+
3660+ifeq ($(TARGET_BUILD_VARIANT),eng)
3661+LOCAL_CFLAGS := -DANDROID_ENGINEERING_BUILD \
3662+                $(LOCAL_CFLAGS)
3663+endif
3664+
3665+ifeq ($(LLVM_ENABLE_ASSERTION),true)
3666+LOCAL_CFLAGS :=	\
3667+	$(LOCAL_CFLAGS) \
3668+	-D_DEBUG	\
3669+	-UNDEBUG
3670+endif
3671+
3672+ifneq ($(REQUIRES_EH),1)
3673+LOCAL_CFLAGS +=	-fno-exceptions
3674+else
3675+# No action. The device target should not have exception enabled since bionic
3676+# doesn't support it
3677+REQUIRES_EH := 0
3678+endif
3679+
3680+ifneq ($(REQUIRES_RTTI),1)
3681+LOCAL_CPPFLAGS +=	-fno-rtti
3682+else
3683+REQUIRES_RTTI := 0
3684+endif
3685+
3686+LOCAL_CPPFLAGS :=	\
3687+	$(LOCAL_CPPFLAGS)	\
3688+	-Woverloaded-virtual	\
3689+	-Wno-sign-promo
3690+
3691+# Make sure bionic is first so we can include system headers.
3692+LOCAL_C_INCLUDES :=	\
3693+	bionic \
3694+	external/stlport/stlport \
3695+	$(LLVM_ROOT_PATH)	\
3696+	$(LLVM_ROOT_PATH)/include	\
3697+	$(LLVM_ROOT_PATH)/device/include	\
3698+	$(LOCAL_C_INCLUDES)
3699+
3700+###########################################################
3701+## Commands for running tblgen to compile a td file
3702+###########################################################
3703+define transform-device-td-to-out
3704+@mkdir -p $(dir $@)
3705+@echo "Device TableGen (gen-$(1)): $(TBLGEN_LOCAL_MODULE) <= $<"
3706+$(hide) $(TBLGEN) \
3707+	-I $(dir $<)	\
3708+	-I $(LLVM_ROOT_PATH)/include	\
3709+	-I $(LLVM_ROOT_PATH)/device/include	\
3710+	-I $(LLVM_ROOT_PATH)/lib/Target	\
3711+    -gen-$(strip $(1)) \
3712+    -o $@ $<
3713+endef
3714diff --git a/llvm-gen-intrinsics.mk b/llvm-gen-intrinsics.mk
3715new file mode 100644
3716index 0000000..358027b
3717--- /dev/null
3718+++ b/llvm-gen-intrinsics.mk
3719@@ -0,0 +1,19 @@
3720+# We treat Intrinsics.td as a very special target just like what lib/VMCore/Makefile does
3721+INTRINSICTD := $(LLVM_ROOT_PATH)/include/llvm/IR/Intrinsics.td
3722+INTRINSICTDS := $(wildcard $(dir $(INTRINSICTD))/Intrinsics*.td)
3723+
3724+LOCAL_SRC_FILES := $(INTRINSICTD) $(LOCAL_SRC_FILES)
3725+
3726+ifeq ($(LOCAL_MODULE_CLASS),)
3727+	LOCAL_MODULE_CLASS := STATIC_LIBRARIES
3728+endif
3729+
3730+GENFILE := $(addprefix $(call local-generated-sources-dir)/llvm/IR/,Intrinsics.gen)
3731+LOCAL_GENERATED_SOURCES += $(GENFILE)
3732+$(GENFILE): TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3733+$(GENFILE): $(INTRINSICTD) $(INTRINSICTDS) | $(TBLGEN)
3734+ifeq ($(LOCAL_IS_HOST_MODULE),true)
3735+	$(call transform-host-td-to-out,intrinsic)
3736+else
3737+	$(call transform-device-td-to-out,intrinsic)
3738+endif
3739diff --git a/llvm-host-build.mk b/llvm-host-build.mk
3740new file mode 100644
3741index 0000000..7e96615
3742--- /dev/null
3743+++ b/llvm-host-build.mk
3744@@ -0,0 +1,64 @@
3745+LOCAL_CLANG := true
3746+
3747+LOCAL_CFLAGS +=	\
3748+	-D_GNU_SOURCE	\
3749+	-D__STDC_LIMIT_MACROS	\
3750+	-O2	\
3751+	-fomit-frame-pointer	\
3752+	-Wall	\
3753+	-W	\
3754+	-Wno-unused-parameter	\
3755+	-Wwrite-strings	\
3756+        -Dsprintf=sprintf \
3757+	$(LOCAL_CFLAGS)
3758+
3759+ifeq ($(LLVM_ENABLE_ASSERTION),true)
3760+LOCAL_CFLAGS :=	\
3761+	$(LOCAL_CFLAGS) \
3762+	-D_DEBUG	\
3763+	-UNDEBUG
3764+endif
3765+
3766+ifneq ($(REQUIRES_EH),1)
3767+LOCAL_CFLAGS += -fno-exceptions
3768+else
3769+REQUIRES_EH := 0
3770+LOCAL_CFLAGS += -fexceptions
3771+endif
3772+
3773+ifneq ($(REQUIRES_RTTI),1)
3774+LOCAL_CPPFLAGS += -fno-rtti
3775+else
3776+REQUIRES_RTTI := 0
3777+endif
3778+
3779+LOCAL_CPPFLAGS :=	\
3780+	$(LOCAL_CPPFLAGS)	\
3781+	-Woverloaded-virtual	\
3782+	-Wno-sign-promo         \
3783+	-std=c++11
3784+
3785+# Make sure bionic is first so we can include system headers.
3786+LOCAL_C_INCLUDES :=	\
3787+	$(LLVM_ROOT_PATH)	\
3788+	$(LLVM_ROOT_PATH)/include	\
3789+	$(LLVM_ROOT_PATH)/host/include	\
3790+	$(LOCAL_C_INCLUDES)
3791+
3792+LOCAL_IS_HOST_MODULE := true
3793+
3794+###########################################################
3795+## Commands for running tblgen to compile a td file
3796+###########################################################
3797+define transform-host-td-to-out
3798+@mkdir -p $(dir $@)
3799+@echo "Host TableGen: $(TBLGEN_LOCAL_MODULE) (gen-$(1)) <= $<"
3800+$(hide) $(TBLGEN) \
3801+	-I $(dir $<)	\
3802+	-I $(LLVM_ROOT_PATH)/include	\
3803+	-I $(LLVM_ROOT_PATH)/host/include	\
3804+	-I $(LLVM_ROOT_PATH)/lib/Target	\
3805+	$(if $(strip $(CLANG_ROOT_PATH)),-I $(CLANG_ROOT_PATH)/include,)	\
3806+	-gen-$(strip $(1))	\
3807+	-o $@ $<
3808+endef
3809diff --git a/llvm-tblgen-rules.mk b/llvm-tblgen-rules.mk
3810new file mode 100644
3811index 0000000..0746e8b
3812--- /dev/null
3813+++ b/llvm-tblgen-rules.mk
3814@@ -0,0 +1,208 @@
3815+###########################################################
3816+## Commands for running tblgen to compile a td file
3817+##########################################################
3818+define transform-td-to-out
3819+$(if $(LOCAL_IS_HOST_MODULE),	\
3820+	$(call transform-host-td-to-out,$(1)),	\
3821+	$(call transform-device-td-to-out,$(1)))
3822+endef
3823+
3824+###########################################################
3825+## TableGen: Compile .td files to .inc.
3826+###########################################################
3827+
3828+# Set LOCAL_MODULE_CLASS to STATIC_LIBRARIES default (require
3829+# for macro local-generated-sources-dir)
3830+ifeq ($(LOCAL_MODULE_CLASS),)
3831+	LOCAL_MODULE_CLASS := STATIC_LIBRARIES
3832+endif
3833+
3834+ifneq ($(strip $(TBLGEN_TABLES)),)
3835+
3836+generated_sources := $(call local-generated-sources-dir)
3837+tblgen_gen_tables := $(addprefix $(generated_sources)/,$(TBLGEN_TABLES))
3838+LOCAL_GENERATED_SOURCES += $(tblgen_gen_tables)
3839+
3840+tblgen_source_dir := $(LOCAL_PATH)
3841+ifneq ($(TBLGEN_TD_DIR),)
3842+tblgen_source_dir := $(TBLGEN_TD_DIR)
3843+endif
3844+
3845+ifneq (,$(filter $(tblgen_source_dir),MCTargetDesc))
3846+tblgen_td_deps := $(tblgen_source_dir)/../*.td
3847+else
3848+tblgen_td_deps := $(tblgen_source_dir)/*.td
3849+endif
3850+tblgen_td_deps := $(wildcard $(tblgen_td_deps))
3851+
3852+#
3853+# The directory and the .td directory is not the same.
3854+#
3855+ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/ARM/MCTargetDesc)
3856+$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3857+$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/../%.td \
3858+                                       $(tblgen_td_deps) | $(TBLGEN)
3859+	$(call transform-td-to-out, register-info)
3860+
3861+$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3862+$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/../%.td \
3863+                                    $(tblgen_td_deps) | $(TBLGEN)
3864+	$(call transform-td-to-out,instr-info)
3865+
3866+$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3867+$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/../%.td \
3868+                                        $(tblgen_td_deps) | $(TBLGEN)
3869+	$(call transform-td-to-out,subtarget)
3870+endif
3871+
3872+ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/X86/MCTargetDesc)
3873+$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3874+$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/../%.td \
3875+                                       $(tblgen_td_deps) | $(TBLGEN)
3876+	$(call transform-td-to-out, register-info)
3877+
3878+$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3879+$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/../%.td \
3880+                                    $(tblgen_td_deps) | $(TBLGEN)
3881+	$(call transform-td-to-out,instr-info)
3882+
3883+$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3884+$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/../%.td \
3885+                                        $(tblgen_td_deps) | $(TBLGEN)
3886+	$(call transform-td-to-out,subtarget)
3887+endif
3888+
3889+ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/Mips/MCTargetDesc)
3890+$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3891+$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/../%.td \
3892+                                       $(tblgen_td_deps) | $(TBLGEN)
3893+	$(call transform-td-to-out, register-info)
3894+
3895+$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3896+$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/../%.td \
3897+                                    $(tblgen_td_deps) | $(TBLGEN)
3898+	$(call transform-td-to-out,instr-info)
3899+
3900+$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3901+$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/../%.td \
3902+                                        $(tblgen_td_deps) | $(TBLGEN)
3903+	$(call transform-td-to-out,subtarget)
3904+endif
3905+
3906+
3907+ifneq ($(filter %GenRegisterInfo.inc,$(tblgen_gen_tables)),)
3908+$(generated_sources)/%GenRegisterInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3909+$(generated_sources)/%GenRegisterInfo.inc: $(tblgen_source_dir)/%.td \
3910+                                       $(tblgen_td_deps) | $(TBLGEN)
3911+	$(call transform-td-to-out,register-info)
3912+endif
3913+
3914+ifneq ($(filter %GenInstrInfo.inc,$(tblgen_gen_tables)),)
3915+$(generated_sources)/%GenInstrInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3916+$(generated_sources)/%GenInstrInfo.inc: $(tblgen_source_dir)/%.td \
3917+                                    $(tblgen_td_deps) | $(TBLGEN)
3918+	$(call transform-td-to-out,instr-info)
3919+endif
3920+
3921+ifneq ($(filter %GenAsmWriter.inc,$(tblgen_gen_tables)),)
3922+$(generated_sources)/%GenAsmWriter.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3923+$(generated_sources)/%GenAsmWriter.inc: $(tblgen_source_dir)/%.td \
3924+                                    $(tblgen_td_deps) | $(TBLGEN)
3925+	$(call transform-td-to-out,asm-writer)
3926+endif
3927+
3928+ifneq ($(filter %GenAsmWriter1.inc,$(tblgen_gen_tables)),)
3929+$(generated_sources)/%GenAsmWriter1.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3930+$(generated_sources)/%GenAsmWriter1.inc: $(tblgen_source_dir)/%.td \
3931+                                     $(tblgen_td_deps) | $(TBLGEN)
3932+	$(call transform-td-to-out,asm-writer -asmwriternum=1)
3933+endif
3934+
3935+ifneq ($(filter %GenAsmMatcher.inc,$(tblgen_gen_tables)),)
3936+$(generated_sources)/%GenAsmMatcher.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3937+$(generated_sources)/%GenAsmMatcher.inc: $(tblgen_source_dir)/%.td \
3938+                                     $(tblgen_td_deps) | $(TBLGEN)
3939+	$(call transform-td-to-out,asm-matcher)
3940+endif
3941+
3942+ifneq ($(filter %GenCodeEmitter.inc,$(tblgen_gen_tables)),)
3943+$(generated_sources)/%GenCodeEmitter.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3944+$(generated_sources)/%GenCodeEmitter.inc: $(tblgen_source_dir)/%.td \
3945+                                      $(tblgen_td_deps) | $(TBLGEN)
3946+	$(call transform-td-to-out,emitter)
3947+endif
3948+
3949+ifneq ($(filter %GenMCCodeEmitter.inc,$(tblgen_gen_tables)),)
3950+$(generated_sources)/%GenMCCodeEmitter.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3951+$(generated_sources)/%GenMCCodeEmitter.inc: $(tblgen_source_dir)/%.td \
3952+                                        $(tblgen_td_deps) | $(TBLGEN)
3953+	$(call transform-td-to-out,emitter -mc-emitter)
3954+endif
3955+
3956+ifneq ($(filter %GenMCPseudoLowering.inc,$(tblgen_gen_tables)),)
3957+$(generated_sources)/%GenMCPseudoLowering.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3958+$(generated_sources)/%GenMCPseudoLowering.inc: $(tblgen_source_dir)/%.td \
3959+                                           $(tblgen_td_deps) | $(TBLGEN)
3960+	$(call transform-td-to-out,pseudo-lowering)
3961+endif
3962+
3963+ifneq ($(filter %GenDAGISel.inc,$(tblgen_gen_tables)),)
3964+$(generated_sources)/%GenDAGISel.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3965+$(generated_sources)/%GenDAGISel.inc: $(tblgen_source_dir)/%.td \
3966+                                  $(tblgen_td_deps) | $(TBLGEN)
3967+	$(call transform-td-to-out,dag-isel)
3968+endif
3969+
3970+ifneq ($(filter %GenDisassemblerTables.inc,$(tblgen_gen_tables)),)
3971+$(generated_sources)/%GenDisassemblerTables.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3972+$(generated_sources)/%GenDisassemblerTables.inc: $(tblgen_source_dir)/%.td \
3973+                                             $(tblgen_td_deps) | $(TBLGEN)
3974+	$(call transform-td-to-out,disassembler)
3975+endif
3976+
3977+ifneq ($(filter %GenEDInfo.inc,$(tblgen_gen_tables)),)
3978+$(generated_sources)/%GenEDInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3979+$(generated_sources)/%GenEDInfo.inc: $(tblgen_source_dir)/%.td \
3980+                                 $(tblgen_td_deps) | $(TBLGEN)
3981+	$(call transform-td-to-out,enhanced-disassembly-info)
3982+endif
3983+
3984+ifneq ($(filter %GenFastISel.inc,$(tblgen_gen_tables)),)
3985+$(generated_sources)/%GenFastISel.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3986+$(generated_sources)/%GenFastISel.inc: $(tblgen_source_dir)/%.td \
3987+                                   $(tblgen_td_deps) | $(TBLGEN)
3988+	$(call transform-td-to-out,fast-isel)
3989+endif
3990+
3991+ifneq ($(filter %GenSubtargetInfo.inc,$(tblgen_gen_tables)),)
3992+$(generated_sources)/%GenSubtargetInfo.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
3993+$(generated_sources)/%GenSubtargetInfo.inc: $(tblgen_source_dir)/%.td \
3994+                                        $(tblgen_td_deps) | $(TBLGEN)
3995+	$(call transform-td-to-out,subtarget)
3996+endif
3997+
3998+ifneq ($(filter %GenCallingConv.inc,$(tblgen_gen_tables)),)
3999+$(generated_sources)/%GenCallingConv.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
4000+$(generated_sources)/%GenCallingConv.inc: $(tblgen_source_dir)/%.td \
4001+                                      $(tblgen_td_deps) | $(TBLGEN)
4002+	$(call transform-td-to-out,callingconv)
4003+endif
4004+
4005+ifneq ($(filter %GenIntrinsics.inc,$(tblgen_gen_tables)),)
4006+$(generated_sources)/%GenIntrinsics.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
4007+$(generated_sources)/%GenIntrinsics.inc: $(tblgen_source_dir)/%.td \
4008+                                     $(tblgen_td_deps) | $(TBLGEN)
4009+	$(call transform-td-to-out,tgt_intrinsics)
4010+endif
4011+
4012+ifneq ($(findstring ARMGenDecoderTables.inc,$(tblgen_gen_tables)),)
4013+$(generated_sources)/ARMGenDecoderTables.inc: TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
4014+$(generated_sources)/ARMGenDecoderTables.inc: $(tblgen_source_dir)/ARM.td \
4015+                                          $(tblgen_td_deps) | $(TBLGEN)
4016+	$(call transform-td-to-out,arm-decoder)
4017+endif
4018+
4019+# Reset local variables
4020+tblgen_td_deps :=
4021+
4022+endif
4023diff --git a/llvm.mk b/llvm.mk
4024new file mode 100644
4025index 0000000..073ceb7
4026--- /dev/null
4027+++ b/llvm.mk
4028@@ -0,0 +1,11 @@
4029+ifeq ($(LLVM_ROOT_PATH),)
4030+$(error Must set variable LLVM_ROOT_PATH before including this! $(LOCAL_PATH))
4031+endif
4032+
4033+CLEAR_TBLGEN_VARS := $(LLVM_ROOT_PATH)/clear_tblgen_vars.mk
4034+LLVM_HOST_BUILD_MK := $(LLVM_ROOT_PATH)/llvm-host-build.mk
4035+LLVM_DEVICE_BUILD_MK := $(LLVM_ROOT_PATH)/llvm-device-build.mk
4036+LLVM_GEN_INTRINSICS_MK := $(LLVM_ROOT_PATH)/llvm-gen-intrinsics.mk
4037+LLVM_TBLGEN_RULES_MK := $(LLVM_ROOT_PATH)/llvm-tblgen-rules.mk
4038+
4039+LLVM_SUPPORTED_ARCH := arm arm64 mips x86 x86_64
4040diff --git a/shared_llvm.mk b/shared_llvm.mk
4041new file mode 100644
4042index 0000000..f4be822
4043--- /dev/null
4044+++ b/shared_llvm.mk
4045@@ -0,0 +1,137 @@
4046+# Don't build the library in unbundled branches.
4047+ifeq (,$(TARGET_BUILD_APPS))
4048+
4049+LOCAL_PATH:= $(call my-dir)
4050+
4051+llvm_pre_static_libraries := \
4052+  libLLVMLinker \
4053+  libLLVMipo \
4054+  libLLVMIRReader \
4055+  libLLVMBitWriter \
4056+  libLLVMBitReader
4057+
4058+llvm_arm_static_libraries := \
4059+  libLLVMARMCodeGen \
4060+  libLLVMARMAsmParser \
4061+  libLLVMARMAsmPrinter \
4062+  libLLVMARMInfo \
4063+  libLLVMARMDesc \
4064+  libLLVMARMDisassembler
4065+
4066+llvm_x86_static_libraries := \
4067+  libLLVMX86CodeGen \
4068+  libLLVMX86Info \
4069+  libLLVMX86Desc \
4070+  libLLVMX86AsmParser \
4071+  libLLVMX86AsmPrinter \
4072+  libLLVMX86Utils \
4073+  libLLVMX86Disassembler
4074+
4075+llvm_mips_static_libraries := \
4076+  libLLVMMipsCodeGen \
4077+  libLLVMMipsInfo \
4078+  libLLVMMipsDesc \
4079+  libLLVMMipsAsmParser \
4080+  libLLVMMipsAsmPrinter \
4081+  libLLVMMipsDisassembler
4082+
4083+llvm_arm64_static_libraries := \
4084+  libLLVMARM64CodeGen \
4085+  libLLVMARM64Info \
4086+  libLLVMARM64Desc \
4087+  libLLVMARM64AsmParser \
4088+  libLLVMARM64AsmPrinter \
4089+  libLLVMARM64Utils \
4090+  libLLVMARM64Disassembler
4091+
4092+llvm_post_static_libraries := \
4093+  libLLVMAsmPrinter \
4094+  libLLVMSelectionDAG \
4095+  libLLVMCodeGen \
4096+  libLLVMObject \
4097+  libLLVMScalarOpts \
4098+  libLLVMInstCombine \
4099+  libLLVMInstrumentation \
4100+  libLLVMTransformObjCARC \
4101+  libLLVMTransformUtils \
4102+  libLLVMipa \
4103+  libLLVMAnalysis \
4104+  libLLVMTarget \
4105+  libLLVMMC \
4106+  libLLVMMCParser \
4107+  libLLVMCore \
4108+  libLLVMAsmParser \
4109+  libLLVMOption \
4110+  libLLVMSupport \
4111+  libLLVMVectorize
4112+
4113+llvm_host_static_libraries := \
4114+  libLLVMExecutionEngine \
4115+  libLLVMMCDisassembler \
4116+  libLLVMRuntimeDyld \
4117+  libLLVMJIT \
4118+  libLLVMMCJIT
4119+
4120+ifeq (true,$(FORCE_BUILD_LLVM_COMPONENTS))
4121+# HOST LLVM shared library build
4122+include $(CLEAR_VARS)
4123+LOCAL_IS_HOST_MODULE := true
4124+
4125+LOCAL_MODULE:= libLLVM
4126+
4127+LOCAL_MODULE_TAGS := optional
4128+
4129+# Host build pulls in all ARM, Mips, X86 components.
4130+LOCAL_WHOLE_STATIC_LIBRARIES := \
4131+  $(llvm_pre_static_libraries) \
4132+  $(llvm_arm_static_libraries) \
4133+  $(llvm_x86_static_libraries) \
4134+  $(llvm_mips_static_libraries) \
4135+  $(llvm_arm64_static_libraries) \
4136+  $(llvm_host_static_libraries) \
4137+  $(llvm_post_static_libraries)
4138+
4139+ifeq ($(HOST_OS),windows)
4140+  LOCAL_LDLIBS := -limagehlp -lpsapi
4141+else
4142+  LOCAL_LDLIBS := -ldl -lpthread
4143+endif
4144+
4145+include $(LLVM_HOST_BUILD_MK)
4146+include $(BUILD_HOST_SHARED_LIBRARY)
4147+endif
4148+
4149+ifeq (,$(filter $(TARGET_ARCH),$(LLVM_SUPPORTED_ARCH)))
4150+$(warning TODO $(TARGET_ARCH): Enable llvm build)
4151+endif
4152+
4153+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
4154+# DEVICE LLVM shared library build
4155+include $(CLEAR_VARS)
4156+
4157+LOCAL_MODULE:= libLLVM
4158+
4159+LOCAL_MODULE_TAGS := optional
4160+
4161+# Device build selectively pulls in ARM, Mips, X86 components.
4162+LOCAL_WHOLE_STATIC_LIBRARIES := \
4163+  $(llvm_pre_static_libraries)
4164+
4165+LOCAL_WHOLE_STATIC_LIBRARIES_arm += $(llvm_arm_static_libraries)
4166+LOCAL_WHOLE_STATIC_LIBRARIES_x86 += $(llvm_x86_static_libraries)
4167+LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 += $(llvm_x86_static_libraries)
4168+LOCAL_WHOLE_STATIC_LIBRARIES_mips += $(llvm_mips_static_libraries)
4169+LOCAL_WHOLE_STATIC_LIBRARIES_arm64 += $(llvm_arm64_static_libraries)
4170+
4171+LOCAL_WHOLE_STATIC_LIBRARIES += $(llvm_post_static_libraries)
4172+
4173+#LOCAL_LDLIBS := -ldl -lpthread
4174+LOCAL_SHARED_LIBRARIES := libcutils libdl libstlport
4175+
4176+include $(LLVM_DEVICE_BUILD_MK)
4177+include $(BUILD_SHARED_LIBRARY)
4178+
4179+endif
4180+
4181+endif # don't build in unbundled branches
4182+
4183diff --git a/tools/llc/Android.mk b/tools/llc/Android.mk
4184new file mode 100644
4185index 0000000..b9d4b74
4186--- /dev/null
4187+++ b/tools/llc/Android.mk
4188@@ -0,0 +1,136 @@
4189+LOCAL_PATH := $(call my-dir)
4190+
4191+LLVM_ROOT_PATH := $(LOCAL_PATH)/../..
4192+
4193+
4194+#===---------------------------------------------------------------===
4195+# llc command line tool (common)
4196+#===---------------------------------------------------------------===
4197+
4198+llvm_llc_SRC_FILES := \
4199+  llc.cpp
4200+
4201+llvm_llc_mips_STATIC_LIBRARIES := \
4202+  libLLVMMipsAsmParser \
4203+  libLLVMMipsInfo \
4204+  libLLVMMipsCodeGen \
4205+  libLLVMMipsDesc \
4206+  libLLVMMipsAsmPrinter \
4207+
4208+llvm_llc_x86_STATIC_LIBRARIES := \
4209+  libLLVMX86Info \
4210+  libLLVMX86AsmParser \
4211+  libLLVMX86CodeGen \
4212+  libLLVMX86Disassembler \
4213+  libLLVMX86Desc \
4214+  libLLVMX86AsmPrinter \
4215+  libLLVMX86Utils
4216+
4217+llvm_llc_arm_STATIC_LIBRARIES := \
4218+  libLLVMARMCodeGen \
4219+  libLLVMARMDisassembler \
4220+  libLLVMARMAsmParser \
4221+  libLLVMARMAsmPrinter \
4222+  libLLVMARMDesc \
4223+  libLLVMARMInfo
4224+
4225+llvm_llc_STATIC_LIBRARIES := \
4226+  libLLVMAsmPrinter \
4227+  libLLVMIRReader \
4228+  libLLVMAsmParser \
4229+  libLLVMBitReader \
4230+  libLLVMBitWriter \
4231+  libLLVMSelectionDAG \
4232+  libLLVMInstCombine \
4233+  libLLVMInstrumentation \
4234+  libLLVMCodeGen \
4235+  libLLVMObject \
4236+  libLLVMipo \
4237+  libLLVMipa \
4238+  libLLVMLinker \
4239+  libLLVMMC \
4240+  libLLVMMCParser \
4241+  libLLVMScalarOpts \
4242+  libLLVMTransformUtils \
4243+  libLLVMVectorize \
4244+  libLLVMAnalysis \
4245+  libLLVMTarget \
4246+  libLLVMCore \
4247+  libLLVMSupport
4248+
4249+llvm_llc_arm64_STATIC_LIBRARIES := \
4250+  libLLVMARM64Info \
4251+  libLLVMARM64AsmParser \
4252+  libLLVMARM64CodeGen \
4253+  libLLVMARM64Disassembler \
4254+  libLLVMARM64Desc \
4255+  libLLVMARM64AsmPrinter \
4256+  libLLVMARM64Utils
4257+
4258+
4259+
4260+#===---------------------------------------------------------------===
4261+# llc command line tool (host)
4262+#===---------------------------------------------------------------===
4263+
4264+include $(CLEAR_VARS)
4265+
4266+LOCAL_MODULE := llc
4267+LOCAL_MODULE_TAGS := optional
4268+LOCAL_MODULE_CLASS := EXECUTABLES
4269+LOCAL_IS_HOST_MODULE := true
4270+
4271+LOCAL_SRC_FILES := $(llvm_llc_SRC_FILES)
4272+
4273+LOCAL_STATIC_LIBRARIES := \
4274+  $(llvm_llc_arm_STATIC_LIBRARIES) \
4275+  $(llvm_llc_mips_STATIC_LIBRARIES) \
4276+  $(llvm_llc_x86_STATIC_LIBRARIES) \
4277+  $(llvm_llc_arm64_STATIC_LIBRARIES) \
4278+  $(llvm_llc_STATIC_LIBRARIES)
4279+
4280+LOCAL_LDLIBS += -lpthread -lm -ldl
4281+LOCAL_C_INCLUDES += external/llvm/include
4282+
4283+include $(LLVM_ROOT_PATH)/llvm.mk
4284+include $(LLVM_HOST_BUILD_MK)
4285+include $(LLVM_GEN_INTRINSICS_MK)
4286+include $(BUILD_HOST_EXECUTABLE)
4287+
4288+
4289+#===---------------------------------------------------------------===
4290+# llc command line tool (target)
4291+#===---------------------------------------------------------------===
4292+
4293+ifeq (,$(filter $(TARGET_ARCH),$(LLVM_SUPPORTED_ARCH)))
4294+$(warning TODO $(TARGET_ARCH): Enable llc build)
4295+endif
4296+
4297+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
4298+include $(CLEAR_VARS)
4299+
4300+LOCAL_MODULE := llc
4301+LOCAL_MODULE_TAGS := optional
4302+LOCAL_MODULE_CLASS := EXECUTABLES
4303+
4304+LOCAL_SRC_FILES := $(llvm_llc_SRC_FILES)
4305+LOCAL_C_INCLUDES += external/llvm/include
4306+
4307+LOCAL_STATIC_LIBRARIES_arm := $(llvm_llc_arm_STATIC_LIBRARIES)
4308+LOCAL_STATIC_LIBRARIES_mips := $(llvm_llc_mips_STATIC_LIBRARIES)
4309+LOCAL_STATIC_LIBRARIES_x86 := $(llvm_llc_x86_STATIC_LIBRARIES)
4310+LOCAL_STATIC_LIBRARIES_x86_64 := $(llvm_llc_x86_STATIC_LIBRARIES)
4311+LOCAL_STATIC_LIBRARIES_arm64 := $(llvm_llc_arm64_STATIC_LIBRARIES)
4312+
4313+LOCAL_STATIC_LIBRARIES += $(llvm_llc_STATIC_LIBRARIES)
4314+
4315+LOCAL_SHARED_LIBRARIES :=  \
4316+  libcutils  \
4317+  libdl  \
4318+  libstlport
4319+
4320+include $(LLVM_ROOT_PATH)/llvm.mk
4321+include $(LLVM_DEVICE_BUILD_MK)
4322+include $(LLVM_GEN_INTRINSICS_MK)
4323+include $(BUILD_EXECUTABLE)
4324+endif
4325diff --git a/tools/llvm-as/Android.mk b/tools/llvm-as/Android.mk
4326new file mode 100644
4327index 0000000..e58868b
4328--- /dev/null
4329+++ b/tools/llvm-as/Android.mk
4330@@ -0,0 +1,28 @@
4331+LOCAL_PATH:= $(call my-dir)
4332+
4333+llvm_as_SRC_FILES := \
4334+  llvm-as.cpp
4335+
4336+include $(CLEAR_VARS)
4337+
4338+LOCAL_MODULE := llvm-as
4339+LOCAL_MODULE_TAGS := optional
4340+LOCAL_SRC_FILES := $(llvm_as_SRC_FILES)
4341+LOCAL_LDLIBS += -lm
4342+ifdef USE_MINGW
4343+LOCAL_LDLIBS += -limagehlp
4344+else
4345+LOCAL_LDLIBS += -lpthread -ldl
4346+endif
4347+
4348+REQUIRES_EH := 1
4349+REQUIRES_RTTI := 1
4350+
4351+LOCAL_STATIC_LIBRARIES := \
4352+  libLLVMAsmParser \
4353+  libLLVMBitWriter \
4354+  libLLVMCore \
4355+  libLLVMSupport
4356+
4357+include $(LLVM_HOST_BUILD_MK)
4358+include $(BUILD_HOST_EXECUTABLE)
4359diff --git a/tools/llvm-dis/Android.mk b/tools/llvm-dis/Android.mk
4360new file mode 100644
4361index 0000000..22d44fd
4362--- /dev/null
4363+++ b/tools/llvm-dis/Android.mk
4364@@ -0,0 +1,25 @@
4365+LOCAL_PATH:= $(call my-dir)
4366+
4367+llvm_dis_SRC_FILES := \
4368+  llvm-dis.cpp
4369+
4370+include $(CLEAR_VARS)
4371+
4372+LOCAL_MODULE := llvm-dis
4373+LOCAL_MODULE_CLASS := EXECUTABLES
4374+LOCAL_MODULE_TAGS := optional
4375+LOCAL_SRC_FILES := $(llvm_dis_SRC_FILES)
4376+LOCAL_LDLIBS += -lpthread -lm -ldl
4377+
4378+REQUIRES_EH := 1
4379+REQUIRES_RTTI := 1
4380+
4381+LOCAL_STATIC_LIBRARIES := \
4382+  libLLVMAnalysis \
4383+  libLLVMBitReader \
4384+  libLLVMCore \
4385+  libLLVMSupport
4386+
4387+include $(LLVM_HOST_BUILD_MK)
4388+include $(LLVM_GEN_INTRINSICS_MK)
4389+include $(BUILD_HOST_EXECUTABLE)
4390diff --git a/tools/llvm-link/Android.mk b/tools/llvm-link/Android.mk
4391new file mode 100644
4392index 0000000..e051492
4393--- /dev/null
4394+++ b/tools/llvm-link/Android.mk
4395@@ -0,0 +1,50 @@
4396+LOCAL_PATH:= $(call my-dir)
4397+
4398+llvm_link_SRC_FILES := \
4399+  llvm-link.cpp
4400+
4401+llvm_link_STATIC_LIBRARIES := \
4402+  libLLVMLinker \
4403+  libLLVMIRReader \
4404+  libLLVMBitReader \
4405+  libLLVMBitWriter \
4406+  libLLVMAsmParser \
4407+  libLLVMTransformUtils \
4408+  libLLVMAnalysis \
4409+  libLLVMTarget \
4410+  libLLVMCore \
4411+  libLLVMSupport
4412+
4413+#===---------------------------------------------------------------===
4414+# llvm-link command line tool (host)
4415+#===---------------------------------------------------------------===
4416+
4417+include $(CLEAR_VARS)
4418+
4419+LOCAL_MODULE := llvm-link
4420+LOCAL_MODULE_TAGS := optional
4421+LOCAL_SRC_FILES := $(llvm_link_SRC_FILES)
4422+LOCAL_STATIC_LIBRARIES := $(llvm_link_STATIC_LIBRARIES)
4423+LOCAL_LDLIBS += -lpthread -lm -ldl
4424+
4425+include $(LLVM_HOST_BUILD_MK)
4426+include $(BUILD_HOST_EXECUTABLE)
4427+
4428+#===---------------------------------------------------------------===
4429+# llvm-link command line tool (target)
4430+#===---------------------------------------------------------------===
4431+
4432+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
4433+include $(CLEAR_VARS)
4434+
4435+LOCAL_MODULE := llvm-link
4436+LOCAL_MODULE_TAGS := optional
4437+LOCAL_SRC_FILES := $(llvm_link_SRC_FILES)
4438+LOCAL_STATIC_LIBRARIES := $(llvm_link_STATIC_LIBRARIES)
4439+LOCAL_SHARED_LIBRARIES := \
4440+  libcutils  \
4441+  libstlport
4442+
4443+include $(LLVM_DEVICE_BUILD_MK)
4444+include $(BUILD_EXECUTABLE)
4445+endif
4446diff --git a/tools/opt/Android.mk b/tools/opt/Android.mk
4447new file mode 100644
4448index 0000000..c5bb4f8
4449--- /dev/null
4450+++ b/tools/opt/Android.mk
4451@@ -0,0 +1,81 @@
4452+LOCAL_PATH := $(call my-dir)
4453+
4454+LLVM_ROOT_PATH := $(LOCAL_PATH)/../..
4455+
4456+
4457+#===---------------------------------------------------------------===
4458+# opt command line tool (common)
4459+#===---------------------------------------------------------------===
4460+
4461+llvm_opt_SRC_FILES := \
4462+  AnalysisWrappers.cpp \
4463+  GraphPrinters.cpp \
4464+  PrintSCC.cpp \
4465+  opt.cpp
4466+
4467+llvm_opt_STATIC_LIBRARIES := \
4468+  libLLVMScalarOpts \
4469+  libLLVMInstCombine \
4470+  libLLVMInstrumentation \
4471+  libLLVMMCParser \
4472+  libLLVMMC \
4473+  libLLVMAsmParser \
4474+  libLLVMBitWriter \
4475+  libLLVMBitReader \
4476+  libLLVMipa \
4477+  libLLVMipo \
4478+  libLLVMTransformUtils \
4479+  libLLVMVectorize \
4480+  libLLVMAnalysis \
4481+  libLLVMTarget \
4482+  libLLVMCore \
4483+  libLLVMSupport
4484+
4485+
4486+#===---------------------------------------------------------------===
4487+# opt command line tool (host)
4488+#===---------------------------------------------------------------===
4489+
4490+include $(CLEAR_VARS)
4491+
4492+LOCAL_MODULE := opt
4493+LOCAL_MODULE_TAGS := optional
4494+LOCAL_MODULE_CLASS := EXECUTABLES
4495+LOCAL_IS_HOST_MODULE := true
4496+
4497+LOCAL_SRC_FILES := $(llvm_opt_SRC_FILES)
4498+LOCAL_STATIC_LIBRARIES := $(llvm_opt_STATIC_LIBRARIES)
4499+LOCAL_LDLIBS += -lpthread -lm -ldl
4500+LOCAL_C_INCLUDES += external/llvm/include
4501+
4502+include $(LLVM_ROOT_PATH)/llvm.mk
4503+include $(LLVM_HOST_BUILD_MK)
4504+include $(LLVM_GEN_INTRINSICS_MK)
4505+include $(BUILD_HOST_EXECUTABLE)
4506+
4507+
4508+#===---------------------------------------------------------------===
4509+# opt command line tool (target)
4510+#===---------------------------------------------------------------===
4511+
4512+ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
4513+include $(CLEAR_VARS)
4514+
4515+LOCAL_MODULE := opt
4516+LOCAL_MODULE_TAGS := optional
4517+LOCAL_MODULE_CLASS := EXECUTABLES
4518+
4519+LOCAL_SRC_FILES := $(llvm_opt_SRC_FILES)
4520+LOCAL_C_INCLUDES += external/llvm/include
4521+LOCAL_STATIC_LIBRARIES := $(llvm_opt_STATIC_LIBRARIES)
4522+LOCAL_SHARED_LIBRARIES :=  \
4523+  libcutils  \
4524+  libdl  \
4525+  libstlport
4526+
4527+
4528+include $(LLVM_ROOT_PATH)/llvm.mk
4529+include $(LLVM_DEVICE_BUILD_MK)
4530+include $(LLVM_GEN_INTRINSICS_MK)
4531+include $(BUILD_EXECUTABLE)
4532+endif
4533diff --git a/utils/FileCheck/Android.mk b/utils/FileCheck/Android.mk
4534new file mode 100644
4535index 0000000..2c211cf
4536--- /dev/null
4537+++ b/utils/FileCheck/Android.mk
4538@@ -0,0 +1,23 @@
4539+LOCAL_PATH:= $(call my-dir)
4540+
4541+filecheck_SRC_FILES := \
4542+  FileCheck.cpp
4543+
4544+filecheck_STATIC_LIBRARIES := \
4545+  libLLVMSupport
4546+
4547+include $(CLEAR_VARS)
4548+
4549+LOCAL_MODULE := FileCheck
4550+LOCAL_SRC_FILES := $(filecheck_SRC_FILES)
4551+LOCAL_STATIC_LIBRARIES := $(filecheck_STATIC_LIBRARIES)
4552+LOCAL_C_INCLUDES += external/llvm/include
4553+LOCAL_C_INCLUDES += external/llvm/host/include
4554+LOCAL_LDLIBS += -lpthread -lm -ldl
4555+LOCAL_CFLAGS += -D __STDC_LIMIT_MACROS -D __STDC_CONSTANT_MACROS
4556+
4557+#REQUIRES_EH := 1
4558+#REQUIRES_RTTI := 1
4559+
4560+include $(LLVM_HOST_BUILD_MK)
4561+include $(BUILD_HOST_EXECUTABLE)
4562diff --git a/utils/TableGen/Android.mk b/utils/TableGen/Android.mk
4563new file mode 100644
4564index 0000000..8117672
4565--- /dev/null
4566+++ b/utils/TableGen/Android.mk
4567@@ -0,0 +1,58 @@
4568+LOCAL_PATH:= $(call my-dir)
4569+
4570+tablegen_SRC_FILES := \
4571+  AsmMatcherEmitter.cpp \
4572+  AsmWriterEmitter.cpp \
4573+  AsmWriterInst.cpp \
4574+  CallingConvEmitter.cpp \
4575+  CodeEmitterGen.cpp \
4576+  CodeGenDAGPatterns.cpp \
4577+  CodeGenInstruction.cpp \
4578+  CodeGenMapTable.cpp \
4579+  CodeGenRegisters.cpp \
4580+  CodeGenSchedule.cpp \
4581+  CodeGenTarget.cpp \
4582+  CTagsEmitter.cpp \
4583+  DAGISelEmitter.cpp \
4584+  DAGISelMatcherEmitter.cpp \
4585+  DAGISelMatcherGen.cpp \
4586+  DAGISelMatcherOpt.cpp \
4587+  DAGISelMatcher.cpp \
4588+  DFAPacketizerEmitter.cpp \
4589+  DisassemblerEmitter.cpp \
4590+  FastISelEmitter.cpp \
4591+  FixedLenDecoderEmitter.cpp \
4592+  InstrInfoEmitter.cpp \
4593+  IntrinsicEmitter.cpp \
4594+  OptParserEmitter.cpp \
4595+  PseudoLoweringEmitter.cpp \
4596+  RegisterInfoEmitter.cpp \
4597+  SetTheory.cpp \
4598+  SubtargetEmitter.cpp \
4599+  TableGen.cpp \
4600+  X86DisassemblerTables.cpp \
4601+  X86ModRMFilters.cpp \
4602+  X86RecognizableInstr.cpp
4603+
4604+include $(CLEAR_VARS)
4605+
4606+LOCAL_MODULE := tblgen
4607+LOCAL_MODULE_TAGS := optional
4608+LOCAL_SRC_FILES := $(tablegen_SRC_FILES)
4609+
4610+REQUIRES_EH := 1
4611+REQUIRES_RTTI := 1
4612+
4613+LOCAL_STATIC_LIBRARIES := \
4614+  libLLVMTableGen \
4615+  libLLVMSupport
4616+
4617+LOCAL_LDLIBS += -lm
4618+ifeq ($(HOST_OS),windows)
4619+  LOCAL_LDLIBS += -limagehlp -lpsapi
4620+else
4621+  LOCAL_LDLIBS += -lpthread -ldl
4622+endif
4623+
4624+include $(LLVM_HOST_BUILD_MK)
4625+include $(BUILD_HOST_EXECUTABLE)
4626-- 
46271.9.1.423.g4596e3a
4628
4629