Merge "Update RS prebuilts and add x86 support." into jb-mr2-dev
diff --git a/renderscript/Android.mk b/renderscript/Android.mk
index 2bc9c5d..76b405a 100644
--- a/renderscript/Android.mk
+++ b/renderscript/Android.mk
@@ -22,7 +22,7 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := librsjni
-LOCAL_SRC_FILES := lib/$(LOCAL_MODULE).so
+LOCAL_SRC_FILES := lib/$(TARGET_ARCH)/$(LOCAL_MODULE).so
 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_SUFFIX := .so
@@ -33,7 +33,7 @@
 include $(CLEAR_VARS)
 
 LOCAL_MODULE := libRSSupport
-LOCAL_SRC_FILES := lib/$(LOCAL_MODULE).so
+LOCAL_SRC_FILES := lib/$(TARGET_ARCH)/$(LOCAL_MODULE).so
 LOCAL_MODULE_CLASS := SHARED_LIBRARIES
 LOCAL_MODULE_TAGS := optional
 LOCAL_MODULE_SUFFIX := .so
diff --git a/renderscript/include/rs_allocation.rsh b/renderscript/include/rs_allocation.rsh
index 46ff3cf..cefd09f 100644
--- a/renderscript/include/rs_allocation.rsh
+++ b/renderscript/include/rs_allocation.rsh
@@ -147,19 +147,29 @@
     rsGetElementAt(rs_allocation, uint32_t x, uint32_t y, uint32_t z);
 
 
-#define GET_ELEMENT_AT(T) \
-static inline T __attribute__((overloadable)) \
-        rsGetElementAt_##T(rs_allocation a, uint32_t x) {  \
-    return ((T *)rsGetElementAt(a, x))[0]; \
-} \
-static inline T __attribute__((overloadable)) \
-        rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y) {  \
-    return ((T *)rsGetElementAt(a, x, y))[0]; \
-} \
-static inline T __attribute__((overloadable)) \
-        rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {  \
-    return ((T *)rsGetElementAt(a, x, y, z))[0]; \
-}
+#if (defined(RS_VERSION) && (RS_VERSION >= 18))
+    #define GET_ELEMENT_AT(T) \
+    extern T __attribute__((overloadable)) \
+            rsGetElementAt_##T(rs_allocation a, uint32_t x); \
+    extern T __attribute__((overloadable)) \
+            rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y);  \
+    extern T __attribute__((overloadable)) \
+            rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y, uint32_t z);
+#else
+    #define GET_ELEMENT_AT(T) \
+    static inline T __attribute__((overloadable)) \
+            rsGetElementAt_##T(rs_allocation a, uint32_t x) {  \
+        return ((T *)rsGetElementAt(a, x))[0]; \
+    } \
+    static inline T __attribute__((overloadable)) \
+            rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y) {  \
+        return ((T *)rsGetElementAt(a, x, y))[0]; \
+    } \
+    static inline T __attribute__((overloadable)) \
+            rsGetElementAt_##T(rs_allocation a, uint32_t x, uint32_t y, uint32_t z) {  \
+        return ((T *)rsGetElementAt(a, x, y, z))[0]; \
+    }
+#endif
 
 GET_ELEMENT_AT(char)
 GET_ELEMENT_AT(char2)
@@ -289,18 +299,12 @@
 
 #define SET_ELEMENT_AT(T)                                               \
     extern void __attribute__((overloadable))                           \
-    __rsSetElementAt_##T(rs_allocation a, T val, uint32_t x);           \
+    rsSetElementAt_##T(rs_allocation a, T val, uint32_t x);             \
     extern void __attribute__((overloadable))                           \
-    __rsSetElementAt_##T(rs_allocation a, T val, uint32_t x, uint32_t y); \
-                                                                        \
-    static inline void __attribute__((overloadable))                    \
-    rsSetElementAt_##T(rs_allocation a, T val, uint32_t x) {            \
-        __rsSetElementAt_##T(a, val, x);                                \
-    }                                                                   \
-    static inline void __attribute__((overloadable))                    \
-    rsSetElementAt_##T(rs_allocation a, T val, uint32_t x, uint32_t y) { \
-        __rsSetElementAt_##T(a, val, x, y);                     \
-    }                                                           \
+    rsSetElementAt_##T(rs_allocation a, T val, uint32_t x, uint32_t y); \
+    extern void __attribute__((overloadable))                           \
+    rsSetElementAt_##T(rs_allocation a, T val, uint32_t x, uint32_t y, uint32_t z);
+
 
 SET_ELEMENT_AT(char)
 SET_ELEMENT_AT(char2)
