Enhance target architecture selection rules.

Change-Id: I595f8b6d9acd36bffc0017f06a959e709b9707d5
diff --git a/lib/CodeGen/Android.mk b/lib/CodeGen/Android.mk
index 60fc6ca..1e293b2 100644
--- a/lib/CodeGen/Android.mk
+++ b/lib/CodeGen/Android.mk
@@ -43,6 +43,7 @@
 LOCAL_SRC_FILES := $(libbcc_codegen_SRC_FILES)
 
 include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
+include $(LIBBCC_ROOT_PATH)/libbcc-build-rules.mk
 include $(LLVM_ROOT_PATH)/llvm-device-build.mk
 include $(BUILD_STATIC_LIBRARY)
 
@@ -64,6 +65,7 @@
 LOCAL_SRC_FILES := $(libbcc_codegen_SRC_FILES)
 
 include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
+include $(LIBBCC_ROOT_PATH)/libbcc-build-rules.mk
 include $(LLVM_ROOT_PATH)/llvm-host-build.mk
 include $(BUILD_HOST_STATIC_LIBRARY)
 
diff --git a/lib/Disassembler/Android.mk b/lib/Disassembler/Android.mk
index 701f606..1b5ff4d 100644
--- a/lib/Disassembler/Android.mk
+++ b/lib/Disassembler/Android.mk
@@ -42,6 +42,7 @@
 LOCAL_SRC_FILES := $(libbcc_disassembler_SRC_FILES)
 
 include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
+include $(LIBBCC_ROOT_PATH)/libbcc-build-rules.mk
 include $(LLVM_ROOT_PATH)/llvm-device-build.mk
 include $(BUILD_STATIC_LIBRARY)
 
@@ -63,6 +64,7 @@
 LOCAL_SRC_FILES := $(libbcc_disassembler_SRC_FILES)
 
 include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
+include $(LIBBCC_ROOT_PATH)/libbcc-build-rules.mk
 include $(LLVM_ROOT_PATH)/llvm-host-build.mk
 include $(BUILD_HOST_STATIC_LIBRARY)
 
diff --git a/lib/Disassembler/Disassembler.cpp b/lib/Disassembler/Disassembler.cpp
index 8a2cf2c..d0e6000 100644
--- a/lib/Disassembler/Disassembler.cpp
+++ b/lib/Disassembler/Disassembler.cpp
@@ -67,12 +67,11 @@
 namespace bcc {
 
 void InitializeDisassembler() {
-#if defined(DEFAULT_ARM_CODEGEN) || defined(PROVIDE_ARM_CODEGEN)
+#if defined(PROVIDE_ARM_CODEGEN)
   LLVMInitializeARMDisassembler();
 #endif
 
-#if defined(DEFAULT_X86_CODEGEN) || defined(PROVIDE_X86_CODEGEN) || \
-    defined(DEFAULT_X64_CODEGEN) || defined(PROVIDE_X64_CODEGEN)
+#if defined(PROVIDE_X86_CODEGEN)
   LLVMInitializeX86Disassembler();
 #endif
 }
diff --git a/lib/ExecutionEngine/Android.mk b/lib/ExecutionEngine/Android.mk
index e849827..695a975 100644
--- a/lib/ExecutionEngine/Android.mk
+++ b/lib/ExecutionEngine/Android.mk
@@ -72,6 +72,7 @@
 LOCAL_SRC_FILES := $(libbcc_executionengine_SRC_FILES)
 
 include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
+include $(LIBBCC_ROOT_PATH)/libbcc-build-rules.mk
 include $(LLVM_ROOT_PATH)/llvm-device-build.mk
 include $(BUILD_STATIC_LIBRARY)
 
@@ -93,5 +94,6 @@
 LOCAL_SRC_FILES := $(libbcc_executionengine_SRC_FILES)
 
 include $(LIBBCC_ROOT_PATH)/libbcc-gen-config-from-mk.mk
+include $(LIBBCC_ROOT_PATH)/libbcc-build-rules.mk
 include $(LLVM_ROOT_PATH)/llvm-host-build.mk
 include $(BUILD_HOST_STATIC_LIBRARY)
diff --git a/lib/ExecutionEngine/Compiler.cpp b/lib/ExecutionEngine/Compiler.cpp
index ebf6912..a26c1c3 100644
--- a/lib/ExecutionEngine/Compiler.cpp
+++ b/lib/ExecutionEngine/Compiler.cpp
@@ -129,10 +129,8 @@
   // Set Triple, CPU and Features here
   Triple = TARGET_TRIPLE_STRING;
 
-  // NOTE: Currently, we have to turn off the support for NEON explicitly.
-  // Since the ARMCodeEmitter.cpp is not ready for JITing NEON
-  // instructions.
-#if defined(DEFAULT_ARM_CODEGEN) || defined(PROVIDE_ARM_CODEGEN)
+#if defined(DEFAULT_ARM_CODEGEN)
+
 #if defined(ARCH_ARM_HAVE_VFP)
   Features.push_back("+vfp3");
 #if !defined(ARCH_ARM_HAVE_VFP_D32)
@@ -140,15 +138,22 @@
 #endif
 #endif
 
-// FIXME - Temporarily disable NEON
-#if 0 && defined(ARCH_ARM_HAVE_NEON)
+  // NOTE: Currently, we have to turn off the support for NEON explicitly.
+  // Since the ARMCodeEmitter.cpp is not ready for JITing NEON
+  // instructions.
+
+  // FIXME: Re-enable NEON when ARMCodeEmitter supports NEON.
+#define USE_ARM_NEON 0
+#if USE_ARM_NEON
   Features.push_back("+neon");
   Features.push_back("+neonfp");
 #else
   Features.push_back("-neon");
   Features.push_back("-neonfp");
-#endif
+#endif // USE_ARM_NEON
+#endif // DEFAULT_ARM_CODEGEN
 
+#if defined(PROVIDE_ARM_CODEGEN)
   LLVMInitializeARMMCAsmInfo();
   LLVMInitializeARMMCCodeGenInfo();
   LLVMInitializeARMMCSubtargetInfo();
@@ -157,8 +162,7 @@
   LLVMInitializeARMTarget();
 #endif
 
-#if defined(DEFAULT_X86_CODEGEN) || defined(PROVIDE_X86_CODEGEN) || \
-    defined(DEFAULT_X64_CODEGEN) || defined(PROVIDE_X64_CODEGEN)
+#if defined(PROVIDE_X86_CODEGEN)
   LLVMInitializeX86MCAsmInfo();
   LLVMInitializeX86MCCodeGenInfo();
   LLVMInitializeX86MCSubtargetInfo();
@@ -193,7 +197,7 @@
   llvm::FloatABIType = llvm::FloatABI::Soft;
   llvm::UseSoftFloat = false;
 
-#if defined(DEFAULT_X64_CODEGEN)
+#if defined(DEFAULT_X86_64_CODEGEN)
   // Data address in X86_64 architecture may reside in a far-away place
   llvm::TargetMachine::setCodeModel(llvm::CodeModel::Medium);
 #else