aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp249
-rw-r--r--Android.mk89
-rw-r--r--lib/Analysis/Android.bp8
-rw-r--r--lib/Analysis/Android.mk30
-rw-r--r--lib/Android.bp1
-rw-r--r--lib/AsmParser/Android.bp8
-rw-r--r--lib/AsmParser/Android.mk36
-rw-r--r--lib/Bitcode/Android.bp1
-rw-r--r--lib/Bitcode/Reader/Android.bp8
-rw-r--r--lib/Bitcode/Reader/Android.mk36
-rw-r--r--lib/Bitcode/Writer/Android.bp8
-rw-r--r--lib/Bitcode/Writer/Android.mk37
-rw-r--r--lib/CodeGen/Android.bp10
-rw-r--r--lib/CodeGen/Android.mk31
-rw-r--r--lib/CodeGen/AsmPrinter/Android.bp8
-rw-r--r--lib/CodeGen/AsmPrinter/Android.mk31
-rw-r--r--lib/CodeGen/GlobalISel/Android.bp10
-rw-r--r--lib/CodeGen/GlobalISel/Android.mk33
-rw-r--r--lib/CodeGen/MIRParser/Android.bp8
-rw-r--r--lib/CodeGen/MIRParser/Android.mk36
-rw-r--r--lib/CodeGen/SelectionDAG/Android.bp8
-rw-r--r--lib/CodeGen/SelectionDAG/Android.mk33
-rw-r--r--lib/DebugInfo/Android.bp1
-rw-r--r--lib/DebugInfo/CodeView/Android.bp8
-rw-r--r--lib/DebugInfo/CodeView/Android.mk35
-rw-r--r--lib/DebugInfo/DWARF/Android.bp8
-rw-r--r--lib/DebugInfo/DWARF/Android.mk53
-rw-r--r--lib/DebugInfo/PDB/Android.bp11
-rw-r--r--lib/DebugInfo/PDB/Android.mk40
-rw-r--r--lib/DebugInfo/Symbolize/Android.bp8
-rw-r--r--lib/DebugInfo/Symbolize/Android.mk34
-rw-r--r--lib/ExecutionEngine/Android.bp10
-rw-r--r--lib/ExecutionEngine/Android.mk21
-rw-r--r--lib/ExecutionEngine/Interpreter/Android.bp8
-rw-r--r--lib/ExecutionEngine/Interpreter/Android.mk19
-rw-r--r--lib/ExecutionEngine/MCJIT/Android.bp8
-rw-r--r--lib/ExecutionEngine/MCJIT/Android.mk17
-rw-r--r--lib/ExecutionEngine/Orc/Android.bp8
-rw-r--r--lib/ExecutionEngine/Orc/Android.mk16
-rw-r--r--lib/ExecutionEngine/RuntimeDyld/Android.bp8
-rw-r--r--lib/ExecutionEngine/RuntimeDyld/Android.mk20
-rw-r--r--lib/Fuzzer/Android.bp38
-rw-r--r--lib/Fuzzer/Android.mk55
-rw-r--r--lib/IR/Android.bp15
-rw-r--r--lib/IR/Android.mk44
-rw-r--r--lib/IRReader/Android.bp8
-rw-r--r--lib/IRReader/Android.mk38
-rw-r--r--lib/LTO/Android.bp8
-rw-r--r--lib/LTO/Android.mk36
-rw-r--r--lib/LibDriver/Android.bp15
-rw-r--r--lib/LibDriver/Android.mk40
-rw-r--r--lib/Linker/Android.bp8
-rw-r--r--lib/Linker/Android.mk35
-rw-r--r--lib/MC/Android.bp10
-rw-r--r--lib/MC/Android.mk30
-rw-r--r--lib/MC/MCDisassembler/Android.bp8
-rw-r--r--lib/MC/MCDisassembler/Android.mk38
-rw-r--r--lib/MC/MCParser/Android.bp8
-rw-r--r--lib/MC/MCParser/Android.mk38
-rw-r--r--lib/Object/Android.bp8
-rw-r--r--lib/Object/Android.mk36
-rw-r--r--lib/ObjectYAML/Android.bp8
-rw-r--r--lib/ObjectYAML/Android.mk33
-rw-r--r--lib/Option/Android.bp8
-rw-r--r--lib/Option/Android.mk40
-rw-r--r--lib/Passes/Android.bp8
-rw-r--r--lib/Passes/Android.mk32
-rw-r--r--lib/ProfileData/Android.bp10
-rw-r--r--lib/ProfileData/Android.mk30
-rw-r--r--lib/ProfileData/Coverage/Android.bp8
-rw-r--r--lib/ProfileData/Coverage/Android.mk30
-rw-r--r--lib/Support/Android.bp15
-rw-r--r--lib/Support/Android.mk39
-rw-r--r--lib/TableGen/Android.bp12
-rw-r--r--lib/TableGen/Android.mk43
-rw-r--r--lib/Target/AArch64/Android.bp55
-rw-r--r--lib/Target/AArch64/Android.mk61
-rw-r--r--lib/Target/AArch64/AsmParser/Android.bp9
-rw-r--r--lib/Target/AArch64/AsmParser/Android.mk62
-rw-r--r--lib/Target/AArch64/Disassembler/Android.bp9
-rw-r--r--lib/Target/AArch64/Disassembler/Android.mk59
-rw-r--r--lib/Target/AArch64/InstPrinter/Android.bp9
-rw-r--r--lib/Target/AArch64/InstPrinter/Android.mk57
-rw-r--r--lib/Target/AArch64/MCTargetDesc/Android.bp9
-rw-r--r--lib/Target/AArch64/MCTargetDesc/Android.mk61
-rw-r--r--lib/Target/AArch64/TargetInfo/Android.bp9
-rw-r--r--lib/Target/AArch64/TargetInfo/Android.mk53
-rw-r--r--lib/Target/AArch64/Utils/Android.bp9
-rw-r--r--lib/Target/AArch64/Utils/Android.mk50
-rw-r--r--lib/Target/ARM/Android.bp53
-rw-r--r--lib/Target/ARM/Android.mk90
-rw-r--r--lib/Target/ARM/AsmParser/Android.bp9
-rw-r--r--lib/Target/ARM/AsmParser/Android.mk61
-rw-r--r--lib/Target/ARM/Disassembler/Android.bp9
-rw-r--r--lib/Target/ARM/Disassembler/Android.mk53
-rw-r--r--lib/Target/ARM/InstPrinter/Android.bp9
-rw-r--r--lib/Target/ARM/InstPrinter/Android.mk55
-rw-r--r--lib/Target/ARM/MCTargetDesc/Android.bp9
-rw-r--r--lib/Target/ARM/MCTargetDesc/Android.mk65
-rw-r--r--lib/Target/ARM/TargetInfo/Android.bp9
-rw-r--r--lib/Target/ARM/TargetInfo/Android.mk55
-rw-r--r--lib/Target/Android.bp10
-rw-r--r--lib/Target/Android.mk40
-rw-r--r--lib/Target/Mips/Android.bp47
-rw-r--r--lib/Target/Mips/Android.mk54
-rw-r--r--lib/Target/Mips/AsmParser/Android.bp9
-rw-r--r--lib/Target/Mips/AsmParser/Android.mk57
-rw-r--r--lib/Target/Mips/Disassembler/Android.bp9
-rw-r--r--lib/Target/Mips/Disassembler/Android.mk51
-rw-r--r--lib/Target/Mips/InstPrinter/Android.bp9
-rw-r--r--lib/Target/Mips/InstPrinter/Android.mk49
-rw-r--r--lib/Target/Mips/MCTargetDesc/Android.bp9
-rw-r--r--lib/Target/Mips/MCTargetDesc/Android.mk62
-rw-r--r--lib/Target/Mips/TargetInfo/Android.bp9
-rw-r--r--lib/Target/Mips/TargetInfo/Android.mk48
-rw-r--r--lib/Target/X86/Android.bp52
-rw-r--r--lib/Target/X86/Android.mk59
-rw-r--r--lib/Target/X86/AsmParser/Android.bp9
-rw-r--r--lib/Target/X86/AsmParser/Android.mk62
-rw-r--r--lib/Target/X86/Disassembler/Android.bp9
-rw-r--r--lib/Target/X86/Disassembler/Android.mk55
-rw-r--r--lib/Target/X86/InstPrinter/Android.bp9
-rw-r--r--lib/Target/X86/InstPrinter/Android.mk55
-rw-r--r--lib/Target/X86/MCTargetDesc/Android.bp9
-rw-r--r--lib/Target/X86/MCTargetDesc/Android.mk46
-rw-r--r--lib/Target/X86/TargetInfo/Android.bp9
-rw-r--r--lib/Target/X86/TargetInfo/Android.mk53
-rw-r--r--lib/Target/X86/Utils/Android.bp9
-rw-r--r--lib/Target/X86/Utils/Android.mk34
-rw-r--r--lib/Transforms/Android.bp1
-rw-r--r--lib/Transforms/Hello/Android.bp14
-rw-r--r--lib/Transforms/Hello/Android.mk21
-rw-r--r--lib/Transforms/IPO/Android.bp8
-rw-r--r--lib/Transforms/IPO/Android.mk31
-rw-r--r--lib/Transforms/InstCombine/Android.bp8
-rw-r--r--lib/Transforms/InstCombine/Android.mk44
-rw-r--r--lib/Transforms/Instrumentation/Android.bp8
-rw-r--r--lib/Transforms/Instrumentation/Android.mk30
-rw-r--r--lib/Transforms/ObjCARC/Android.bp8
-rw-r--r--lib/Transforms/ObjCARC/Android.mk40
-rw-r--r--lib/Transforms/Scalar/Android.bp8
-rw-r--r--lib/Transforms/Scalar/Android.mk32
-rw-r--r--lib/Transforms/Utils/Android.bp8
-rw-r--r--lib/Transforms/Utils/Android.mk31
-rw-r--r--lib/Transforms/Vectorize/Android.bp8
-rw-r--r--lib/Transforms/Vectorize/Android.mk31
-rw-r--r--llvm-tblgen-rules.mk191
-rw-r--r--llvm.mk1
-rw-r--r--shared_llvm.mk149
-rw-r--r--soong/Android.bp17
-rw-r--r--soong/llvm.go116
-rw-r--r--soong/tblgen.go153
-rw-r--r--utils/TableGen/Android.bp34
-rw-r--r--utils/TableGen/Android.mk27
154 files changed, 1407 insertions, 3418 deletions
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 000000000000..e7c7691eca75
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,249 @@
+llvm_defaults {
+ name: "llvm-defaults",
+
+ host_supported: true,
+ clang: true,
+
+ cflags: [
+ "-D_GNU_SOURCE",
+ "-D__STDC_LIMIT_MACROS",
+ "-D__STDC_CONSTANT_MACROS",
+ "-D__STDC_FORMAT_MACROS",
+ "-fomit-frame-pointer",
+ "-Wall",
+ "-W",
+ "-Wno-sign-compare",
+ "-Wno-unused-parameter",
+ "-Wno-maybe-uninitialized",
+ "-Wno-missing-field-initializers",
+ "-Wwrite-strings",
+ "-Werror",
+ "-Dsprintf=sprintf",
+ ],
+
+ cppflags: [
+ "-Wno-sign-promo",
+ "-std=c++11",
+ ],
+
+ include_dirs: ["external/llvm/include"],
+
+ target: {
+ android: {
+ cflags: [
+ "-finline-functions",
+ ],
+ cppflags: [
+ "-Woverloaded-virtual",
+ ],
+ include_dirs: ["external/llvm/device/include"],
+ },
+ host: {
+ include_dirs: ["external/llvm/host/include"],
+ cppflags: [
+ "-fno-rtti",
+ "-fno-exceptions",
+ ],
+ },
+ windows: {
+ enabled: true,
+ // Disable certain warnings for use with mingw.
+ // We also must undefine WIN32_LEAN_AND_MEAN, since it is being passed globally
+ // on the command line, and LLVM defines this internally itself.
+ cflags: [
+ "-Wno-array-bounds",
+ "-Wno-comment",
+ "-UWIN32_LEAN_AND_MEAN",
+ ],
+
+ host_ldlibs: ["-luuid"],
+ },
+ linux: {
+ cppflags: ["-Woverloaded-virtual"],
+
+ // Add on ncurses to have support for terminfo
+ host_ldlibs: [
+ "-lncurses",
+ "-lgcc_s",
+ ],
+ },
+ darwin: {
+ cppflags: [
+ "-Wno-deprecated-declarations",
+ "-Woverloaded-virtual",
+ ],
+
+ // Add on ncurses to have support for terminfo
+ host_ldlibs: ["-lncurses"],
+ },
+ },
+}
+
+cc_defaults {
+ name: "llvm-generated-headers",
+ generated_headers: [
+ "llvm-gen-attributes",
+ "llvm-gen-intrinsics",
+ ],
+}
+
+llvm_tblgen {
+ name: "llvm-gen-attributes",
+ in: "include/llvm/IR/Attributes.td",
+ outs: ["llvm/IR/Attributes.inc"],
+}
+
+llvm_tblgen {
+ name: "llvm-gen-intrinsics",
+ in: "include/llvm/IR/Intrinsics.td",
+ outs: ["llvm/IR/Intrinsics.gen"],
+}
+
+// LLVM shared library build
+
+llvm_arm_static_libraries = [
+ "libLLVMARMCodeGen",
+ "libLLVMARMAsmParser",
+ "libLLVMARMAsmPrinter",
+ "libLLVMARMInfo",
+ "libLLVMARMDesc",
+ "libLLVMARMDisassembler",
+]
+
+llvm_x86_static_libraries = [
+ "libLLVMX86CodeGen",
+ "libLLVMX86Info",
+ "libLLVMX86Desc",
+ "libLLVMX86AsmParser",
+ "libLLVMX86AsmPrinter",
+ "libLLVMX86Utils",
+ "libLLVMX86Disassembler",
+]
+
+llvm_mips_static_libraries = [
+ "libLLVMMipsCodeGen",
+ "libLLVMMipsInfo",
+ "libLLVMMipsDesc",
+ "libLLVMMipsAsmParser",
+ "libLLVMMipsAsmPrinter",
+ "libLLVMMipsDisassembler",
+]
+
+llvm_aarch64_static_libraries = [
+ "libLLVMAArch64CodeGen",
+ "libLLVMAArch64Info",
+ "libLLVMAArch64Desc",
+ "libLLVMAArch64AsmParser",
+ "libLLVMAArch64AsmPrinter",
+ "libLLVMAArch64Utils",
+ "libLLVMAArch64Disassembler",
+]
+
+llvm_cc_shared_library {
+ host_supported: true,
+ name: "libLLVM",
+ defaults: ["llvm-defaults"],
+
+ whole_static_libs: [
+ // pre static libraries
+ "libLLVMLinker",
+ "libLLVMipo",
+ "libLLVMDebugInfoDWARF",
+ "libLLVMDebugInfoPDB",
+ "libLLVMSymbolize",
+ "libLLVMIRReader",
+ "libLLVMBitWriter",
+ "libLLVMBitReader",
+
+ // post static libraries
+ "libLLVMLTO",
+ "libLLVMAsmPrinter",
+ "libLLVMSelectionDAG",
+ "libLLVMCodeGen",
+ "libLLVMDebugInfoCodeView",
+ "libLLVMObject",
+ "libLLVMScalarOpts",
+ "libLLVMInstCombine",
+ "libLLVMInstrumentation",
+ "libLLVMTransformObjCARC",
+ "libLLVMTransformUtils",
+ "libLLVMAnalysis",
+ "libLLVMTarget",
+ "libLLVMGlobalISel",
+ "libLLVMMCDisassembler",
+ "libLLVMMC",
+ "libLLVMMCParser",
+ "libLLVMCore",
+ "libLLVMAsmParser",
+ "libLLVMOption",
+ "libLLVMSupport",
+ "libLLVMVectorize",
+ "libLLVMProfileData",
+ "libLLVMProfileDataCoverage",
+ "libLLVMLibDriver",
+ ],
+
+ target: {
+ host: {
+ // Host build pulls in all ARM, Mips, X86 components.
+ whole_static_libs: [
+ "libLLVMExecutionEngine",
+ "libLLVMRuntimeDyld",
+ "libLLVMMCJIT",
+ "libLLVMOrcJIT",
+ ] + llvm_arm_static_libraries +
+ llvm_aarch64_static_libraries +
+ llvm_mips_static_libraries +
+ llvm_x86_static_libraries,
+ },
+ windows: {
+ host_ldlibs: [
+ "-limagehlp",
+ "-lpsapi",
+ "-lole32",
+ "-lversion",
+ ],
+ },
+ darwin: {
+ host_ldlibs: [
+ "-ldl",
+ "-lpthread",
+ ],
+ },
+ linux: {
+ host_ldlibs: [
+ "-ldl",
+ "-lpthread",
+ ],
+ },
+ android_arm: {
+ whole_static_libs: llvm_arm_static_libraries,
+ },
+ android_x86: {
+ whole_static_libs: llvm_x86_static_libraries +
+ llvm_arm_static_libraries +
+ llvm_aarch64_static_libraries,
+ },
+ android_x86_64: {
+ whole_static_libs: llvm_x86_static_libraries +
+ llvm_arm_static_libraries +
+ llvm_aarch64_static_libraries,
+ },
+ android_mips: {
+ whole_static_libs: llvm_mips_static_libraries,
+ },
+ android_mips64: {
+ whole_static_libs: llvm_mips_static_libraries,
+ },
+ android_arm64: {
+ whole_static_libs: llvm_aarch64_static_libraries +
+ llvm_arm_static_libraries,
+ },
+ },
+}
+
+subdirs = [
+ "soong",
+ "lib/*",
+ "utils/*",
+]
diff --git a/Android.mk b/Android.mk
index 1b3fbc7aee72..317fc08d68a8 100644
--- a/Android.mk
+++ b/Android.mk
@@ -15,93 +15,8 @@ endif
include $(CLEAR_VARS)
-# LLVM Libraries
-subdirs := \
- lib/Analysis \
- lib/AsmParser \
- lib/Bitcode/Reader \
- lib/Bitcode/Writer \
- lib/ExecutionEngine \
- lib/ExecutionEngine/RuntimeDyld \
- lib/ExecutionEngine/MCJIT \
- lib/ExecutionEngine/Orc \
- lib/ExecutionEngine/Interpreter \
- lib/Fuzzer \
- lib/CodeGen \
- lib/CodeGen/AsmPrinter \
- lib/CodeGen/GlobalISel \
- lib/CodeGen/MIRParser \
- lib/CodeGen/SelectionDAG \
- lib/DebugInfo/CodeView \
- lib/DebugInfo/DWARF \
- lib/DebugInfo/PDB \
- lib/DebugInfo/Symbolize \
- lib/IR \
- lib/IRReader \
- lib/LibDriver \
- lib/Linker \
- lib/LTO \
- lib/MC \
- lib/MC/MCDisassembler \
- lib/MC/MCParser \
- lib/Object \
- lib/ObjectYAML \
- lib/Option \
- lib/Passes \
- lib/ProfileData \
- lib/ProfileData/Coverage \
- lib/Support \
- lib/TableGen \
- lib/Target \
- lib/Transforms/Hello \
- lib/Transforms/IPO \
- lib/Transforms/InstCombine \
- lib/Transforms/Instrumentation \
- lib/Transforms/ObjCARC \
- lib/Transforms/Scalar \
- lib/Transforms/Utils \
- lib/Transforms/Vectorize \
-
-# ARM Code Generation Libraries
-subdirs += \
- lib/Target/ARM \
- lib/Target/ARM/AsmParser \
- lib/Target/ARM/InstPrinter \
- lib/Target/ARM/Disassembler \
- lib/Target/ARM/MCTargetDesc \
- lib/Target/ARM/TargetInfo
-
-# AArch64 Code Generation Libraries
-subdirs += \
- lib/Target/AArch64 \
- lib/Target/AArch64/AsmParser \
- lib/Target/AArch64/InstPrinter \
- lib/Target/AArch64/Disassembler \
- lib/Target/AArch64/MCTargetDesc \
- lib/Target/AArch64/TargetInfo \
- lib/Target/AArch64/Utils
-
-# MIPS Code Generation Libraries
-subdirs += \
- lib/Target/Mips \
- lib/Target/Mips/AsmParser \
- lib/Target/Mips/InstPrinter \
- lib/Target/Mips/Disassembler \
- lib/Target/Mips/MCTargetDesc \
- lib/Target/Mips/TargetInfo
-
-# X86 Code Generation Libraries
-subdirs += \
- lib/Target/X86 \
- lib/Target/X86/AsmParser \
- lib/Target/X86/InstPrinter \
- lib/Target/X86/Disassembler \
- lib/Target/X86/MCTargetDesc \
- lib/Target/X86/TargetInfo \
- lib/Target/X86/Utils
-
# LLVM Command Line Tools
-subdirs += \
+subdirs := \
tools/bugpoint \
tools/bugpoint-passes \
tools/dsymutil \
@@ -147,10 +62,8 @@ subdirs += \
utils/count \
utils/FileCheck \
utils/not \
- utils/TableGen \
utils/yaml-bench \
include $(LOCAL_PATH)/llvm.mk
-include $(LOCAL_PATH)/shared_llvm.mk
include $(addprefix $(LOCAL_PATH)/,$(addsuffix /Android.mk, $(subdirs)))
diff --git a/lib/Analysis/Android.bp b/lib/Analysis/Android.bp
new file mode 100644
index 000000000000..0fabe6e802f6
--- /dev/null
+++ b/lib/Analysis/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMAnalysis",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Analysis/Android.mk b/lib/Analysis/Android.mk
deleted file mode 100644
index 636e2994a21d..000000000000
--- a/lib/Analysis/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-analysis_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMAnalysis
-LOCAL_MODULE_HOST_OS := darwin linux windows
-LOCAL_SRC_FILES := $(analysis_SRC_FILES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMAnalysis
-LOCAL_SRC_FILES := $(analysis_SRC_FILES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Android.bp b/lib/Android.bp
new file mode 100644
index 000000000000..b44c2960127f
--- /dev/null
+++ b/lib/Android.bp
@@ -0,0 +1 @@
+subdirs = ["*"]
diff --git a/lib/AsmParser/Android.bp b/lib/AsmParser/Android.bp
new file mode 100644
index 000000000000..75106465a2dd
--- /dev/null
+++ b/lib/AsmParser/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMAsmParser",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/AsmParser/Android.mk b/lib/AsmParser/Android.mk
deleted file mode 100644
index bb377d765529..000000000000
--- a/lib/AsmParser/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-asm_parser_SRC_FILES := \
- LLLexer.cpp \
- LLParser.cpp \
- Parser.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(asm_parser_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMAsmParser
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LOCAL_PATH)/../../llvm-host-build.mk
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(asm_parser_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMAsmParser
-
-include $(LOCAL_PATH)/../../llvm-device-build.mk
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Bitcode/Android.bp b/lib/Bitcode/Android.bp
new file mode 100644
index 000000000000..b44c2960127f
--- /dev/null
+++ b/lib/Bitcode/Android.bp
@@ -0,0 +1 @@
+subdirs = ["*"]
diff --git a/lib/Bitcode/Reader/Android.bp b/lib/Bitcode/Reader/Android.bp
new file mode 100644
index 000000000000..ff9ecadc187e
--- /dev/null
+++ b/lib/Bitcode/Reader/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMBitReader",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Bitcode/Reader/Android.mk b/lib/Bitcode/Reader/Android.mk
deleted file mode 100644
index 3b6bc75b63cc..000000000000
--- a/lib/Bitcode/Reader/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-bitcode_reader_SRC_FILES := \
- BitReader.cpp \
- BitcodeReader.cpp \
- BitstreamReader.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMBitReader
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-include $(CLEAR_VARS)
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-
-LOCAL_SRC_FILES := $(bitcode_reader_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMBitReader
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Bitcode/Writer/Android.bp b/lib/Bitcode/Writer/Android.bp
new file mode 100644
index 000000000000..312e7c2fc785
--- /dev/null
+++ b/lib/Bitcode/Writer/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMBitWriter",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Bitcode/Writer/Android.mk b/lib/Bitcode/Writer/Android.mk
deleted file mode 100644
index 0f21ffcf150a..000000000000
--- a/lib/Bitcode/Writer/Android.mk
+++ /dev/null
@@ -1,37 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-bitcode_writer_SRC_FILES := \
- BitWriter.cpp \
- BitcodeWriter.cpp \
- BitcodeWriterPass.cpp \
- ValueEnumerator.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMBitWriter
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-include $(CLEAR_VARS)
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-
-LOCAL_SRC_FILES := $(bitcode_writer_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMBitWriter
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/CodeGen/Android.bp b/lib/CodeGen/Android.bp
new file mode 100644
index 000000000000..255dce4a469e
--- /dev/null
+++ b/lib/CodeGen/Android.bp
@@ -0,0 +1,10 @@
+cc_library_static {
+ name: "libLLVMCodeGen",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
+
+subdirs = ["*"]
diff --git a/lib/CodeGen/Android.mk b/lib/CodeGen/Android.mk
deleted file mode 100644
index 6ca4a219c827..000000000000
--- a/lib/CodeGen/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-codegen_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(codegen_SRC_FILES)
-LOCAL_MODULE:= libLLVMCodeGen
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(codegen_SRC_FILES)
-LOCAL_MODULE:= libLLVMCodeGen
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/CodeGen/AsmPrinter/Android.bp b/lib/CodeGen/AsmPrinter/Android.bp
new file mode 100644
index 000000000000..388eeab007a2
--- /dev/null
+++ b/lib/CodeGen/AsmPrinter/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMAsmPrinter",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/CodeGen/AsmPrinter/Android.mk b/lib/CodeGen/AsmPrinter/Android.mk
deleted file mode 100644
index 7756b62ffbb3..000000000000
--- a/lib/CodeGen/AsmPrinter/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-codegen_asmprinter_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(codegen_asmprinter_SRC_FILES)
-LOCAL_MODULE:= libLLVMAsmPrinter
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(codegen_asmprinter_SRC_FILES)
-LOCAL_MODULE:= libLLVMAsmPrinter
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/CodeGen/GlobalISel/Android.bp b/lib/CodeGen/GlobalISel/Android.bp
new file mode 100644
index 000000000000..1663690d4318
--- /dev/null
+++ b/lib/CodeGen/GlobalISel/Android.bp
@@ -0,0 +1,10 @@
+cc_library_static {
+ name: "libLLVMGlobalISel",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ // Only pull in this one file to ensure we aren't building with this
+ // experimental feature just yet.
+ srcs: ["GlobalISel.cpp"],
+}
diff --git a/lib/CodeGen/GlobalISel/Android.mk b/lib/CodeGen/GlobalISel/Android.mk
deleted file mode 100644
index 3b9477135d86..000000000000
--- a/lib/CodeGen/GlobalISel/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# Only pull in this one file to ensure we aren't building with this
-# experimental feature just yet.
-globalisel_SRC_FILES := GlobalISel.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(globalisel_SRC_FILES)
-LOCAL_MODULE:= libLLVMGlobalISel
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(globalisel_SRC_FILES)
-LOCAL_MODULE:= libLLVMGlobalISel
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/CodeGen/MIRParser/Android.bp b/lib/CodeGen/MIRParser/Android.bp
new file mode 100644
index 000000000000..51c8140d9172
--- /dev/null
+++ b/lib/CodeGen/MIRParser/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMMIRParser",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/CodeGen/MIRParser/Android.mk b/lib/CodeGen/MIRParser/Android.mk
deleted file mode 100644
index 4811c4351a79..000000000000
--- a/lib/CodeGen/MIRParser/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-MIRParser_SRC_FILES := \
- MILexer.cpp \
- MIParser.cpp \
- MIRParser.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(MIRParser_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMMIRParser
-
-LOCAL_MODULE_TAGS := optional
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-include $(CLEAR_VARS)
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-
-LOCAL_SRC_FILES := $(MIRParser_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMMIRParser
-
-LOCAL_MODULE_TAGS := optional
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/CodeGen/SelectionDAG/Android.bp b/lib/CodeGen/SelectionDAG/Android.bp
new file mode 100644
index 000000000000..32aec89bbdc5
--- /dev/null
+++ b/lib/CodeGen/SelectionDAG/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMSelectionDAG",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/CodeGen/SelectionDAG/Android.mk b/lib/CodeGen/SelectionDAG/Android.mk
deleted file mode 100644
index 9f068b6f11f9..000000000000
--- a/lib/CodeGen/SelectionDAG/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-codegen_selectiondag_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMSelectionDAG
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(codegen_selectiondag_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMSelectionDAG
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/DebugInfo/Android.bp b/lib/DebugInfo/Android.bp
new file mode 100644
index 000000000000..b44c2960127f
--- /dev/null
+++ b/lib/DebugInfo/Android.bp
@@ -0,0 +1 @@
+subdirs = ["*"]
diff --git a/lib/DebugInfo/CodeView/Android.bp b/lib/DebugInfo/CodeView/Android.bp
new file mode 100644
index 000000000000..19e8e643def6
--- /dev/null
+++ b/lib/DebugInfo/CodeView/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMDebugInfoCodeView",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/DebugInfo/CodeView/Android.mk b/lib/DebugInfo/CodeView/Android.mk
deleted file mode 100644
index 0eb01fa103c7..000000000000
--- a/lib/DebugInfo/CodeView/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-debuginfo_codeview_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(debuginfo_codeview_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMDebugInfoCodeView
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(debuginfo_codeview_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMDebugInfoCodeView
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/DebugInfo/DWARF/Android.bp b/lib/DebugInfo/DWARF/Android.bp
new file mode 100644
index 000000000000..c6d269ffb422
--- /dev/null
+++ b/lib/DebugInfo/DWARF/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMDebugInfoDWARF",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/DebugInfo/DWARF/Android.mk b/lib/DebugInfo/DWARF/Android.mk
deleted file mode 100644
index 057f72bb2460..000000000000
--- a/lib/DebugInfo/DWARF/Android.mk
+++ /dev/null
@@ -1,53 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-debuginfo_dwarf_SRC_FILES := \
- DWARFAbbreviationDeclaration.cpp \
- DWARFAcceleratorTable.cpp \
- DWARFCompileUnit.cpp \
- DWARFContext.cpp \
- DWARFDebugAbbrev.cpp \
- DWARFDebugArangeSet.cpp \
- DWARFDebugAranges.cpp \
- DWARFDebugFrame.cpp \
- DWARFDebugInfoEntry.cpp \
- DWARFDebugLine.cpp \
- DWARFDebugLoc.cpp \
- DWARFDebugMacro.cpp \
- DWARFDebugRangeList.cpp \
- DWARFFormValue.cpp \
- DWARFTypeUnit.cpp \
- DWARFUnit.cpp \
- DWARFUnitIndex.cpp \
- SyntaxHighlighting.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(debuginfo_dwarf_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMDebugInfoDWARF
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(debuginfo_dwarf_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMDebugInfoDWARF
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/DebugInfo/PDB/Android.bp b/lib/DebugInfo/PDB/Android.bp
new file mode 100644
index 000000000000..6f27c204e147
--- /dev/null
+++ b/lib/DebugInfo/PDB/Android.bp
@@ -0,0 +1,11 @@
+cc_library_static {
+ name: "libLLVMDebugInfoPDB",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: [
+ "*.cpp",
+ "Raw/*.cpp",
+ ],
+}
diff --git a/lib/DebugInfo/PDB/Android.mk b/lib/DebugInfo/PDB/Android.mk
deleted file mode 100644
index 100ada43be0d..000000000000
--- a/lib/DebugInfo/PDB/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# No dia support
-debuginfo_pdb_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# lib/PDB/Raw is included into libLLVMDebugInfoPDB instead of as a separate module
-debuginfo_pdb_raw_SRC_FILES = $(sort $(notdir $(wildcard $(LOCAL_PATH)/Raw/*.cpp)))
-debuginfo_pdb_SRC_FILES += $(debuginfo_pdb_raw_SRC_FILES:%=Raw/%)
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(debuginfo_pdb_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMDebugInfoPDB
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(debuginfo_pdb_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMDebugInfoPDB
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/DebugInfo/Symbolize/Android.bp b/lib/DebugInfo/Symbolize/Android.bp
new file mode 100644
index 000000000000..bac8a7b69518
--- /dev/null
+++ b/lib/DebugInfo/Symbolize/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMSymbolize",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/DebugInfo/Symbolize/Android.mk b/lib/DebugInfo/Symbolize/Android.mk
deleted file mode 100644
index deb98e46d877..000000000000
--- a/lib/DebugInfo/Symbolize/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-debuginfo_symbolize_SRC_FILES := \
- DIPrinter.cpp \
- SymbolizableObjectFile.cpp \
- Symbolize.cpp \
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(debuginfo_symbolize_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMSymbolize
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(debuginfo_symbolize_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMSymbolize
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/ExecutionEngine/Android.bp b/lib/ExecutionEngine/Android.bp
new file mode 100644
index 000000000000..bf150cec4dd8
--- /dev/null
+++ b/lib/ExecutionEngine/Android.bp
@@ -0,0 +1,10 @@
+cc_library_static {
+ name: "libLLVMExecutionEngine",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
+
+subdirs = ["*"]
diff --git a/lib/ExecutionEngine/Android.mk b/lib/ExecutionEngine/Android.mk
deleted file mode 100644
index ffa6d8893aa6..000000000000
--- a/lib/ExecutionEngine/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- ExecutionEngineBindings.cpp \
- ExecutionEngine.cpp \
- GDBRegistrationListener.cpp \
- SectionMemoryManager.cpp \
- TargetSelect.cpp
-
-LOCAL_MODULE:= libLLVMExecutionEngine
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/ExecutionEngine/Interpreter/Android.bp b/lib/ExecutionEngine/Interpreter/Android.bp
new file mode 100644
index 000000000000..d5682fd07b89
--- /dev/null
+++ b/lib/ExecutionEngine/Interpreter/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMInterpreter",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/ExecutionEngine/Interpreter/Android.mk b/lib/ExecutionEngine/Interpreter/Android.mk
deleted file mode 100644
index 69e1cf56c091..000000000000
--- a/lib/ExecutionEngine/Interpreter/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- Execution.cpp \
- ExternalFunctions.cpp \
- Interpreter.cpp \
-
-LOCAL_MODULE:= libLLVMInterpreter
-
-LOCAL_MODULE_TAGS := optional
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/ExecutionEngine/MCJIT/Android.bp b/lib/ExecutionEngine/MCJIT/Android.bp
new file mode 100644
index 000000000000..cc2a3b7e4e83
--- /dev/null
+++ b/lib/ExecutionEngine/MCJIT/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMMCJIT",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/ExecutionEngine/MCJIT/Android.mk b/lib/ExecutionEngine/MCJIT/Android.mk
deleted file mode 100644
index ed4ade578324..000000000000
--- a/lib/ExecutionEngine/MCJIT/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- MCJIT.cpp
-
-LOCAL_MODULE:= libLLVMMCJIT
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/ExecutionEngine/Orc/Android.bp b/lib/ExecutionEngine/Orc/Android.bp
new file mode 100644
index 000000000000..d1c576a8ed74
--- /dev/null
+++ b/lib/ExecutionEngine/Orc/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMOrcJIT",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/ExecutionEngine/Orc/Android.mk b/lib/ExecutionEngine/Orc/Android.mk
deleted file mode 100644
index bcf3543c0abb..000000000000
--- a/lib/ExecutionEngine/Orc/Android.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-LOCAL_MODULE:= libLLVMOrcJIT
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/ExecutionEngine/RuntimeDyld/Android.bp b/lib/ExecutionEngine/RuntimeDyld/Android.bp
new file mode 100644
index 000000000000..e2f325cc09e4
--- /dev/null
+++ b/lib/ExecutionEngine/RuntimeDyld/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMRuntimeDyld",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/ExecutionEngine/RuntimeDyld/Android.mk b/lib/ExecutionEngine/RuntimeDyld/Android.mk
deleted file mode 100644
index e2345fb70f9d..000000000000
--- a/lib/ExecutionEngine/RuntimeDyld/Android.mk
+++ /dev/null
@@ -1,20 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
- RTDyldMemoryManager.cpp \
- RuntimeDyldChecker.cpp \
- RuntimeDyld.cpp \
- RuntimeDyldCOFF.cpp \
- RuntimeDyldELF.cpp \
- RuntimeDyldMachO.cpp
-
-LOCAL_MODULE:= libLLVMRuntimeDyld
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Fuzzer/Android.bp b/lib/Fuzzer/Android.bp
new file mode 100644
index 000000000000..b0b152ca3f72
--- /dev/null
+++ b/lib/Fuzzer/Android.bp
@@ -0,0 +1,38 @@
+//
+// Copyright (C) 2015 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+cc_library_static {
+ name: "libLLVMFuzzerNoMain",
+ host_supported: true,
+ include_dirs: ["external/compiler-rt/include"],
+ srcs: ["*.cpp"],
+ exclude_srcs: ["FuzzerMain.cpp"],
+ sanitize: {
+ address: false,
+ coverage: false,
+ },
+}
+
+cc_library_static {
+ name: "libLLVMFuzzer",
+ host_supported: true,
+ srcs: ["FuzzerMain.cpp"],
+ whole_static_libs: ["libLLVMFuzzerNoMain"],
+ sanitize: {
+ address: false,
+ coverage: false,
+ },
+}
diff --git a/lib/Fuzzer/Android.mk b/lib/Fuzzer/Android.mk
deleted file mode 100644
index 01523be61a63..000000000000
--- a/lib/Fuzzer/Android.mk
+++ /dev/null
@@ -1,55 +0,0 @@
-#
-# Copyright (C) 2015 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-libfuzzer_srcs := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-include $(CLEAR_VARS)
-LOCAL_CLANG := true
-LOCAL_MODULE := libLLVMFuzzerNoMain
-LOCAL_C_INCLUDES := external/compiler-rt/include
-LOCAL_SRC_FILES := $(libfuzzer_srcs)
-LOCAL_SANITIZE := never
-LOCAL_MULTILIB := both
-include $(BUILD_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_CLANG := true
-LOCAL_MODULE := libLLVMFuzzer
-LOCAL_SRC_FILES := FuzzerMain.cpp
-LOCAL_WHOLE_STATIC_LIBRARIES := libLLVMFuzzerNoMain
-LOCAL_SANITIZE := never
-LOCAL_MULTILIB := both
-include $(BUILD_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_CLANG := true
-LOCAL_MODULE := libLLVMFuzzerNoMain
-LOCAL_C_INCLUDES := external/compiler-rt/include
-LOCAL_SRC_FILES := $(libfuzzer_srcs)
-LOCAL_SANITIZE := never
-LOCAL_MULTILIB := both
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-include $(CLEAR_VARS)
-LOCAL_CLANG := true
-LOCAL_MODULE := libLLVMFuzzer
-LOCAL_SRC_FILES := FuzzerMain.cpp
-LOCAL_WHOLE_STATIC_LIBRARIES := libLLVMFuzzerNoMain
-LOCAL_SANITIZE := never
-LOCAL_MULTILIB := both
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/IR/Android.bp b/lib/IR/Android.bp
new file mode 100644
index 000000000000..442d5e0fa8ae
--- /dev/null
+++ b/lib/IR/Android.bp
@@ -0,0 +1,15 @@
+cc_library_static {
+ name: "libLLVMCore",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ generated_headers: ["llvm-gen-core"],
+ srcs: ["*.cpp"],
+}
+
+llvm_tblgen {
+ name: "llvm-gen-core",
+ in: "AttributesCompatFunc.td",
+ outs: ["AttributesCompatFunc.inc"],
+}
diff --git a/lib/IR/Android.mk b/lib/IR/Android.mk
deleted file mode 100644
index 0a5f64deb7d1..000000000000
--- a/lib/IR/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-vmcore_TBLGEN_TABLES := AttributesCompatFunc.inc
-vmcore_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(vmcore_SRC_FILES)
-TBLGEN_TABLES := $(vmcore_TBLGEN_TABLES)
-
-LOCAL_MODULE:= libLLVMCore
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(vmcore_SRC_FILES)
-TBLGEN_TABLES := $(vmcore_TBLGEN_TABLES)
-
-LOCAL_MODULE:= libLLVMCore
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/IRReader/Android.bp b/lib/IRReader/Android.bp
new file mode 100644
index 000000000000..abc4656a5074
--- /dev/null
+++ b/lib/IRReader/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMIRReader",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/IRReader/Android.mk b/lib/IRReader/Android.mk
deleted file mode 100644
index b33502e8dcdb..000000000000
--- a/lib/IRReader/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-irreader_SRC_FILES := \
- IRReader.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(irreader_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMIRReader
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(irreader_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMIRReader
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/LTO/Android.bp b/lib/LTO/Android.bp
new file mode 100644
index 000000000000..3022d31a38f4
--- /dev/null
+++ b/lib/LTO/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMLTO",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/LTO/Android.mk b/lib/LTO/Android.mk
deleted file mode 100644
index 68608c13a9d4..000000000000
--- a/lib/LTO/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-lto_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(lto_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMLTO
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_MODULE_TAGS := optional
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(lto_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMLTO
-
-LOCAL_MODULE_TAGS := optional
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/LibDriver/Android.bp b/lib/LibDriver/Android.bp
new file mode 100644
index 000000000000..6eb5f166be78
--- /dev/null
+++ b/lib/LibDriver/Android.bp
@@ -0,0 +1,15 @@
+cc_library_static {
+ name: "libLLVMLibDriver",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ generated_headers: ["llvm-gen-libdriver"],
+ srcs: ["*.cpp"],
+}
+
+llvm_tblgen {
+ name: "llvm-gen-libdriver",
+ in: "Options.td",
+ outs: ["Options.inc"],
+}
diff --git a/lib/LibDriver/Android.mk b/lib/LibDriver/Android.mk
deleted file mode 100644
index 592739a19355..000000000000
--- a/lib/LibDriver/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-LibDriver_SRC_FILES := \
- LibDriver.cpp
-
-LibDriver_TBLGEN_TABLES := \
- Options.inc
-
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_SRC_FILES := $(LibDriver_SRC_FILES)
-TBLGEN_TABLES := $(LibDriver_TBLGEN_TABLES)
-
-LOCAL_MODULE:= libLLVMLibDriver
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-
-LOCAL_SRC_FILES := $(LibDriver_SRC_FILES)
-TBLGEN_TABLES := $(LibDriver_TBLGEN_TABLES)
-
-LOCAL_MODULE:= libLLVMLibDriver
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Linker/Android.bp b/lib/Linker/Android.bp
new file mode 100644
index 000000000000..0d424b0d2c6e
--- /dev/null
+++ b/lib/Linker/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMLinker",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Linker/Android.mk b/lib/Linker/Android.mk
deleted file mode 100644
index b2271564a527..000000000000
--- a/lib/Linker/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-linker_SRC_FILES := \
- IRMover.cpp \
- LinkModules.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_SRC_FILES := $(linker_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMLinker
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(linker_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMLinker
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/MC/Android.bp b/lib/MC/Android.bp
new file mode 100644
index 000000000000..83ae2fd44e06
--- /dev/null
+++ b/lib/MC/Android.bp
@@ -0,0 +1,10 @@
+cc_library_static {
+ name: "libLLVMMC",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
+
+subdirs = ["*"]
diff --git a/lib/MC/Android.mk b/lib/MC/Android.mk
deleted file mode 100644
index 7a1c1b7dde60..000000000000
--- a/lib/MC/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-mc_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(mc_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMMC
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-include $(CLEAR_VARS)
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-
-LOCAL_SRC_FILES := $(mc_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMMC
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/MC/MCDisassembler/Android.bp b/lib/MC/MCDisassembler/Android.bp
new file mode 100644
index 000000000000..183c2cd5a363
--- /dev/null
+++ b/lib/MC/MCDisassembler/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMMCDisassembler",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/MC/MCDisassembler/Android.mk b/lib/MC/MCDisassembler/Android.mk
deleted file mode 100644
index 1c08fef63d4e..000000000000
--- a/lib/MC/MCDisassembler/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-mc_disassembler_SRC_FILES := \
- Disassembler.cpp \
- MCDisassembler.cpp \
- MCExternalSymbolizer.cpp \
- MCRelocationInfo.cpp \
- MCSymbolizer.cpp
-
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(mc_disassembler_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMMCDisassembler
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-include $(CLEAR_VARS)
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-
-LOCAL_SRC_FILES := $(mc_disassembler_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMMCDisassembler
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/MC/MCParser/Android.bp b/lib/MC/MCParser/Android.bp
new file mode 100644
index 000000000000..c688e93847fa
--- /dev/null
+++ b/lib/MC/MCParser/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMMCParser",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/MC/MCParser/Android.mk b/lib/MC/MCParser/Android.mk
deleted file mode 100644
index 45fc8d1ed889..000000000000
--- a/lib/MC/MCParser/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-mc_parser_SRC_FILES := \
- AsmLexer.cpp \
- AsmParser.cpp \
- COFFAsmParser.cpp \
- DarwinAsmParser.cpp \
- ELFAsmParser.cpp \
- MCAsmLexer.cpp \
- MCAsmParser.cpp \
- MCAsmParserExtension.cpp \
- MCTargetAsmParser.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMMCParser
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-include $(CLEAR_VARS)
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-
-LOCAL_SRC_FILES := $(mc_parser_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMMCParser
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Object/Android.bp b/lib/Object/Android.bp
new file mode 100644
index 000000000000..dff2fc62c055
--- /dev/null
+++ b/lib/Object/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMObject",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Object/Android.mk b/lib/Object/Android.mk
deleted file mode 100644
index 6bec8aaeb448..000000000000
--- a/lib/Object/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-object_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMObject
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(object_SRC_FILES)
-
-# Our windows cross-compiler triggers a spurious uninitialized warning.
-LOCAL_CFLAGS_windows := -Wno-uninitialized
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMObject
-
-LOCAL_SRC_FILES := $(object_SRC_FILES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/ObjectYAML/Android.bp b/lib/ObjectYAML/Android.bp
new file mode 100644
index 000000000000..4f53dccd9a93
--- /dev/null
+++ b/lib/ObjectYAML/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMObjectYAML",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/ObjectYAML/Android.mk b/lib/ObjectYAML/Android.mk
deleted file mode 100644
index e201c6af5b1b..000000000000
--- a/lib/ObjectYAML/Android.mk
+++ /dev/null
@@ -1,33 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-objectyaml_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMObjectYAML
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(objectyaml_SRC_FILES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMObjectYAML
-
-LOCAL_SRC_FILES := $(objectyaml_SRC_FILES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Option/Android.bp b/lib/Option/Android.bp
new file mode 100644
index 000000000000..704013498b03
--- /dev/null
+++ b/lib/Option/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMOption",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Option/Android.mk b/lib/Option/Android.mk
deleted file mode 100644
index 6f8a58f86464..000000000000
--- a/lib/Option/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-option_SRC_FILES := \
- Arg.cpp \
- ArgList.cpp \
- Option.cpp \
- OptTable.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-# FIXME: This only requires RTTI because tblgen uses it. Fix that.
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(option_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMOption
-
-LOCAL_CFLAGS := -D__android__
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-include $(CLEAR_VARS)
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-
-LOCAL_SRC_FILES := $(option_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMOption
-
-LOCAL_CFLAGS := -D__android__
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Passes/Android.bp b/lib/Passes/Android.bp
new file mode 100644
index 000000000000..ecd2980c906b
--- /dev/null
+++ b/lib/Passes/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMPasses",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Passes/Android.mk b/lib/Passes/Android.mk
deleted file mode 100644
index 3cc4b6687624..000000000000
--- a/lib/Passes/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-passes_SRC_FILES := \
- PassBuilder.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMPasses
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(passes_SRC_FILES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMPasses
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(passes_SRC_FILES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/ProfileData/Android.bp b/lib/ProfileData/Android.bp
new file mode 100644
index 000000000000..557d35599bbe
--- /dev/null
+++ b/lib/ProfileData/Android.bp
@@ -0,0 +1,10 @@
+cc_library_static {
+ name: "libLLVMProfileData",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
+
+subdirs = ["*"]
diff --git a/lib/ProfileData/Android.mk b/lib/ProfileData/Android.mk
deleted file mode 100644
index f95d3c608044..000000000000
--- a/lib/ProfileData/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-profiledata_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMProfileData
-LOCAL_MODULE_HOST_OS := darwin linux windows
-LOCAL_SRC_FILES := $(profiledata_SRC_FILES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMProfileData
-LOCAL_SRC_FILES := $(profiledata_SRC_FILES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/ProfileData/Coverage/Android.bp b/lib/ProfileData/Coverage/Android.bp
new file mode 100644
index 000000000000..b8028142f5e0
--- /dev/null
+++ b/lib/ProfileData/Coverage/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMProfileDataCoverage",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/ProfileData/Coverage/Android.mk b/lib/ProfileData/Coverage/Android.mk
deleted file mode 100644
index 412b95e38baa..000000000000
--- a/lib/ProfileData/Coverage/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-profiledata_coverage_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMProfileDataCoverage
-LOCAL_MODULE_HOST_OS := darwin linux windows
-LOCAL_SRC_FILES := $(profiledata_coverage_SRC_FILES)
-
-include $(LLVM_HOST_BUILD_MK)
-# include $(LLVM_GEN_ATTRIBUTES_MK)
-# include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMProfileDataCoverage
-LOCAL_SRC_FILES := $(profiledata_coverage_SRC_FILES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-# include $(LLVM_GEN_ATTRIBUTES_MK)
-# include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Support/Android.bp b/lib/Support/Android.bp
new file mode 100644
index 000000000000..697fb5c38134
--- /dev/null
+++ b/lib/Support/Android.bp
@@ -0,0 +1,15 @@
+cc_library_static {
+ name: "libLLVMSupport",
+ defaults: ["llvm-defaults"],
+ target: {
+ // llvm-defaults turns off host builds by default, turn it back on for
+ // modules that are used to build llvm-tblgen
+ host: {
+ enabled: true,
+ },
+ },
+ srcs: [
+ "*.c",
+ "*.cpp",
+ ],
+}
diff --git a/lib/Support/Android.mk b/lib/Support/Android.mk
deleted file mode 100644
index 81d61b38bbb9..000000000000
--- a/lib/Support/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-LLVM_ROOT_PATH := $(LOCAL_PATH)/../..
-include $(LLVM_ROOT_PATH)/llvm.mk
-
-support_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-support_SRC_FILES += $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.c)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-# FIXME: This only requires RTTI because tblgen uses it. Fix that.
-REQUIRES_RTTI := 1
-
-LOCAL_SRC_FILES := $(support_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMSupport
-
-LOCAL_CFLAGS := -D__android__
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(support_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMSupport
-
-LOCAL_CFLAGS := -D__android__
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/TableGen/Android.bp b/lib/TableGen/Android.bp
new file mode 100644
index 000000000000..497e866ea74a
--- /dev/null
+++ b/lib/TableGen/Android.bp
@@ -0,0 +1,12 @@
+cc_library_static {
+ name: "libLLVMTableGen",
+ defaults: ["llvm-defaults"],
+ srcs: ["*.cpp"],
+ target: {
+ // llvm-defaults turns off host builds by default, turn it back on for
+ // modules that are used to build llvm-tblgen
+ host: {
+ enabled: true,
+ },
+ },
+}
diff --git a/lib/TableGen/Android.mk b/lib/TableGen/Android.mk
deleted file mode 100644
index 0484f90f151d..000000000000
--- a/lib/TableGen/Android.mk
+++ /dev/null
@@ -1,43 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-LLVM_ROOT_PATH := $(LOCAL_PATH)/../..
-include $(LLVM_ROOT_PATH)/llvm.mk
-
-libtablegen_SRC_FILES := \
- Error.cpp \
- Main.cpp \
- Record.cpp \
- SetTheory.cpp \
- StringMatcher.cpp \
- TableGenBackend.cpp \
- TGLexer.cpp \
- TGParser.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-
-LOCAL_SRC_FILES := $(libtablegen_SRC_FILES)
-LOCAL_MODULE:= libLLVMTableGen
-
-LOCAL_MODULE_TAGS := optional
-
-REQUIRES_EH := 1
-REQUIRES_RTTI := 1
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-## For the device
-## =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-#include $(CLEAR_VARS)
-#
-#LOCAL_SRC_FILES := $(libtablegen_SRC_FILES)
-#LOCAL_MODULE:= libLLVMTableGen
-#
-#LOCAL_MODULE_TAGS := optional
-#
-#include $(LLVM_DEVICE_BUILD_MK)
-#include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/AArch64/Android.bp b/lib/Target/AArch64/Android.bp
new file mode 100644
index 000000000000..536c17b562b8
--- /dev/null
+++ b/lib/Target/AArch64/Android.bp
@@ -0,0 +1,55 @@
+cc_library_static {
+ name: "libLLVMAArch64CodeGen",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-aarch64-defaults",
+ ],
+ srcs: ["*.cpp"],
+
+ // Global ISEL is an experimental feature. If LLVM_BUILD_GLOBAL_ISEL is not
+ // set, these files fail compilation based on a macro check.
+ exclude_srcs: [
+ "AArch64CallLowering.cpp",
+ "AArch64RegisterBankInfo.cpp",
+ ],
+}
+
+cc_defaults {
+ name: "llvm-aarch64-defaults",
+ generated_headers: ["llvm-gen-aarch64"],
+ static_libs: ["llvm-aarch64-headers"],
+}
+
+cc_library_static {
+ name: "llvm-aarch64-headers",
+ host_supported: true,
+ target: {
+ windows: {
+ enabled: true,
+ },
+ },
+ export_include_dirs: ["."],
+}
+
+llvm_tblgen {
+ name: "llvm-gen-aarch64",
+ in: "AArch64.td",
+ outs: [
+ "AArch64GenRegisterInfo.inc",
+ "AArch64GenInstrInfo.inc",
+ "AArch64GenAsmWriter.inc",
+ "AArch64GenAsmWriter1.inc",
+ "AArch64GenDAGISel.inc",
+ "AArch64GenCallingConv.inc",
+ "AArch64GenAsmMatcher.inc",
+ "AArch64GenSubtargetInfo.inc",
+ "AArch64GenMCCodeEmitter.inc",
+ "AArch64GenFastISel.inc",
+ "AArch64GenDisassemblerTables.inc",
+ "AArch64GenMCPseudoLowering.inc",
+ "AArch64GenSystemOperands.inc",
+ ],
+}
+
+subdirs = ["*"]
diff --git a/lib/Target/AArch64/Android.mk b/lib/Target/AArch64/Android.mk
deleted file mode 100644
index 371b00170a6a..000000000000
--- a/lib/Target/AArch64/Android.mk
+++ /dev/null
@@ -1,61 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-aarch64_codegen_TBLGEN_TABLES := \
- AArch64GenRegisterInfo.inc \
- AArch64GenInstrInfo.inc \
- AArch64GenAsmWriter.inc \
- AArch64GenAsmWriter1.inc \
- AArch64GenDAGISel.inc \
- AArch64GenCallingConv.inc \
- AArch64GenAsmMatcher.inc \
- AArch64GenSubtargetInfo.inc \
- AArch64GenMCCodeEmitter.inc \
- AArch64GenFastISel.inc \
- AArch64GenDisassemblerTables.inc \
- AArch64GenMCPseudoLowering.inc \
- AArch64GenSystemOperands.inc \
-
-aarch64_codegen_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# Global ISEL is an experimental feature. If LLVM_BUILD_GLOBAL_ISEL is not
-# set, these files fail compilation based on a macro check.
-aarch64_global_isel_SRC_FILES := AArch64CallLowering.cpp \
- AArch64RegisterBankInfo.cpp
-aarch64_codegen_SRC_FILES := $(filter-out $(aarch64_global_isel_SRC_FILES),$(aarch64_codegen_SRC_FILES))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMAArch64CodeGen
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(aarch64_codegen_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
-TBLGEN_TABLES := $(aarch64_codegen_TBLGEN_TABLES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMAArch64CodeGen
-
-LOCAL_SRC_FILES := $(aarch64_codegen_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
-TBLGEN_TABLES := $(aarch64_codegen_TBLGEN_TABLES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/AArch64/AsmParser/Android.bp b/lib/Target/AArch64/AsmParser/Android.bp
new file mode 100644
index 000000000000..7d30fb20e80b
--- /dev/null
+++ b/lib/Target/AArch64/AsmParser/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMAArch64AsmParser",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-aarch64-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/AArch64/AsmParser/Android.mk b/lib/Target/AArch64/AsmParser/Android.mk
deleted file mode 100644
index 5d3a7cedc52a..000000000000
--- a/lib/Target/AArch64/AsmParser/Android.mk
+++ /dev/null
@@ -1,62 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-#===---------------------------------------------------------------===
-# libARMAsmParser (common)
-#===---------------------------------------------------------------===
-
-aarch64_asm_parser_SRC_FILES := \
- AArch64AsmParser.cpp
-
-aarch64_asm_parser_TBLGEN_TABLES := \
- AArch64GenInstrInfo.inc \
- AArch64GenRegisterInfo.inc \
- AArch64GenAsmMatcher.inc \
- AArch64GenSubtargetInfo.inc \
- AArch64GenSystemOperands.inc \
-
-aarch64_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-aarch64_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
-
-
-#===---------------------------------------------------------------===
-# libAArch64AsmParser (host)
-#===---------------------------------------------------------------===
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMAArch64AsmParser
-LOCAL_MODULE_HOST_OS := darwin linux windows
-LOCAL_SRC_FILES := $(aarch64_asm_parser_SRC_FILES)
-LOCAL_C_INCLUDES += $(aarch64_asm_parser_C_INCLUDES)
-TBLGEN_TABLES := $(aarch64_asm_parser_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(aarch64_asm_parser_TBLGEN_TD_DIR)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-# Override the default optimization level to work around taking forever (~50m)
-# to compile AArch64AsmParser.cpp on Mac with gcc 4.2,
-# or on Linux with mingw32msvc-gcc 4.2, which is used to cross-compile
-# the win_sdk.
-LOCAL_CFLAGS_darwin += -O0
-LOCAL_CFLAGS_windows += -O0
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-
-#===---------------------------------------------------------------===
-# libAArch64AsmParser (target)
-#===---------------------------------------------------------------===
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMAArch64AsmParser
-LOCAL_SRC_FILES := $(aarch64_asm_parser_SRC_FILES)
-LOCAL_C_INCLUDES += $(aarch64_asm_parser_C_INCLUDES)
-TBLGEN_TABLES := $(aarch64_asm_parser_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(aarch64_asm_parser_TBLGEN_TD_DIR)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/AArch64/Disassembler/Android.bp b/lib/Target/AArch64/Disassembler/Android.bp
new file mode 100644
index 000000000000..9f37921fe12c
--- /dev/null
+++ b/lib/Target/AArch64/Disassembler/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMAArch64Disassembler",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-aarch64-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/AArch64/Disassembler/Android.mk b/lib/Target/AArch64/Disassembler/Android.mk
deleted file mode 100644
index 3b13ea9c0f11..000000000000
--- a/lib/Target/AArch64/Disassembler/Android.mk
+++ /dev/null
@@ -1,59 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-aarch64_disassembler_TBLGEN_TABLES := \
- AArch64GenDisassemblerTables.inc \
- AArch64GenInstrInfo.inc \
- AArch64GenSubtargetInfo.inc \
- AArch64GenRegisterInfo.inc \
- AArch64GenSystemOperands.inc
-
-aarch64_disassembler_SRC_FILES := \
- AArch64Disassembler.cpp \
- AArch64ExternalSymbolizer.cpp
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(aarch64_disassembler_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(aarch64_disassembler_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMAArch64Disassembler
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(aarch64_disassembler_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(aarch64_disassembler_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMAArch64Disassembler
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
diff --git a/lib/Target/AArch64/InstPrinter/Android.bp b/lib/Target/AArch64/InstPrinter/Android.bp
new file mode 100644
index 000000000000..0f8fd4b85aae
--- /dev/null
+++ b/lib/Target/AArch64/InstPrinter/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMAArch64AsmPrinter",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-aarch64-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/AArch64/InstPrinter/Android.mk b/lib/Target/AArch64/InstPrinter/Android.mk
deleted file mode 100644
index 606f4e76ff76..000000000000
--- a/lib/Target/AArch64/InstPrinter/Android.mk
+++ /dev/null
@@ -1,57 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-aarch64_asm_printer_TBLGEN_TABLES := \
- AArch64GenAsmWriter.inc \
- AArch64GenAsmWriter1.inc \
- AArch64GenRegisterInfo.inc \
- AArch64GenSubtargetInfo.inc \
- AArch64GenInstrInfo.inc \
- AArch64GenSystemOperands.inc \
-
-aarch64_asm_printer_SRC_FILES := \
- AArch64InstPrinter.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(aarch64_asm_printer_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(aarch64_asm_printer_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMAArch64AsmPrinter
-
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(aarch64_asm_printer_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(aarch64_asm_printer_SRC_FILES)
-
-LOCAL_C_INCLUDES+= \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMAArch64AsmPrinter
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
-
diff --git a/lib/Target/AArch64/MCTargetDesc/Android.bp b/lib/Target/AArch64/MCTargetDesc/Android.bp
new file mode 100644
index 000000000000..cd43013be01c
--- /dev/null
+++ b/lib/Target/AArch64/MCTargetDesc/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMAArch64Desc",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-aarch64-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/AArch64/MCTargetDesc/Android.mk b/lib/Target/AArch64/MCTargetDesc/Android.mk
deleted file mode 100644
index 0da6da0eaa93..000000000000
--- a/lib/Target/AArch64/MCTargetDesc/Android.mk
+++ /dev/null
@@ -1,61 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-aarch64_mc_desc_TBLGEN_TABLES := \
- AArch64GenRegisterInfo.inc \
- AArch64GenInstrInfo.inc \
- AArch64GenMCCodeEmitter.inc \
- AArch64GenSubtargetInfo.inc \
- AArch64GenSystemOperands.inc \
-
-aarch64_mc_desc_SRC_FILES := \
- AArch64AsmBackend.cpp \
- AArch64ELFObjectWriter.cpp \
- AArch64ELFStreamer.cpp \
- AArch64MachObjectWriter.cpp \
- AArch64MCAsmInfo.cpp \
- AArch64MCCodeEmitter.cpp \
- AArch64MCExpr.cpp \
- AArch64MCTargetDesc.cpp \
- AArch64TargetStreamer.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-
-LOCAL_MODULE:= libLLVMAArch64Desc
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(aarch64_mc_desc_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(aarch64_mc_desc_TBLGEN_TABLES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMAArch64Desc
-
-LOCAL_SRC_FILES := $(aarch64_mc_desc_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(aarch64_mc_desc_TBLGEN_TABLES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/AArch64/TargetInfo/Android.bp b/lib/Target/AArch64/TargetInfo/Android.bp
new file mode 100644
index 000000000000..75100617a332
--- /dev/null
+++ b/lib/Target/AArch64/TargetInfo/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMAArch64Info",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-aarch64-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/AArch64/TargetInfo/Android.mk b/lib/Target/AArch64/TargetInfo/Android.mk
deleted file mode 100644
index 6a963edcc46d..000000000000
--- a/lib/Target/AArch64/TargetInfo/Android.mk
+++ /dev/null
@@ -1,53 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-aarch64_target_info_TBLGEN_TABLES := \
- AArch64GenSubtargetInfo.inc \
- AArch64GenRegisterInfo.inc \
- AArch64GenInstrInfo.inc
-
-aarch64_target_info_SRC_FILES := \
- AArch64TargetInfo.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(aarch64_target_info_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(aarch64_target_info_SRC_FILES)
-
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMAArch64Info
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(aarch64_target_info_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(aarch64_target_info_SRC_FILES)
-
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMAArch64Info
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/AArch64/Utils/Android.bp b/lib/Target/AArch64/Utils/Android.bp
new file mode 100644
index 000000000000..a1ce501801f2
--- /dev/null
+++ b/lib/Target/AArch64/Utils/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMAArch64Utils",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-aarch64-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/AArch64/Utils/Android.mk b/lib/Target/AArch64/Utils/Android.mk
deleted file mode 100644
index 63543fe765cc..000000000000
--- a/lib/Target/AArch64/Utils/Android.mk
+++ /dev/null
@@ -1,50 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-aarch64_utils_TBLGEN_TABLES := \
- AArch64GenRegisterInfo.inc \
- AArch64GenInstrInfo.inc \
- AArch64GenSubtargetInfo.inc \
- AArch64GenSystemOperands.inc \
-
-aarch64_utils_SRC_FILES := \
- AArch64BaseInfo.cpp
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(aarch64_utils_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMAArch64Utils
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(aarch64_utils_TBLGEN_TABLES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(aarch64_utils_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMAArch64Utils
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(aarch64_utils_TBLGEN_TABLES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/ARM/Android.bp b/lib/Target/ARM/Android.bp
new file mode 100644
index 000000000000..0e7ce3925833
--- /dev/null
+++ b/lib/Target/ARM/Android.bp
@@ -0,0 +1,53 @@
+cc_library_static {
+ name: "libLLVMARMCodeGen",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-arm-defaults",
+ ],
+ srcs: ["*.cpp"],
+
+ // b/31559947, b/31938382 clang-tidy segmentation fault.
+ tidy_checks: [
+ "-clang-analyzer-*",
+ "-readability-*",
+ ],
+}
+
+cc_defaults {
+ name: "llvm-arm-defaults",
+ generated_headers: ["llvm-gen-arm"],
+ static_libs: ["llvm-arm-headers"],
+}
+
+cc_library_static {
+ name: "llvm-arm-headers",
+ host_supported: true,
+ target: {
+ windows: {
+ enabled: true,
+ },
+ },
+ export_include_dirs: ["."],
+}
+
+llvm_tblgen {
+ name: "llvm-gen-arm",
+ in: "ARM.td",
+ outs: [
+ "ARMGenRegisterInfo.inc",
+ "ARMGenInstrInfo.inc",
+ "ARMGenCodeEmitter.inc",
+ "ARMGenMCCodeEmitter.inc",
+ "ARMGenMCPseudoLowering.inc",
+ "ARMGenAsmWriter.inc",
+ "ARMGenAsmMatcher.inc",
+ "ARMGenDAGISel.inc",
+ "ARMGenFastISel.inc",
+ "ARMGenCallingConv.inc",
+ "ARMGenSubtargetInfo.inc",
+ "ARMGenDisassemblerTables.inc",
+ ],
+}
+
+subdirs = ["*"]
diff --git a/lib/Target/ARM/Android.mk b/lib/Target/ARM/Android.mk
deleted file mode 100644
index c6a97703470a..000000000000
--- a/lib/Target/ARM/Android.mk
+++ /dev/null
@@ -1,90 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-arm_codegen_TBLGEN_TABLES := \
- ARMGenRegisterInfo.inc \
- ARMGenInstrInfo.inc \
- ARMGenCodeEmitter.inc \
- ARMGenMCCodeEmitter.inc \
- ARMGenMCPseudoLowering.inc \
- ARMGenAsmWriter.inc \
- ARMGenAsmMatcher.inc \
- ARMGenDAGISel.inc \
- ARMGenFastISel.inc \
- ARMGenCallingConv.inc \
- ARMGenSubtargetInfo.inc \
- ARMGenDisassemblerTables.inc
-
-arm_codegen_SRC_FILES := \
- A15SDOptimizer.cpp \
- ARMAsmPrinter.cpp \
- ARMBaseInstrInfo.cpp \
- ARMBaseRegisterInfo.cpp \
- ARMConstantIslandPass.cpp \
- ARMConstantPoolValue.cpp \
- ARMExpandPseudoInsts.cpp \
- ARMFastISel.cpp \
- ARMFrameLowering.cpp \
- ARMHazardRecognizer.cpp \
- ARMISelDAGToDAG.cpp \
- ARMISelLowering.cpp \
- ARMInstrInfo.cpp \
- ARMLoadStoreOptimizer.cpp \
- ARMMCInstLower.cpp \
- ARMMachineFunctionInfo.cpp \
- ARMOptimizeBarriersPass.cpp \
- ARMRegisterInfo.cpp \
- ARMSelectionDAGInfo.cpp \
- ARMSubtarget.cpp \
- ARMTargetMachine.cpp \
- ARMTargetObjectFile.cpp \
- ARMTargetTransformInfo.cpp \
- MLxExpansionPass.cpp \
- Thumb1FrameLowering.cpp \
- Thumb1InstrInfo.cpp \
- ThumbRegisterInfo.cpp \
- Thumb2ITBlockPass.cpp \
- Thumb2InstrInfo.cpp \
- Thumb2SizeReduction.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-# b/31559947, b/31938382 clang-tidy segmentation fault.
-LOCAL_TIDY_CHECKS := -clang-analyzer-*,-readability-*
-
-LOCAL_MODULE:= libLLVMARMCodeGen
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
-TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-# b/31559947, b/31938382 clang-tidy segmentation fault.
-LOCAL_TIDY_CHECKS := -clang-analyzer-*,-readability-*
-
-LOCAL_MODULE:= libLLVMARMCodeGen
-
-LOCAL_SRC_FILES := $(arm_codegen_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
-TBLGEN_TABLES := $(arm_codegen_TBLGEN_TABLES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/ARM/AsmParser/Android.bp b/lib/Target/ARM/AsmParser/Android.bp
new file mode 100644
index 000000000000..01614eb483ca
--- /dev/null
+++ b/lib/Target/ARM/AsmParser/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMARMAsmParser",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-arm-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/ARM/AsmParser/Android.mk b/lib/Target/ARM/AsmParser/Android.mk
deleted file mode 100644
index 42c36e9541df..000000000000
--- a/lib/Target/ARM/AsmParser/Android.mk
+++ /dev/null
@@ -1,61 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-#===---------------------------------------------------------------===
-# libARMAsmParser (common)
-#===---------------------------------------------------------------===
-
-arm_asm_parser_SRC_FILES := \
- ARMAsmParser.cpp
-
-arm_asm_parser_TBLGEN_TABLES := \
- ARMGenInstrInfo.inc \
- ARMGenRegisterInfo.inc \
- ARMGenAsmMatcher.inc \
- ARMGenSubtargetInfo.inc
-
-arm_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-arm_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
-
-
-#===---------------------------------------------------------------===
-# libARMAsmParser (host)
-#===---------------------------------------------------------------===
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMARMAsmParser
-LOCAL_MODULE_HOST_OS := darwin linux windows
-LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES)
-LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES)
-TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-# Override the default optimization level to work around taking forever (~50m)
-# to compile ARMAsmParser.cpp on Mac with gcc 4.2,
-# or on Linux with mingw32msvc-gcc 4.2, which is used to cross-compile
-# the win_sdk.
-LOCAL_CFLAGS_darwin += -O0
-LOCAL_CFLAGS_windows += -O0
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-
-#===---------------------------------------------------------------===
-# libARMAsmParser (target)
-#===---------------------------------------------------------------===
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMARMAsmParser
-LOCAL_SRC_FILES := $(arm_asm_parser_SRC_FILES)
-LOCAL_C_INCLUDES += $(arm_asm_parser_C_INCLUDES)
-TBLGEN_TABLES := $(arm_asm_parser_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(arm_asm_parser_TBLGEN_TD_DIR)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/ARM/Disassembler/Android.bp b/lib/Target/ARM/Disassembler/Android.bp
new file mode 100644
index 000000000000..89b98b991e0a
--- /dev/null
+++ b/lib/Target/ARM/Disassembler/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMARMDisassembler",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-arm-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/ARM/Disassembler/Android.mk b/lib/Target/ARM/Disassembler/Android.mk
deleted file mode 100644
index e849a6920908..000000000000
--- a/lib/Target/ARM/Disassembler/Android.mk
+++ /dev/null
@@ -1,53 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-arm_disassembler_TBLGEN_TABLES := \
- ARMGenDisassemblerTables.inc \
- ARMGenInstrInfo.inc \
- ARMGenSubtargetInfo.inc \
- ARMGenRegisterInfo.inc
-
-arm_disassembler_SRC_FILES := \
- ARMDisassembler.cpp
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMARMDisassembler
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(arm_disassembler_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(arm_disassembler_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMARMDisassembler
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
diff --git a/lib/Target/ARM/InstPrinter/Android.bp b/lib/Target/ARM/InstPrinter/Android.bp
new file mode 100644
index 000000000000..f148f4e49ead
--- /dev/null
+++ b/lib/Target/ARM/InstPrinter/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMARMAsmPrinter",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-arm-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/ARM/InstPrinter/Android.mk b/lib/Target/ARM/InstPrinter/Android.mk
deleted file mode 100644
index d8ef32ab4ed2..000000000000
--- a/lib/Target/ARM/InstPrinter/Android.mk
+++ /dev/null
@@ -1,55 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-arm_asm_printer_TBLGEN_TABLES := \
- ARMGenAsmWriter.inc \
- ARMGenRegisterInfo.inc \
- ARMGenSubtargetInfo.inc \
- ARMGenInstrInfo.inc
-
-arm_asm_printer_SRC_FILES := \
- ARMInstPrinter.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMARMAsmPrinter
-
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(arm_asm_printer_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(arm_asm_printer_SRC_FILES)
-
-LOCAL_C_INCLUDES+= \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMARMAsmPrinter
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
-
diff --git a/lib/Target/ARM/MCTargetDesc/Android.bp b/lib/Target/ARM/MCTargetDesc/Android.bp
new file mode 100644
index 000000000000..b28f9e263ec4
--- /dev/null
+++ b/lib/Target/ARM/MCTargetDesc/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMARMDesc",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-arm-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/ARM/MCTargetDesc/Android.mk b/lib/Target/ARM/MCTargetDesc/Android.mk
deleted file mode 100644
index dd5498dd3572..000000000000
--- a/lib/Target/ARM/MCTargetDesc/Android.mk
+++ /dev/null
@@ -1,65 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-arm_mc_desc_TBLGEN_TABLES := \
- ARMGenRegisterInfo.inc \
- ARMGenInstrInfo.inc \
- ARMGenMCCodeEmitter.inc \
- ARMGenSubtargetInfo.inc
-
-arm_mc_desc_SRC_FILES := \
- ARMAsmBackend.cpp \
- ARMELFObjectWriter.cpp \
- ARMELFStreamer.cpp \
- ARMMCAsmInfo.cpp \
- ARMMCCodeEmitter.cpp \
- ARMMCExpr.cpp \
- ARMMCTargetDesc.cpp \
- ARMMachObjectWriter.cpp \
- ARMMachORelocationInfo.cpp \
- ARMTargetStreamer.cpp \
- ARMUnwindOpAsm.cpp \
- ARMWinCOFFObjectWriter.cpp \
- ARMWinCOFFStreamer.cpp \
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-
-LOCAL_MODULE:= libLLVMARMDesc
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMARMDesc
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(arm_mc_desc_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(arm_mc_desc_TBLGEN_TABLES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/ARM/TargetInfo/Android.bp b/lib/Target/ARM/TargetInfo/Android.bp
new file mode 100644
index 000000000000..efa712e8de30
--- /dev/null
+++ b/lib/Target/ARM/TargetInfo/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMARMInfo",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-arm-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/ARM/TargetInfo/Android.mk b/lib/Target/ARM/TargetInfo/Android.mk
deleted file mode 100644
index 6f6420f7f0d9..000000000000
--- a/lib/Target/ARM/TargetInfo/Android.mk
+++ /dev/null
@@ -1,55 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-arm_target_info_TBLGEN_TABLES := \
- ARMGenSubtargetInfo.inc \
- ARMGenRegisterInfo.inc \
- ARMGenInstrInfo.inc
-
-arm_target_info_SRC_FILES := \
- ARMTargetInfo.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES)
-
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMARMInfo
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(arm_target_info_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(arm_target_info_SRC_FILES)
-
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMARMInfo
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/Android.bp b/lib/Target/Android.bp
new file mode 100644
index 000000000000..2357cb998809
--- /dev/null
+++ b/lib/Target/Android.bp
@@ -0,0 +1,10 @@
+cc_library_static {
+ name: "libLLVMTarget",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
+
+subdirs = ["*"]
diff --git a/lib/Target/Android.mk b/lib/Target/Android.mk
deleted file mode 100644
index 269e28aa493e..000000000000
--- a/lib/Target/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-target_SRC_FILES := \
- Target.cpp \
- TargetIntrinsicInfo.cpp \
- TargetLoweringObjectFile.cpp \
- TargetMachine.cpp \
- TargetMachineC.cpp \
- TargetRecip.cpp \
- TargetSubtargetInfo.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(target_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMTarget
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(target_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMTarget
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/Mips/Android.bp b/lib/Target/Mips/Android.bp
new file mode 100644
index 000000000000..9c087c37785c
--- /dev/null
+++ b/lib/Target/Mips/Android.bp
@@ -0,0 +1,47 @@
+cc_library_static {
+ name: "libLLVMMipsCodeGen",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-mips-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
+
+cc_defaults {
+ name: "llvm-mips-defaults",
+ generated_headers: ["llvm-gen-mips"],
+ static_libs: ["llvm-mips-headers"],
+}
+
+cc_library_static {
+ name: "llvm-mips-headers",
+ host_supported: true,
+ target: {
+ windows: {
+ enabled: true,
+ },
+ },
+ export_include_dirs: ["."],
+}
+
+llvm_tblgen {
+ name: "llvm-gen-mips",
+ in: "Mips.td",
+ outs: [
+ "MipsGenRegisterInfo.inc",
+ "MipsGenInstrInfo.inc",
+ "MipsGenCodeEmitter.inc",
+ "MipsGenMCCodeEmitter.inc",
+ "MipsGenMCPseudoLowering.inc",
+ "MipsGenAsmWriter.inc",
+ "MipsGenAsmMatcher.inc",
+ "MipsGenDAGISel.inc",
+ "MipsGenFastISel.inc",
+ "MipsGenCallingConv.inc",
+ "MipsGenSubtargetInfo.inc",
+ "MipsGenDisassemblerTables.inc",
+ ],
+}
+
+subdirs = ["*"]
diff --git a/lib/Target/Mips/Android.mk b/lib/Target/Mips/Android.mk
deleted file mode 100644
index 5783f36e1bc1..000000000000
--- a/lib/Target/Mips/Android.mk
+++ /dev/null
@@ -1,54 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-mips_codegen_TBLGEN_TABLES := \
- MipsGenRegisterInfo.inc \
- MipsGenInstrInfo.inc \
- MipsGenCodeEmitter.inc \
- MipsGenMCCodeEmitter.inc \
- MipsGenMCPseudoLowering.inc \
- MipsGenAsmWriter.inc \
- MipsGenDAGISel.inc \
- MipsGenFastISel.inc \
- MipsGenCallingConv.inc \
- MipsGenSubtargetInfo.inc
-
-mips_codegen_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsCodeGen
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
-
-TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsCodeGen
-
-LOCAL_SRC_FILES := $(mips_codegen_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/MCTargetDesc
-
-TBLGEN_TABLES := $(mips_codegen_TBLGEN_TABLES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/Mips/AsmParser/Android.bp b/lib/Target/Mips/AsmParser/Android.bp
new file mode 100644
index 000000000000..c2164f927e93
--- /dev/null
+++ b/lib/Target/Mips/AsmParser/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMMipsAsmParser",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-mips-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/Mips/AsmParser/Android.mk b/lib/Target/Mips/AsmParser/Android.mk
deleted file mode 100644
index 0443e0edffc5..000000000000
--- a/lib/Target/Mips/AsmParser/Android.mk
+++ /dev/null
@@ -1,57 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-#===---------------------------------------------------------------===
-# libLLVMMipsAsmParser (common)
-#===---------------------------------------------------------------===
-
-mips_asm_parser_SRC_FILES := \
- MipsAsmParser.cpp
-
-mips_asm_parser_C_INCLUDES := $(LOCAL_PATH)/..
-
-mips_asm_parser_TBLGEN_TABLES := \
- MipsGenAsmMatcher.inc \
- MipsGenInstrInfo.inc \
- MipsGenRegisterInfo.inc \
- MipsGenSubtargetInfo.inc
-
-mips_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-
-#===---------------------------------------------------------------===
-# libLLVMMipsAsmParser (host)
-#===---------------------------------------------------------------===
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsAsmParser
-LOCAL_MODULE_HOST_OS := darwin linux windows
-LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES)
-LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES)
-TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-
-#===---------------------------------------------------------------===
-# libLLVMMipsAsmParser (target)
-#===---------------------------------------------------------------===
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsAsmParser
-LOCAL_SRC_FILES := $(mips_asm_parser_SRC_FILES)
-LOCAL_C_INCLUDES += $(mips_asm_parser_C_INCLUDES)
-TBLGEN_TABLES := $(mips_asm_parser_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/Mips/Disassembler/Android.bp b/lib/Target/Mips/Disassembler/Android.bp
new file mode 100644
index 000000000000..08d4b3fcd70e
--- /dev/null
+++ b/lib/Target/Mips/Disassembler/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMMipsDisassembler",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-mips-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/Mips/Disassembler/Android.mk b/lib/Target/Mips/Disassembler/Android.mk
deleted file mode 100644
index 56a9151a891d..000000000000
--- a/lib/Target/Mips/Disassembler/Android.mk
+++ /dev/null
@@ -1,51 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-mips_disassembler_TBLGEN_TABLES := \
- MipsGenDisassemblerTables.inc \
- MipsGenInstrInfo.inc \
- MipsGenRegisterInfo.inc \
- MipsGenSubtargetInfo.inc
-
-mips_disassembler_SRC_FILES := \
- MipsDisassembler.cpp
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsDisassembler
-
-LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES)
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsDisassembler
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(mips_disassembler_SRC_FILES)
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-TBLGEN_TABLES := $(mips_disassembler_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/Mips/InstPrinter/Android.bp b/lib/Target/Mips/InstPrinter/Android.bp
new file mode 100644
index 000000000000..70c3648430d3
--- /dev/null
+++ b/lib/Target/Mips/InstPrinter/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMMipsAsmPrinter",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-mips-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/Mips/InstPrinter/Android.mk b/lib/Target/Mips/InstPrinter/Android.mk
deleted file mode 100644
index bec2e8119daf..000000000000
--- a/lib/Target/Mips/InstPrinter/Android.mk
+++ /dev/null
@@ -1,49 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-mips_asm_printer_TBLGEN_TABLES := \
- MipsGenAsmWriter.inc \
- MipsGenRegisterInfo.inc \
- MipsGenSubtargetInfo.inc \
- MipsGenInstrInfo.inc
-
-mips_asm_printer_SRC_FILES := \
- MipsInstPrinter.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsAsmPrinter
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES)
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsAsmPrinter
-
-TBLGEN_TABLES := $(mips_asm_printer_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(mips_asm_printer_SRC_FILES)
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/Mips/MCTargetDesc/Android.bp b/lib/Target/Mips/MCTargetDesc/Android.bp
new file mode 100644
index 000000000000..4d69f6324c5b
--- /dev/null
+++ b/lib/Target/Mips/MCTargetDesc/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMMipsDesc",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-mips-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/Mips/MCTargetDesc/Android.mk b/lib/Target/Mips/MCTargetDesc/Android.mk
deleted file mode 100644
index 8c37e5d3587d..000000000000
--- a/lib/Target/Mips/MCTargetDesc/Android.mk
+++ /dev/null
@@ -1,62 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-mips_mc_desc_TBLGEN_TABLES := \
- MipsGenRegisterInfo.inc \
- MipsGenInstrInfo.inc \
- MipsGenMCCodeEmitter.inc \
- MipsGenSubtargetInfo.inc
-
-mips_mc_desc_SRC_FILES := \
- MipsABIFlagsSection.cpp \
- MipsABIInfo.cpp \
- MipsAsmBackend.cpp \
- MipsELFObjectWriter.cpp \
- MipsELFStreamer.cpp \
- MipsMCAsmInfo.cpp \
- MipsMCCodeEmitter.cpp \
- MipsMCExpr.cpp \
- MipsMCTargetDesc.cpp \
- MipsOptionRecord.cpp \
- MipsNaClELFStreamer.cpp \
- MipsTargetStreamer.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsDesc
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsDesc
-
-LOCAL_SRC_FILES := $(mips_mc_desc_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(mips_mc_desc_TBLGEN_TABLES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/Mips/TargetInfo/Android.bp b/lib/Target/Mips/TargetInfo/Android.bp
new file mode 100644
index 000000000000..c623a1060109
--- /dev/null
+++ b/lib/Target/Mips/TargetInfo/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMMipsInfo",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-mips-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/Mips/TargetInfo/Android.mk b/lib/Target/Mips/TargetInfo/Android.mk
deleted file mode 100644
index e0409043c6cd..000000000000
--- a/lib/Target/Mips/TargetInfo/Android.mk
+++ /dev/null
@@ -1,48 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-mips_target_info_TBLGEN_TABLES := \
- MipsGenInstrInfo.inc \
- MipsGenRegisterInfo.inc \
- MipsGenSubtargetInfo.inc
-
-mips_target_info_SRC_FILES := \
- MipsTargetInfo.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsInfo
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES)
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMMipsInfo
-
-TBLGEN_TABLES := $(mips_target_info_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(mips_target_info_SRC_FILES)
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/X86/Android.bp b/lib/Target/X86/Android.bp
new file mode 100644
index 000000000000..177039adf5fd
--- /dev/null
+++ b/lib/Target/X86/Android.bp
@@ -0,0 +1,52 @@
+cc_library_static {
+ name: "libLLVMX86CodeGen",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-x86-defaults",
+ ],
+ srcs: ["*.cpp"],
+
+ // b/31559947, b/31938382 clang-tidy segmentation fault.
+ tidy_checks: [
+ "-clang-analyzer-*",
+ "-readability-*",
+ "-google-readability-*",
+ ],
+}
+
+cc_defaults {
+ name: "llvm-x86-defaults",
+ generated_headers: ["llvm-gen-x86"],
+ static_libs: ["llvm-x86-headers"],
+}
+
+cc_library_static {
+ name: "llvm-x86-headers",
+ host_supported: true,
+ target: {
+ windows: {
+ enabled: true,
+ },
+ },
+ export_include_dirs: ["."],
+}
+
+llvm_tblgen {
+ name: "llvm-gen-x86",
+ in: "X86.td",
+ outs: [
+ "X86GenAsmMatcher.inc",
+ "X86GenAsmWriter.inc",
+ "X86GenAsmWriter1.inc",
+ "X86GenDisassemblerTables.inc",
+ "X86GenRegisterInfo.inc",
+ "X86GenInstrInfo.inc",
+ "X86GenDAGISel.inc",
+ "X86GenFastISel.inc",
+ "X86GenSubtargetInfo.inc",
+ "X86GenCallingConv.inc",
+ ],
+}
+
+subdirs = ["*"]
diff --git a/lib/Target/X86/Android.mk b/lib/Target/X86/Android.mk
deleted file mode 100644
index 96a8d3d90cb0..000000000000
--- a/lib/Target/X86/Android.mk
+++ /dev/null
@@ -1,59 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-x86_codegen_TBLGEN_TABLES := \
- X86GenAsmMatcher.inc \
- X86GenAsmWriter.inc \
- X86GenAsmWriter1.inc \
- X86GenDisassemblerTables.inc \
- X86GenRegisterInfo.inc \
- X86GenInstrInfo.inc \
- X86GenDAGISel.inc \
- X86GenFastISel.inc \
- X86GenSubtargetInfo.inc \
- X86GenCallingConv.inc
-
-x86_codegen_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-# b/31559947, b/31938382 clang-tidy segmentation fault.
-LOCAL_TIDY_CHECKS := -clang-analyzer-*,-readability-*,-google-readability-*
-
-TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES)
-
-LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMX86CodeGen
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-# b/31559947, b/31938382 clang-tidy segmentation fault.
-LOCAL_TIDY_CHECKS := -clang-analyzer-*,-readability-*,-google-readability-*
-
-TBLGEN_TABLES := $(x86_codegen_TBLGEN_TABLES)
-
-LOCAL_SRC_FILES := $(x86_codegen_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMX86CodeGen
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/X86/AsmParser/Android.bp b/lib/Target/X86/AsmParser/Android.bp
new file mode 100644
index 000000000000..4823fa56f848
--- /dev/null
+++ b/lib/Target/X86/AsmParser/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMX86AsmParser",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-x86-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/X86/AsmParser/Android.mk b/lib/Target/X86/AsmParser/Android.mk
deleted file mode 100644
index e377b75a9220..000000000000
--- a/lib/Target/X86/AsmParser/Android.mk
+++ /dev/null
@@ -1,62 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-# For the device only
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-x86_asm_parser_SRC_FILES := \
- X86AsmInstrumentation.cpp \
- X86AsmParser.cpp
-
-x86_asm_parser_TBLGEN_TABLES := \
- X86GenAsmMatcher.inc \
- X86GenInstrInfo.inc \
- X86GenRegisterInfo.inc \
- X86GenSubtargetInfo.inc
-
-x86_asm_parser_TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-x86_asm_parser_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-
-#===---------------------------------------------------------------===
-# libX86AsmParser (host)
-#===---------------------------------------------------------------===
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMX86AsmParser
-LOCAL_MODULE_HOST_OS := darwin linux windows
-LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES)
-LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES)
-TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-
-#===---------------------------------------------------------------===
-# libX86AsmParser (target)
-#===---------------------------------------------------------------===
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMX86AsmParser
-LOCAL_SRC_FILES := $(x86_asm_parser_SRC_FILES)
-LOCAL_C_INCLUDES += $(x86_asm_parser_C_INCLUDES)
-TBLGEN_TABLES := $(x86_asm_parser_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(x86_asm_parser_TBLGEN_TD_DIR)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/X86/Disassembler/Android.bp b/lib/Target/X86/Disassembler/Android.bp
new file mode 100644
index 000000000000..4dd9660f8a01
--- /dev/null
+++ b/lib/Target/X86/Disassembler/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMX86Disassembler",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-x86-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/X86/Disassembler/Android.mk b/lib/Target/X86/Disassembler/Android.mk
deleted file mode 100644
index 7b4bbc8c55d0..000000000000
--- a/lib/Target/X86/Disassembler/Android.mk
+++ /dev/null
@@ -1,55 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-x86_disassembler_TBLGEN_TABLES := \
- X86GenDisassemblerTables.inc \
- X86GenInstrInfo.inc \
- X86GenRegisterInfo.inc \
- X86GenSubtargetInfo.inc
-
-x86_disassembler_SRC_FILES := \
- X86Disassembler.cpp \
- X86DisassemblerDecoder.cpp
-
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMX86Disassembler
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(x86_disassembler_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(x86_disassembler_SRC_FILES)
-
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMX86Disassembler
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/X86/InstPrinter/Android.bp b/lib/Target/X86/InstPrinter/Android.bp
new file mode 100644
index 000000000000..b07c58e9e0ab
--- /dev/null
+++ b/lib/Target/X86/InstPrinter/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMX86AsmPrinter",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-x86-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/X86/InstPrinter/Android.mk b/lib/Target/X86/InstPrinter/Android.mk
deleted file mode 100644
index 13288cf4f0e5..000000000000
--- a/lib/Target/X86/InstPrinter/Android.mk
+++ /dev/null
@@ -1,55 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-x86_instprinter_TBLGEN_TABLES := \
- X86GenAsmWriter.inc \
- X86GenAsmWriter1.inc \
- X86GenInstrInfo.inc \
- X86GenRegisterInfo.inc \
- X86GenSubtargetInfo.inc
-
-x86_instprinter_SRC_FILES := \
- X86ATTInstPrinter.cpp \
- X86IntelInstPrinter.cpp \
- X86InstComments.cpp
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMX86AsmPrinter
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(x86_instprinter_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(x86_instprinter_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE := libLLVMX86AsmPrinter
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Target/X86/MCTargetDesc/Android.bp b/lib/Target/X86/MCTargetDesc/Android.bp
new file mode 100644
index 000000000000..65d516e2ccbf
--- /dev/null
+++ b/lib/Target/X86/MCTargetDesc/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMX86Desc",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-x86-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/X86/MCTargetDesc/Android.mk b/lib/Target/X86/MCTargetDesc/Android.mk
deleted file mode 100644
index 705a30310466..000000000000
--- a/lib/Target/X86/MCTargetDesc/Android.mk
+++ /dev/null
@@ -1,46 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-x86_mc_desc_TBLGEN_TABLES := \
- X86GenRegisterInfo.inc \
- X86GenInstrInfo.inc \
- X86GenSubtargetInfo.inc
-
-x86_mc_desc_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-LOCAL_MODULE:= libLLVMX86Desc
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device only
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-
-LOCAL_MODULE:= libLLVMX86Desc
-
-LOCAL_SRC_FILES := $(x86_mc_desc_SRC_FILES)
-LOCAL_C_INCLUDES := $(LOCAL_PATH)/..
-TBLGEN_TABLES := $(x86_mc_desc_TBLGEN_TABLES)
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/X86/TargetInfo/Android.bp b/lib/Target/X86/TargetInfo/Android.bp
new file mode 100644
index 000000000000..83a963b13adc
--- /dev/null
+++ b/lib/Target/X86/TargetInfo/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMX86Info",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-x86-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/X86/TargetInfo/Android.mk b/lib/Target/X86/TargetInfo/Android.mk
deleted file mode 100644
index e3b6e2b055be..000000000000
--- a/lib/Target/X86/TargetInfo/Android.mk
+++ /dev/null
@@ -1,53 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-x86_target_info_TBLGEN_TABLES := \
- X86GenRegisterInfo.inc \
- X86GenSubtargetInfo.inc \
- X86GenInstrInfo.inc
-
-x86_target_info_SRC_FILES := \
- X86TargetInfo.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES)
-
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMX86Info
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-include $(CLEAR_TBLGEN_VARS)
-
-TBLGEN_TABLES := $(x86_target_info_TBLGEN_TABLES)
-
-TBLGEN_TD_DIR := $(LOCAL_PATH)/..
-
-LOCAL_SRC_FILES := $(x86_target_info_SRC_FILES)
-
-LOCAL_C_INCLUDES += \
- $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMX86Info
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_TBLGEN_RULES_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Target/X86/Utils/Android.bp b/lib/Target/X86/Utils/Android.bp
new file mode 100644
index 000000000000..e54f12c70d91
--- /dev/null
+++ b/lib/Target/X86/Utils/Android.bp
@@ -0,0 +1,9 @@
+cc_library_static {
+ name: "libLLVMX86Utils",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ "llvm-x86-defaults",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Target/X86/Utils/Android.mk b/lib/Target/X86/Utils/Android.mk
deleted file mode 100644
index ad16c16f2736..000000000000
--- a/lib/Target/X86/Utils/Android.mk
+++ /dev/null
@@ -1,34 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-
-x86_utils_SRC_FILES := \
- X86ShuffleDecode.cpp
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(x86_utils_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMX86Utils
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(x86_utils_SRC_FILES)
-
-LOCAL_C_INCLUDES += $(LOCAL_PATH)/..
-
-LOCAL_MODULE:= libLLVMX86Utils
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/Transforms/Android.bp b/lib/Transforms/Android.bp
new file mode 100644
index 000000000000..b44c2960127f
--- /dev/null
+++ b/lib/Transforms/Android.bp
@@ -0,0 +1 @@
+subdirs = ["*"]
diff --git a/lib/Transforms/Hello/Android.bp b/lib/Transforms/Hello/Android.bp
new file mode 100644
index 000000000000..868edb347828
--- /dev/null
+++ b/lib/Transforms/Hello/Android.bp
@@ -0,0 +1,14 @@
+cc_library_host_shared {
+ name: "LLVMHello",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+ allow_undefined_symbols: true,
+ target: {
+ windows: {
+ enabled: false,
+ },
+ },
+}
diff --git a/lib/Transforms/Hello/Android.mk b/lib/Transforms/Hello/Android.mk
deleted file mode 100644
index d5554ff0d3ba..000000000000
--- a/lib/Transforms/Hello/Android.mk
+++ /dev/null
@@ -1,21 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-LLVM_ROOT_PATH := $(LOCAL_PATH)/../../..
-include $(LLVM_ROOT_PATH)/llvm.mk
-
-transforms_hello_SRC_FILES := \
- Hello.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_hello_SRC_FILES)
-LOCAL_MODULE_CLASS := SHARED_LIBRARIES
-LOCAL_MODULE:= LLVMHello
-
-LOCAL_ALLOW_UNDEFINED_SYMBOLS := true
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(BUILD_HOST_SHARED_LIBRARY)
diff --git a/lib/Transforms/IPO/Android.bp b/lib/Transforms/IPO/Android.bp
new file mode 100644
index 000000000000..4189eed66397
--- /dev/null
+++ b/lib/Transforms/IPO/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMipo",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Transforms/IPO/Android.mk b/lib/Transforms/IPO/Android.mk
deleted file mode 100644
index fe66b2785043..000000000000
--- a/lib/Transforms/IPO/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-transforms_ipo_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES)
-LOCAL_MODULE:= libLLVMipo
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_ipo_SRC_FILES)
-LOCAL_MODULE:= libLLVMipo
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Transforms/InstCombine/Android.bp b/lib/Transforms/InstCombine/Android.bp
new file mode 100644
index 000000000000..02531cf4d231
--- /dev/null
+++ b/lib/Transforms/InstCombine/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMInstCombine",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Transforms/InstCombine/Android.mk b/lib/Transforms/InstCombine/Android.mk
deleted file mode 100644
index 2a9d82b19a72..000000000000
--- a/lib/Transforms/InstCombine/Android.mk
+++ /dev/null
@@ -1,44 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-transforms_inst_combine_SRC_FILES := \
- InstCombineAddSub.cpp \
- InstCombineAndOrXor.cpp \
- InstCombineCalls.cpp \
- InstCombineCasts.cpp \
- InstCombineCompares.cpp \
- InstCombineLoadStoreAlloca.cpp \
- InstCombineMulDivRem.cpp \
- InstCombinePHI.cpp \
- InstCombineSelect.cpp \
- InstCombineShifts.cpp \
- InstCombineSimplifyDemanded.cpp \
- InstCombineVectorOps.cpp \
- InstructionCombining.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES)
-LOCAL_MODULE:= libLLVMInstCombine
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_inst_combine_SRC_FILES)
-LOCAL_MODULE:= libLLVMInstCombine
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Transforms/Instrumentation/Android.bp b/lib/Transforms/Instrumentation/Android.bp
new file mode 100644
index 000000000000..693937ca1c7f
--- /dev/null
+++ b/lib/Transforms/Instrumentation/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMInstrumentation",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Transforms/Instrumentation/Android.mk b/lib/Transforms/Instrumentation/Android.mk
deleted file mode 100644
index e9bc26c57be8..000000000000
--- a/lib/Transforms/Instrumentation/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-instrumentation_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMInstrumentation
-LOCAL_MODULE_HOST_OS := darwin linux windows
-LOCAL_SRC_FILES := $(instrumentation_SRC_FILES)
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the target
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVMInstrumentation
-LOCAL_SRC_FILES := $(instrumentation_SRC_FILES)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Transforms/ObjCARC/Android.bp b/lib/Transforms/ObjCARC/Android.bp
new file mode 100644
index 000000000000..a37b0483ef99
--- /dev/null
+++ b/lib/Transforms/ObjCARC/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMTransformObjCARC",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Transforms/ObjCARC/Android.mk b/lib/Transforms/ObjCARC/Android.mk
deleted file mode 100644
index 88a35d47366a..000000000000
--- a/lib/Transforms/ObjCARC/Android.mk
+++ /dev/null
@@ -1,40 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-transforms_objcarc_SRC_FILES := \
- DependencyAnalysis.cpp \
- ObjCARCAPElim.cpp \
- ObjCARCContract.cpp \
- ObjCARC.cpp \
- ObjCARCExpand.cpp \
- ObjCARCOpts.cpp \
- PtrState.cpp \
- ProvenanceAnalysis.cpp \
- ProvenanceAnalysisEvaluator.cpp
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES)
-LOCAL_MODULE:= libLLVMTransformObjCARC
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_objcarc_SRC_FILES)
-LOCAL_MODULE:= libLLVMTransformObjCARC
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Transforms/Scalar/Android.bp b/lib/Transforms/Scalar/Android.bp
new file mode 100644
index 000000000000..b479f61615bf
--- /dev/null
+++ b/lib/Transforms/Scalar/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMScalarOpts",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Transforms/Scalar/Android.mk b/lib/Transforms/Scalar/Android.mk
deleted file mode 100644
index eae9bab119d9..000000000000
--- a/lib/Transforms/Scalar/Android.mk
+++ /dev/null
@@ -1,32 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-transforms_scalar_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_scalar_SRC_FILES)
-
-LOCAL_MODULE:= libLLVMScalarOpts
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_scalar_SRC_FILES)
-LOCAL_MODULE:= libLLVMScalarOpts
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Transforms/Utils/Android.bp b/lib/Transforms/Utils/Android.bp
new file mode 100644
index 000000000000..e1f228bf9659
--- /dev/null
+++ b/lib/Transforms/Utils/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMTransformUtils",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Transforms/Utils/Android.mk b/lib/Transforms/Utils/Android.mk
deleted file mode 100644
index 8a1d1537c230..000000000000
--- a/lib/Transforms/Utils/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-transforms_utils_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES)
-LOCAL_MODULE:= libLLVMTransformUtils
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_utils_SRC_FILES)
-LOCAL_MODULE:= libLLVMTransformUtils
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/lib/Transforms/Vectorize/Android.bp b/lib/Transforms/Vectorize/Android.bp
new file mode 100644
index 000000000000..63948269a9e7
--- /dev/null
+++ b/lib/Transforms/Vectorize/Android.bp
@@ -0,0 +1,8 @@
+cc_library_static {
+ name: "libLLVMVectorize",
+ defaults: [
+ "llvm-defaults",
+ "llvm-generated-headers",
+ ],
+ srcs: ["*.cpp"],
+}
diff --git a/lib/Transforms/Vectorize/Android.mk b/lib/Transforms/Vectorize/Android.mk
deleted file mode 100644
index a74a3f54a8f3..000000000000
--- a/lib/Transforms/Vectorize/Android.mk
+++ /dev/null
@@ -1,31 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-transforms_vectorize_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-# For the host
-# =====================================================
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES)
-LOCAL_MODULE:= libLLVMVectorize
-
-LOCAL_MODULE_HOST_OS := darwin linux windows
-
-include $(LLVM_HOST_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_HOST_STATIC_LIBRARY)
-
-# For the device
-# =====================================================
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(transforms_vectorize_SRC_FILES)
-LOCAL_MODULE:= libLLVMVectorize
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(LLVM_GEN_ATTRIBUTES_MK)
-include $(LLVM_GEN_INTRINSICS_MK)
-include $(BUILD_STATIC_LIBRARY)
-endif
diff --git a/llvm-tblgen-rules.mk b/llvm-tblgen-rules.mk
deleted file mode 100644
index 0bc6ce2b4df1..000000000000
--- a/llvm-tblgen-rules.mk
+++ /dev/null
@@ -1,191 +0,0 @@
-###########################################################
-## Commands for running tblgen to compile a td file
-##########################################################
-define transform-td-to-out
-$(if $(LOCAL_IS_HOST_MODULE), \
- $(call transform-host-td-to-out,$(1)), \
- $(call transform-device-td-to-out,$(1)))
-endef
-
-# $(1): an output file
-# $(2): an input .td file
-# $(3): a parameter passed to transform-td-to-out
-# You must call this with $(eval).
-define define-tblgen-rule
-$(1): TBLGEN_LOCAL_MODULE := $(LOCAL_MODULE)
-$(1): $(2) $(LLVM_TBLGEN)
- $$(call transform-td-to-out,$(3))
-$$(call include-depfile, $(1).d, $(1))
-endef
-
-###########################################################
-## TableGen: Compile .td files to .inc.
-###########################################################
-
-# Set LOCAL_MODULE_CLASS to STATIC_LIBRARIES default (require
-# for macro local-generated-sources-dir)
-ifeq ($(LOCAL_MODULE_CLASS),)
- LOCAL_MODULE_CLASS := STATIC_LIBRARIES
-endif
-
-ifneq ($(strip $(TBLGEN_TABLES)),)
-
-generated_sources := $(call local-generated-sources-dir)
-tblgen_gen_tables := $(addprefix $(generated_sources)/,$(TBLGEN_TABLES))
-LOCAL_GENERATED_SOURCES += $(tblgen_gen_tables)
-
-tblgen_source_dir := $(LOCAL_PATH)
-ifneq ($(TBLGEN_TD_DIR),)
-tblgen_source_dir := $(TBLGEN_TD_DIR)
-endif
-
-#
-# The directory and the .td directory is not the same.
-#
-ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/ARM/MCTargetDesc)
-$(eval $(call define-tblgen-rule, $(generated_sources)/ARMGenRegisterInfo.inc, \
- $(tblgen_source_dir)/../ARM.td,register-info))
-$(eval $(call define-tblgen-rule, $(generated_sources)/ARMGenInstrInfo.inc, \
- $(tblgen_source_dir)/../ARM.td,instr-info))
-$(eval $(call define-tblgen-rule, $(generated_sources)/ARMGenSubtargetInfo.inc, \
- $(tblgen_source_dir)/../ARM.td,subtarget))
-endif
-
-ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/X86/MCTargetDesc)
-$(eval $(call define-tblgen-rule, $(generated_sources)/X86GenRegisterInfo.inc, \
- $(tblgen_source_dir)/../X86.td,register-info))
-$(eval $(call define-tblgen-rule, $(generated_sources)/X86GenInstrInfo.inc, \
- $(tblgen_source_dir)/../X86.td,instr-info))
-$(eval $(call define-tblgen-rule, $(generated_sources)/X86GenSubtargetInfo.inc, \
- $(tblgen_source_dir)/../X86.td,subtarget))
-endif
-
-ifeq ($(tblgen_source_dir),$(LLVM_ROOT_PATH)/lib/Target/Mips/MCTargetDesc)
-$(eval $(call define-tblgen-rule, $(generated_sources)/MipsGenRegisterInfo.inc, \
- $(tblgen_source_dir)/../Mips.td,register-info))
-$(eval $(call define-tblgen-rule, $(generated_sources)/MipsGenInstrInfo.inc, \
- $(tblgen_source_dir)/../Mips.td,instr-info))
-$(eval $(call define-tblgen-rule, $(generated_sources)/MipsGenSubtargetInfo.inc, \
- $(tblgen_source_dir)/../Mips.td,subtarget))
-endif
-
-
-genfile := $(filter $(generated_sources)/%GenRegisterInfo.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenRegisterInfo.inc=$(tblgen_source_dir)/%.td),register-info))
-endif
-
-genfile := $(filter $(generated_sources)/%GenInstrInfo.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenInstrInfo.inc=$(tblgen_source_dir)/%.td),instr-info))
-endif
-
-genfile := $(filter $(generated_sources)/%GenAsmWriter.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenAsmWriter.inc=$(tblgen_source_dir)/%.td),asm-writer))
-endif
-
-genfile := $(filter $(generated_sources)/%GenAsmWriter1.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenAsmWriter1.inc=$(tblgen_source_dir)/%.td),asm-writer -asmwriternum=1))
-endif
-
-genfile := $(filter $(generated_sources)/%GenAsmMatcher.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenAsmMatcher.inc=$(tblgen_source_dir)/%.td),asm-matcher))
-endif
-
-# TODO(srhines): Is this needed
-genfile := $(filter $(generated_sources)/%GenCodeEmitter.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenCodeEmitter.inc=$(tblgen_source_dir)/%.td),emitter))
-endif
-
-genfile := $(filter $(generated_sources)/%GenMCCodeEmitter.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenMCCodeEmitter.inc=$(tblgen_source_dir)/%.td),emitter))
-endif
-
-genfile := $(filter $(generated_sources)/%GenMCPseudoLowering.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenMCPseudoLowering.inc=$(tblgen_source_dir)/%.td),pseudo-lowering))
-endif
-
-genfile := $(filter $(generated_sources)/%GenDAGISel.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenDAGISel.inc=$(tblgen_source_dir)/%.td),dag-isel))
-endif
-
-genfile := $(filter $(generated_sources)/%GenDisassemblerTables.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenDisassemblerTables.inc=$(tblgen_source_dir)/%.td),disassembler))
-endif
-
-genfile := $(filter $(generated_sources)/%GenSystemOperands.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenSystemOperands.inc=$(tblgen_source_dir)/%.td),searchable-tables))
-endif
-
-genfile := $(filter $(generated_sources)/%GenEDInfo.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenEDInfo.inc=$(tblgen_source_dir)/%.td),enhanced-disassembly-info))
-endif
-
-genfile := $(filter $(generated_sources)/%GenFastISel.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenFastISel.inc=$(tblgen_source_dir)/%.td),fast-isel))
-endif
-
-genfile := $(filter $(generated_sources)/%GenSubtargetInfo.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenSubtargetInfo.inc=$(tblgen_source_dir)/%.td),subtarget))
-endif
-
-genfile := $(filter $(generated_sources)/%GenCallingConv.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenCallingConv.inc=$(tblgen_source_dir)/%.td),callingconv))
-endif
-
-genfile := $(filter $(generated_sources)/%GenIntrinsics.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/%GenIntrinsics.inc=$(tblgen_source_dir)/%.td),tgt_intrinsics))
-endif
-
-genfile := $(filter $(generated_sources)/ARMGenDecoderTables.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/ARMGenDecoderTables.inc=$(tblgen_source_dir)/ARM.td),arm-decoder))
-endif
-
-genfile := $(filter $(generated_sources)/Options.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/Options.inc=$(tblgen_source_dir)/Options.td),opt-parser-defs))
-endif
-
-genfile := $(filter $(generated_sources)/AttributesCompatFunc.inc,$(tblgen_gen_tables))
-ifneq ($(genfile),)
-$(eval $(call define-tblgen-rule, $(genfile), \
- $(genfile:$(generated_sources)/AttributesCompatFunc.inc=$(tblgen_source_dir)/AttributesCompatFunc.td),attrs))
-endif
-
-# Reset local variables
-genfile :=
-
-endif
diff --git a/llvm.mk b/llvm.mk
index 53544f405ad5..59e1e20a1cb2 100644
--- a/llvm.mk
+++ b/llvm.mk
@@ -5,6 +5,5 @@ LLVM_HOST_BUILD_MK := $(LLVM_ROOT_PATH)/llvm-host-build.mk
LLVM_DEVICE_BUILD_MK := $(LLVM_ROOT_PATH)/llvm-device-build.mk
LLVM_GEN_ATTRIBUTES_MK := $(LLVM_ROOT_PATH)/llvm-gen-attributes.mk
LLVM_GEN_INTRINSICS_MK := $(LLVM_ROOT_PATH)/llvm-gen-intrinsics.mk
-LLVM_TBLGEN_RULES_MK := $(LLVM_ROOT_PATH)/llvm-tblgen-rules.mk
LLVM_SUPPORTED_ARCH := arm arm64 mips mips64 x86 x86_64
diff --git a/shared_llvm.mk b/shared_llvm.mk
deleted file mode 100644
index 6cadd67923e3..000000000000
--- a/shared_llvm.mk
+++ /dev/null
@@ -1,149 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-
-llvm_pre_static_libraries := \
- libLLVMLinker \
- libLLVMipo \
- libLLVMDebugInfoDWARF \
- libLLVMDebugInfoPDB \
- libLLVMSymbolize \
- libLLVMIRReader \
- libLLVMBitWriter \
- libLLVMBitReader
-
-llvm_arm_static_libraries := \
- libLLVMARMCodeGen \
- libLLVMARMAsmParser \
- libLLVMARMAsmPrinter \
- libLLVMARMInfo \
- libLLVMARMDesc \
- libLLVMARMDisassembler
-
-llvm_x86_static_libraries := \
- libLLVMX86CodeGen \
- libLLVMX86Info \
- libLLVMX86Desc \
- libLLVMX86AsmParser \
- libLLVMX86AsmPrinter \
- libLLVMX86Utils \
- libLLVMX86Disassembler
-
-llvm_mips_static_libraries := \
- libLLVMMipsCodeGen \
- libLLVMMipsInfo \
- libLLVMMipsDesc \
- libLLVMMipsAsmParser \
- libLLVMMipsAsmPrinter \
- libLLVMMipsDisassembler
-
-llvm_aarch64_static_libraries := \
- libLLVMAArch64CodeGen \
- libLLVMAArch64Info \
- libLLVMAArch64Desc \
- libLLVMAArch64AsmParser \
- libLLVMAArch64AsmPrinter \
- libLLVMAArch64Utils \
- libLLVMAArch64Disassembler
-
-llvm_post_static_libraries := \
- libLLVMLTO \
- libLLVMAsmPrinter \
- libLLVMSelectionDAG \
- libLLVMCodeGen \
- libLLVMDebugInfoCodeView \
- libLLVMObject \
- libLLVMScalarOpts \
- libLLVMInstCombine \
- libLLVMInstrumentation \
- libLLVMTransformObjCARC \
- libLLVMTransformUtils \
- libLLVMAnalysis \
- libLLVMTarget \
- libLLVMGlobalISel \
- libLLVMMCDisassembler \
- libLLVMMC \
- libLLVMMCParser \
- libLLVMCore \
- libLLVMAsmParser \
- libLLVMOption \
- libLLVMSupport \
- libLLVMVectorize \
- libLLVMProfileData \
- libLLVMProfileDataCoverage \
- libLLVMLibDriver
-
-llvm_host_static_libraries := \
- libLLVMExecutionEngine \
- libLLVMRuntimeDyld \
- libLLVMMCJIT \
- libLLVMOrcJIT
-
-# HOST LLVM shared library build
-include $(CLEAR_VARS)
-LOCAL_IS_HOST_MODULE := true
-
-LOCAL_MODULE:= libLLVM
-
-LOCAL_MODULE_TAGS := optional
-
-# Host build pulls in all ARM, Mips, X86 components.
-LOCAL_WHOLE_STATIC_LIBRARIES := \
- $(llvm_pre_static_libraries) \
- $(llvm_arm_static_libraries) \
- $(llvm_x86_static_libraries) \
- $(llvm_mips_static_libraries) \
- $(llvm_aarch64_static_libraries) \
- $(llvm_host_static_libraries) \
- $(llvm_post_static_libraries)
-
-LOCAL_LDLIBS_windows := -limagehlp -lpsapi -lole32 -lversion
-LOCAL_LDLIBS_darwin := -ldl -lpthread
-LOCAL_LDLIBS_linux := -ldl -lpthread
-
-# Use prebuilts for linux and darwin unless
-# FORCE_BUILD_LLVM_COMPONENTS is true
-ifneq (true,$(FORCE_BUILD_LLVM_COMPONENTS))
-LOCAL_MODULE_HOST_OS := windows
-else
-LOCAL_MODULE_HOST_OS := darwin linux windows
-endif
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_SHARED_LIBRARY)
-
-ifeq (,$(filter $(TARGET_ARCH),$(LLVM_SUPPORTED_ARCH)))
-$(warning TODO $(TARGET_ARCH): Enable llvm build)
-endif
-
-ifneq (true,$(DISABLE_LLVM_DEVICE_BUILDS))
-# DEVICE LLVM shared library build
-include $(CLEAR_VARS)
-
-LOCAL_MODULE:= libLLVM
-
-LOCAL_MODULE_TAGS := optional
-
-# Device build selectively pulls in ARM, Mips, X86 components.
-LOCAL_WHOLE_STATIC_LIBRARIES := \
- $(llvm_pre_static_libraries)
-
-LOCAL_WHOLE_STATIC_LIBRARIES_arm += $(llvm_arm_static_libraries)
-LOCAL_WHOLE_STATIC_LIBRARIES_x86 += $(llvm_x86_static_libraries)
-LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 += $(llvm_x86_static_libraries)
-LOCAL_WHOLE_STATIC_LIBRARIES_mips += $(llvm_mips_static_libraries)
-LOCAL_WHOLE_STATIC_LIBRARIES_mips64 += $(llvm_mips_static_libraries)
-LOCAL_WHOLE_STATIC_LIBRARIES_arm64 += $(llvm_aarch64_static_libraries)
-LOCAL_WHOLE_STATIC_LIBRARIES_arm64 += $(llvm_arm_static_libraries)
-
-ifeq ($(BUILD_ARM_FOR_X86),true)
-LOCAL_WHOLE_STATIC_LIBRARIES_x86 += $(llvm_arm_static_libraries)
-LOCAL_WHOLE_STATIC_LIBRARIES_x86 += $(llvm_aarch64_static_libraries)
-LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 += $(llvm_arm_static_libraries)
-LOCAL_WHOLE_STATIC_LIBRARIES_x86_64 += $(llvm_aarch64_static_libraries)
-endif
-
-LOCAL_WHOLE_STATIC_LIBRARIES += $(llvm_post_static_libraries)
-
-include $(LLVM_DEVICE_BUILD_MK)
-include $(BUILD_SHARED_LIBRARY)
-
-endif
diff --git a/soong/Android.bp b/soong/Android.bp
new file mode 100644
index 000000000000..fe886dcfe8bb
--- /dev/null
+++ b/soong/Android.bp
@@ -0,0 +1,17 @@
+bootstrap_go_package {
+ name: "soong-llvm",
+ pkgPath: "android/soong/external/llvm",
+ deps: [
+ "blueprint",
+ "blueprint-pathtools",
+ "soong",
+ "soong-android",
+ "soong-cc",
+ "soong-genrule",
+ ],
+ srcs: [
+ "llvm.go",
+ "tblgen.go",
+ ],
+ pluginFor: ["soong_build"],
+}
diff --git a/soong/llvm.go b/soong/llvm.go
new file mode 100644
index 000000000000..900d1619972b
--- /dev/null
+++ b/soong/llvm.go
@@ -0,0 +1,116 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package llvm
+
+import (
+ "android/soong/android"
+ "android/soong/cc"
+
+ "github.com/google/blueprint"
+ "github.com/google/blueprint/proptools"
+)
+
+func globalFlags(ctx android.BaseContext) []string {
+ var cflags []string
+
+ if ctx.AConfig().IsEnvTrue("FORCE_BUILD_LLVM_DISABLE_NDEBUG") {
+ cflags = append(cflags, "-D_DEBUG", "-UNDEBUG")
+ }
+
+ return cflags
+}
+
+func deviceFlags(ctx android.BaseContext) []string {
+ var cflags []string
+
+ return cflags
+}
+
+func hostFlags(ctx android.BaseContext) []string {
+ var cflags []string
+
+ if ctx.AConfig().IsEnvTrue("FORCE_BUILD_LLVM_DEBUG") {
+ cflags = append(cflags, "-O0", "-g")
+ }
+
+ return cflags
+}
+
+func llvmDefaults(ctx android.LoadHookContext) {
+ type props struct {
+ Target struct {
+ Android struct {
+ Cflags []string
+ Enabled *bool
+ }
+ Host struct {
+ Enabled *bool
+ }
+ Linux struct {
+ Cflags []string
+ }
+ Darwin struct {
+ Cflags []string
+ }
+ }
+ Cflags []string
+ }
+
+ p := &props{}
+ p.Cflags = globalFlags(ctx)
+ p.Target.Android.Cflags = deviceFlags(ctx)
+ h := hostFlags(ctx)
+ p.Target.Linux.Cflags = h
+ p.Target.Darwin.Cflags = h
+
+ if ctx.AConfig().IsEnvTrue("DISABLE_LLVM_DEVICE_BUILDS") {
+ p.Target.Android.Enabled = proptools.BoolPtr(false)
+ }
+
+ ctx.AppendProperties(p)
+}
+
+func llvmLibrary(ctx android.LoadHookContext) {
+ if !ctx.AConfig().IsEnvTrue("FORCE_BUILD_LLVM_COMPONENTS") {
+ type props struct {
+ Target struct {
+ Host struct {
+ Enabled *bool
+ }
+ }
+ }
+ p := &props{}
+ p.Target.Host.Enabled = proptools.BoolPtr(false)
+ ctx.AppendProperties(p)
+ }
+}
+
+func init() {
+ android.RegisterModuleType("llvm_defaults", llvmDefaultsFactory)
+ android.RegisterModuleType("llvm_cc_shared_library", llvmSharedLibraryFactory)
+}
+
+func llvmDefaultsFactory() (blueprint.Module, []interface{}) {
+ module, props := cc.DefaultsFactory()
+ android.AddLoadHook(module, llvmDefaults)
+
+ return module, props
+}
+
+func llvmSharedLibraryFactory() (blueprint.Module, []interface{}) {
+ module, _ := cc.NewLibrary(android.HostAndDeviceSupported, true, false)
+ android.AddLoadHook(module, llvmLibrary)
+ return module.Init()
+}
diff --git a/soong/tblgen.go b/soong/tblgen.go
new file mode 100644
index 000000000000..5f78cb520938
--- /dev/null
+++ b/soong/tblgen.go
@@ -0,0 +1,153 @@
+// Copyright (C) 2016 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+
+package llvm
+
+import (
+ "path/filepath"
+ "strings"
+
+ "android/soong/android"
+ "android/soong/genrule"
+
+ "github.com/google/blueprint"
+)
+
+func init() {
+ android.RegisterModuleType("llvm_tblgen", llvmTblgenFactory)
+}
+
+var (
+ pctx = android.NewPackageContext("android/soong/llvm")
+
+ llvmTblgen = pctx.HostBinToolVariable("llvmTblgen", "llvm-tblgen")
+
+ tblgenRule = pctx.StaticRule("tblgenRule", blueprint.RuleParams{
+ Depfile: "${out}.d",
+ Deps: blueprint.DepsGCC,
+ Command: "${llvmTblgen} ${includes} ${generator} -d ${depfile} -o ${out} ${in}",
+ CommandDeps: []string{"${llvmTblgen}"},
+ Description: "LLVM TableGen $in => $out",
+ }, "includes", "depfile", "generator")
+)
+
+type tblgenProperties struct {
+ In string
+ Outs []string
+}
+
+type tblgen struct {
+ android.ModuleBase
+
+ properties tblgenProperties
+
+ exportedHeaderDirs android.Paths
+ generatedHeaders android.Paths
+}
+
+var _ genrule.SourceFileGenerator = (*tblgen)(nil)
+
+func (t *tblgen) GenerateAndroidBuildActions(ctx android.ModuleContext) {
+ in := android.PathForModuleSrc(ctx, t.properties.In)
+
+ includes := []string{
+ "-I " + ctx.ModuleDir(),
+ "-I external/llvm/include",
+ "-I external/llvm/lib/Target",
+ }
+
+ for _, o := range t.properties.Outs {
+ out := android.PathForModuleGen(ctx, o)
+ generator := outToGenerator(ctx, o)
+
+ ctx.ModuleBuild(pctx, android.ModuleBuildParams{
+ Rule: tblgenRule,
+ Input: in,
+ Output: out,
+ Args: map[string]string{
+ "includes": strings.Join(includes, " "),
+ "generator": generator,
+ },
+ })
+ t.generatedHeaders = append(t.generatedHeaders, out)
+ }
+
+ t.exportedHeaderDirs = append(t.exportedHeaderDirs, android.PathForModuleGen(ctx, ""))
+}
+
+func outToGenerator(ctx android.ModuleContext, out string) string {
+ out = filepath.Base(out)
+ switch {
+ case strings.HasSuffix(out, "GenRegisterInfo.inc"):
+ return "-gen-register-info"
+ case strings.HasSuffix(out, "GenInstrInfo.inc"):
+ return "-gen-instr-info"
+ case strings.HasSuffix(out, "GenAsmWriter.inc"):
+ return "-gen-asm-writer"
+ case strings.HasSuffix(out, "GenAsmWriter1.inc"):
+ return "-gen-asm-writer -asmwriternum=1"
+ case strings.HasSuffix(out, "GenAsmMatcher.inc"):
+ return "-gen-asm-matcher"
+ case strings.HasSuffix(out, "GenCodeEmitter.inc"):
+ return "-gen-emitter"
+ case strings.HasSuffix(out, "GenMCCodeEmitter.inc"):
+ return "-gen-emitter"
+ case strings.HasSuffix(out, "GenMCPseudoLowering.inc"):
+ return "-gen-pseudo-lowering"
+ case strings.HasSuffix(out, "GenDAGISel.inc"):
+ return "-gen-dag-isel"
+ case strings.HasSuffix(out, "GenDisassemblerTables.inc"):
+ return "-gen-disassembler"
+ case strings.HasSuffix(out, "GenSystemOperands.inc"):
+ return "-gen-searchable-tables"
+ case strings.HasSuffix(out, "GenEDInfo.inc"):
+ return "-gen-enhanced-disassembly-info"
+ case strings.HasSuffix(out, "GenFastISel.inc"):
+ return "-gen-fast-isel"
+ case strings.HasSuffix(out, "GenSubtargetInfo.inc"):
+ return "-gen-subtarget"
+ case strings.HasSuffix(out, "GenCallingConv.inc"):
+ return "-gen-callingconv"
+ case strings.HasSuffix(out, "GenIntrinsics.inc"):
+ return "-gen-intrinsics"
+ case strings.HasSuffix(out, "GenDecoderTables.inc"):
+ return "-gen-arm-decoder"
+ case out == "Options.inc":
+ return "-gen-opt-parser-defs"
+ case out == "Attributes.inc", out == "AttributesCompatFunc.inc":
+ return "-gen-attrs"
+ case out == "Intrinsics.gen":
+ return "-gen-intrinsic"
+ }
+
+ ctx.ModuleErrorf("couldn't map output file %q to a generator", out)
+ return ""
+}
+
+func (t *tblgen) DepsMutator(ctx android.BottomUpMutatorContext) {
+}
+
+func (t *tblgen) GeneratedHeaderDirs() android.Paths {
+ return t.exportedHeaderDirs
+}
+
+func (t *tblgen) GeneratedSourceFiles() android.Paths {
+ return t.generatedHeaders
+}
+
+func llvmTblgenFactory() (blueprint.Module, []interface{}) {
+ t := &tblgen{}
+
+ return android.InitAndroidModule(t, &t.properties)
+}
diff --git a/utils/TableGen/Android.bp b/utils/TableGen/Android.bp
new file mode 100644
index 000000000000..3f8d7c46f00a
--- /dev/null
+++ b/utils/TableGen/Android.bp
@@ -0,0 +1,34 @@
+cc_binary_host {
+ name: "llvm-tblgen",
+ defaults: ["llvm-defaults"],
+ srcs: ["*.cpp"],
+
+ static_libs: [
+ "libLLVMTableGen",
+ "libLLVMSupport",
+ ],
+
+ host_ldlibs: ["-lm"],
+ target: {
+ windows: {
+ enabled: false,
+ },
+ // llvm-defaults turns off host builds by default, turn it back on for
+ // modules that are used to build llvm-tblgen
+ host: {
+ enabled: true,
+ },
+ darwin: {
+ host_ldlibs: [
+ "-lpthread",
+ "-ldl",
+ ],
+ },
+ linux: {
+ host_ldlibs: [
+ "-lpthread",
+ "-ldl",
+ ],
+ },
+ },
+}
diff --git a/utils/TableGen/Android.mk b/utils/TableGen/Android.mk
deleted file mode 100644
index 782a28a38eec..000000000000
--- a/utils/TableGen/Android.mk
+++ /dev/null
@@ -1,27 +0,0 @@
-LOCAL_PATH := $(call my-dir)
-LLVM_ROOT_PATH := $(LOCAL_PATH)/../..
-include $(LLVM_ROOT_PATH)/llvm.mk
-
-tablegen_SRC_FILES := $(sort $(notdir $(wildcard $(LOCAL_PATH)/*.cpp)))
-
-include $(CLEAR_VARS)
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.mk
-
-LOCAL_MODULE := llvm-tblgen
-LOCAL_MODULE_TAGS := optional
-LOCAL_SRC_FILES := $(tablegen_SRC_FILES)
-
-REQUIRES_EH := 1
-REQUIRES_RTTI := 1
-
-LOCAL_STATIC_LIBRARIES := \
- libLLVMTableGen \
- libLLVMSupport
-
-LOCAL_LDLIBS += -lm
-LOCAL_LDLIBS_windows := -limagehlp -lpsapi -lversion
-LOCAL_LDLIBS_darwin := -lpthread -ldl
-LOCAL_LDLIBS_linux := -lpthread -ldl
-
-include $(LLVM_HOST_BUILD_MK)
-include $(BUILD_HOST_EXECUTABLE)