diff --git a/renderscript/lib/arm/libRSSupport.so b/renderscript/lib/arm/libRSSupport.so
new file mode 100755
index 0000000..d3a5f0b
--- /dev/null
+++ b/renderscript/lib/arm/libRSSupport.so
Binary files differ
diff --git a/renderscript/lib/arm/libclcore.bc b/renderscript/lib/arm/libclcore.bc
new file mode 100644
index 0000000..bc5cf4f
--- /dev/null
+++ b/renderscript/lib/arm/libclcore.bc
Binary files differ
diff --git a/renderscript/lib/arm/libcompiler_rt.a b/renderscript/lib/arm/libcompiler_rt.a
new file mode 100644
index 0000000..8074fc7
--- /dev/null
+++ b/renderscript/lib/arm/libcompiler_rt.a
Binary files differ
diff --git a/renderscript/lib/arm/librsjni.so b/renderscript/lib/arm/librsjni.so
new file mode 100755
index 0000000..5cc5364
--- /dev/null
+++ b/renderscript/lib/arm/librsjni.so
Binary files differ
diff --git a/renderscript/lib/javalib.jar b/renderscript/lib/javalib.jar
index 4002039..693c26c 100644
--- a/renderscript/lib/javalib.jar
+++ b/renderscript/lib/javalib.jar
Binary files differ
diff --git a/renderscript/lib/libRSSupport.so b/renderscript/lib/libRSSupport.so
deleted file mode 100755
index 16736cf..0000000
--- a/renderscript/lib/libRSSupport.so
+++ /dev/null
Binary files differ
diff --git a/renderscript/lib/libclcore.bc b/renderscript/lib/libclcore.bc
deleted file mode 100644
index 9dd4bf3..0000000
--- a/renderscript/lib/libclcore.bc
+++ /dev/null
Binary files differ
diff --git a/renderscript/lib/libcompiler_rt.a b/renderscript/lib/libcompiler_rt.a
deleted file mode 100644
index cd76289..0000000
--- a/renderscript/lib/libcompiler_rt.a
+++ /dev/null
Binary files differ
diff --git a/renderscript/lib/librsjni.so b/renderscript/lib/librsjni.so
deleted file mode 100755
index 0d4020e..0000000
--- a/renderscript/lib/librsjni.so
+++ /dev/null
Binary files differ
diff --git a/renderscript/lib/x86/libRSSupport.so b/renderscript/lib/x86/libRSSupport.so
new file mode 100755
index 0000000..c8e4272
--- /dev/null
+++ b/renderscript/lib/x86/libRSSupport.so
Binary files differ
diff --git a/renderscript/lib/x86/libclcore.bc b/renderscript/lib/x86/libclcore.bc
new file mode 100644
index 0000000..bc5cf4f
--- /dev/null
+++ b/renderscript/lib/x86/libclcore.bc
Binary files differ
diff --git a/renderscript/lib/x86/libcompiler_rt.a b/renderscript/lib/x86/libcompiler_rt.a
new file mode 100644
index 0000000..9ecef1d
--- /dev/null
+++ b/renderscript/lib/x86/libcompiler_rt.a
Binary files differ
diff --git a/renderscript/lib/x86/librsjni.so b/renderscript/lib/x86/librsjni.so
new file mode 100755
index 0000000..765056f
--- /dev/null
+++ b/renderscript/lib/x86/librsjni.so
Binary files differ
diff --git a/tools/Android.mk b/tools/Android.mk
index 2623f7b..a6a929e 100644
--- a/tools/Android.mk
+++ b/tools/Android.mk
@@ -126,6 +126,7 @@
 LOCAL_SRC_FILES := $(HOST_OS)/llvm-rs-cc$(HOST_EXECUTABLE_SUFFIX)
 LOCAL_MODULE_CLASS := EXECUTABLES
 LOCAL_MODULE_TAGS := optional
