Convert libbcc to Android.bp

See build/soong/README.md for more information.

Includes one small code change to replace
FORCE_BUILD_LLVM_DISABLE_NDEBUG with _DEBUG, which is set already in
llvm-defaults in external/llvm/soong/llvm.go when the environment
variable is set.

libbcc-targets.mk remains, it is still used by frameworks/rs/cpu_ref.

Reapplies Iec37d2c33020bb5702c27497ae343a8312601202 with libbcinfo's
version_script only applied on device builds, and only building 64-bit
for host.

Test: mma -j
Test: mma -j FORCE_BUILD_LLVM_COMPONENTS=true
Change-Id: I6a024929bf90368f81f47c72f0c48866efc0e635
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 0000000..310f4bb
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,190 @@
+//
+// Copyright (C) 2014 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_defaults {
+    name: "libbcc-defaults",
+    defaults: [
+        "llvm-defaults",
+        "llvm-generated-headers",
+        "rs-version",
+        "libbcc-targets",
+    ],
+
+    clang: true,
+    cflags: [
+        "-Wall",
+        "-Wno-unused-parameter",
+        "-Werror",
+        "-D__DISABLE_ASSERTS",
+    ],
+
+    target: {
+        android: {
+            cflags: [
+                "-DTARGET_BUILD",
+            ],
+        },
+        host: {
+            compile_multilib: "first",
+            cflags: [
+                "-D__HOST__",
+            ],
+        },
+    },
+
+    product_variables: {
+        eng: {
+            cflags: ["-U__DISABLE_ASSERTS"],
+        },
+    },
+
+    include_dirs: [
+        "frameworks/compile/libbcc/include",
+        "frameworks/rs",
+    ],
+}
+
+//=====================================================================
+// Architecture Selection
+//=====================================================================
+// Note: We should only use -DFORCE_ARCH_CODEGEN on target build.
+// For the host build, we will include as many architecture as possible,
+// so that we can test the execution engine easily.
+
+cc_defaults {
+    name: "libbcc-targets",
+    arch: {
+        arm: {
+            cflags: [
+                "-DFORCE_ARM_CODEGEN",
+                "-DARCH_ARM_HAVE_VFP",
+            ],
+            armv7_a_neon: {
+                cflags: [
+                    "-DARCH_ARM_HAVE_VFP_D32",
+                    "-DARCH_ARM_HAVE_NEON",
+                ],
+            },
+        },
+        arm64: {
+            cflags: [
+                "-DFORCE_ARM64_CODEGEN",
+                "-DARCH_ARM_HAVE_NEON",
+                "-DARCH_ARM_HAVE_VFP",
+                "-DARCH_ARM_HAVE_VFP_D32",
+                "-DDISABLE_CLCORE_NEON",
+            ],
+        },
+        mips: {
+            cflags: ["-DFORCE_MIPS_CODEGEN"],
+        },
+        mips64: {
+            cflags: ["-DFORCE_MIPS64_CODEGEN"],
+        },
+    },
+    target: {
+        android_x86: {
+            cflags: ["-DFORCE_X86_CODEGEN"],
+        },
+        android_x86_64: {
+            cflags: ["-DFORCE_X86_64_CODEGEN"],
+        },
+        arm_on_x86: {
+            cflags: [
+                "-DPROVIDE_ARM_CODEGEN",
+                "-DFORCE_BUILD_ARM",
+            ],
+        },
+        arm_on_x86_64: {
+            cflags: [
+                "-DPROVIDE_ARM_CODEGEN",
+                "-DFORCE_BUILD_ARM",
+                "-DPROVIDE_ARM64_CODEGEN",
+            ],
+        },
+    },
+}
+
+//=====================================================================
+// Shared Library libbcc
+//=====================================================================
+cc_library_shared {
+    name: "libbcc",
+    host_supported: true,
+
+    whole_static_libs: [
+        "libbccRenderscript",
+        "libbccCore",
+        "libbccSupport",
+    ],
+
+    shared_libs: [
+        "libbcinfo",
+    ],
+
+    target: {
+        windows: {
+            enabled: true,
+            shared_libs: ["libLLVM"],
+        },
+        darwin: {
+            host_ldlibs: [
+                "-ldl",
+                "-lpthread",
+            ],
+
+            shared_libs: ["libLLVM"],
+        },
+        linux: {
+            host_ldlibs: [
+                "-ldl",
+                "-lpthread",
+            ],
+            static_libs: ["libLLVMLinker"],
+            allow_undefined_symbols: true,
+        },
+        host: {
+            compile_multilib: "first",
+            static_libs: [
+                "libutils",
+                "libcutils",
+                "liblog",
+            ],
+        },
+        android: {
+            shared_libs: [
+                "libLLVM",
+                "libdl",
+                "libutils",
+                "libcutils",
+                "liblog",
+            ],
+        },
+    },
+
+    product_variables: {
+        unbundled_build: {
+            // Don't build in unbundled branches
+            enabled: false,
+        },
+    },
+}
+
+subdirs = [
+    "bcinfo",
+    "lib",
+    "tools",
+]