+LOCAL_REQUIRED_MODULES := libLLVM libclang
 LOCAL_MODULE_SUFFIX := $(HOST_EXECUTABLE_SUFFIX)
 LOCAL_BUILT_MODULE_STEM := llvm-rs-cc$(HOST_EXECUTABLE_SUFFIX)
 LOCAL_IS_HOST_MODULE := true
@@ -133,6 +134,30 @@
 include $(BUILD_PREBUILT)
 
 ##################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libLLVM
+LOCAL_SRC_FILES := $(HOST_OS)/$(LOCAL_MODULE)$(HOST_SHLIB_SUFFIX)
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_SUFFIX := $(HOST_SHLIB_SUFFIX)
+LOCAL_IS_HOST_MODULE := true
+
+include $(BUILD_PREBUILT)
+
+##################################
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libclang
+LOCAL_SRC_FILES := $(HOST_OS)/$(LOCAL_MODULE)$(HOST_SHLIB_SUFFIX)
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE_SUFFIX := $(HOST_SHLIB_SUFFIX)
+LOCAL_IS_HOST_MODULE := true
+
+include $(BUILD_PREBUILT)
+
+##################################
 
 endif # TARGET_BUILD_APPS or TARGET_BUILD_PDK
 
diff --git a/tools/darwin/bcc_compat b/tools/darwin/bcc_compat
index 88387e1..eb6de75 100755
--- a/tools/darwin/bcc_compat
+++ b/tools/darwin/bcc_compat
Binary files differ
diff --git a/tools/darwin/libLLVM.dylib b/tools/darwin/libLLVM.dylib
new file mode 100755
index 0000000..54100d8
--- /dev/null
+++ b/tools/darwin/libLLVM.dylib
Binary files differ
diff --git a/tools/darwin/libbcc.dylib b/tools/darwin/libbcc.dylib
index 85f1b04..d056545 100755
--- a/tools/darwin/libbcc.dylib
+++ b/tools/darwin/libbcc.dylib
Binary files differ
diff --git a/tools/darwin/libbcinfo.dylib b/tools/darwin/libbcinfo.dylib
index d7baac9..c0846b0 100755
--- a/tools/darwin/libbcinfo.dylib
+++ b/tools/darwin/libbcinfo.dylib
Binary files differ
diff --git a/tools/darwin/libclang.dylib b/tools/darwin/libclang.dylib
new file mode 100755
index 0000000..e62898c
--- /dev/null
+++ b/tools/darwin/libclang.dylib
Binary files differ
diff --git a/tools/darwin/llvm-rs-cc b/tools/darwin/llvm-rs-cc
index ae58ab2..98cf723 100755
--- a/tools/darwin/llvm-rs-cc
+++ b/tools/darwin/llvm-rs-cc
Binary files differ
diff --git a/tools/linux/bcc_compat b/tools/linux/bcc_compat
index 57b48b4..6a1efd0 100755
--- a/tools/linux/bcc_compat
+++ b/tools/linux/bcc_compat
Binary files differ
diff --git a/tools/linux/libLLVM.so b/tools/linux/libLLVM.so
new file mode 100755
index 0000000..91195c1
--- /dev/null
+++ b/tools/linux/libLLVM.so
Binary files differ
diff --git a/tools/linux/libbcc.so b/tools/linux/libbcc.so
index ebbcb82..7ddf48e 100755
--- a/tools/linux/libbcc.so
+++ b/tools/linux/libbcc.so
Binary files differ
diff --git a/tools/linux/libbcinfo.so b/tools/linux/libbcinfo.so
index f6c05ea..8c222ff 100755
--- a/tools/linux/libbcinfo.so
+++ b/tools/linux/libbcinfo.so
Binary files differ
diff --git a/tools/linux/libclang.so b/tools/linux/libclang.so
new file mode 100755
index 0000000..49a0a14
--- /dev/null
+++ b/tools/linux/libclang.so
Binary files differ
diff --git a/tools/linux/llvm-rs-cc b/tools/linux/llvm-rs-cc
index 0ccd5fe..8448a33 100755
--- a/tools/linux/llvm-rs-cc
+++ b/tools/linux/llvm-rs-cc
Binary files differ