Add RS support in API19
Change-Id: I31b7c747c045cbbf3ffef96edd4910c75fe6da29
diff --git a/build/core/add-application.mk b/build/core/add-application.mk
index 79c6a86..28d4da1 100644
--- a/build/core/add-application.mk
+++ b/build/core/add-application.mk
@@ -94,8 +94,8 @@
APP_PLATFORM := android-9
$(call ndk_log, Adjusting APP_PLATFORM android-$(APP_PLATFORM_LEVEL) to $(APP_PLATFORM))
endif
-ifneq (,$(call gt,$(APP_PLATFORM_LEVEL),18))
- APP_PLATFORM := android-18
+ifneq (,$(call gt,$(APP_PLATFORM_LEVEL),19))
+ APP_PLATFORM := android-19
$(call ndk_log, Adjusting APP_PLATFORM android-$(APP_PLATFORM_LEVEL) to $(APP_PLATFORM))
endif
@@ -239,6 +239,9 @@
APP_CFLAGS := $(strip $(APP_CFLAGS))
APP_CONLYFLAGS := $(strip $(APP_CONLYFLAGS))
+APP_CPPFLAGS := $(strip $(APP_CPPFLAGS))
+APP_CXXFLAGS := $(strip $(APP_CXXFLAGS))
+APP_RENDERSCRIPT_FLAGS := $(strip $(APP_RENDERSCRIPT_FLAGS))
APP_LDFLAGS := $(strip $(APP_LDFLAGS))
# Check that APP_STL is defined. If not, use the default value (system)
diff --git a/build/core/build-binary.mk b/build/core/build-binary.mk
index 5653899..380ff4c 100644
--- a/build/core/build-binary.mk
+++ b/build/core/build-binary.mk
@@ -68,7 +68,16 @@
GLESv2 \
GLESv3 \
OpenSLES \
- OpenMAXAL
+ OpenMAXAL \
+ bcc \
+ bcinfo \
+ cutils \
+ gui \
+ RScpp \
+ RScpp_static \
+ RS \
+ ui \
+ utils
libs_in_ldflags := $(filter-out $(addprefix -l,$(system_libs)), $(libs_in_ldflags))
@@ -128,6 +137,9 @@
# list of generated object files
LOCAL_OBJECTS :=
+# list of generated object files from RS files, subset of LOCAL_OBJECTS
+LOCAL_RS_OBJECTS :=
+
# always define ANDROID when building binaries
#
LOCAL_CFLAGS := -DANDROID $(LOCAL_CFLAGS)
@@ -150,7 +162,7 @@
endif
#
-# Check LOCAL_CPP_EXTENSION, use '.cpp' by default
+# Check LOCAL_CPP_EXTENSION
#
bad_cpp_extensions := $(strip $(filter-out .%,$(LOCAL_CPP_EXTENSION)))
ifdef bad_cpp_extensions
@@ -161,8 +173,8 @@
ifeq ($(LOCAL_CPP_EXTENSION),)
# Match the default GCC C++ extensions.
LOCAL_CPP_EXTENSION := $(default-c++-extensions)
-else
endif
+LOCAL_RS_EXTENSION := $(default-rs-extensions)
#
# If LOCAL_ALLOW_UNDEFINED_SYMBOLS is not true, the linker will allow the generation
@@ -301,9 +313,10 @@
# all_source_patterns contains the list of filename patterns that correspond
# to source files recognized by our build system
-all_source_extensions := .c .s .S $(LOCAL_CPP_EXTENSION)
+all_source_extensions := .c .s .S $(LOCAL_CPP_EXTENSION) $(LOCAL_RS_EXTENSION)
all_source_patterns := $(foreach _ext,$(all_source_extensions),%$(_ext))
all_cpp_patterns := $(foreach _ext,$(LOCAL_CPP_EXTENSION),%$(_ext))
+all_rs_patterns := $(foreach _ext,$(LOCAL_RS_EXTENSION),%$(_ext))
unknown_sources := $(strip $(filter-out $(all_source_patterns),$(LOCAL_SRC_FILES)))
ifdef unknown_sources
@@ -322,6 +335,14 @@
LOCAL_OBJECTS := $(subst ../,__/,$(LOCAL_OBJECTS))
LOCAL_OBJECTS := $(foreach _obj,$(LOCAL_OBJECTS),$(LOCAL_OBJS_DIR)/$(_obj))
+LOCAL_RS_OBJECTS := $(filter $(all_rs_patterns),$(LOCAL_SRC_FILES))
+$(foreach _ext,$(LOCAL_RS_EXTENSION),\
+ $(eval LOCAL_RS_OBJECTS := $$(LOCAL_RS_OBJECTS:%$(_ext)=%$$(TARGET_OBJ_EXTENSION)))\
+)
+LOCAL_RS_OBJECTS := $(filter %$(TARGET_OBJ_EXTENSION),$(LOCAL_RS_OBJECTS))
+LOCAL_RS_OBJECTS := $(subst ../,__/,$(LOCAL_RS_OBJECTS))
+LOCAL_RS_OBJECTS := $(foreach _obj,$(LOCAL_RS_OBJECTS),$(LOCAL_OBJS_DIR)/$(_obj))
+
# If the module has any kind of C++ features, enable them in LOCAL_CPPFLAGS
#
ifneq (,$(call module-has-c++-features,$(LOCAL_MODULE),rtti))
@@ -340,16 +361,36 @@
endif
endif
+# Set include patch for renderscript
+
+
+ifneq ($(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE),)
+ LOCAL_RENDERSCRIPT_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE)
+else
+ LOCAL_RENDERSCRIPT_INCLUDES := \
+ $(RENDERSCRIPT_TOOLCHAIN_HEADER) \
+ $(TARGET_C_INCLUDES)/rs/scriptc \
+ $(LOCAL_RENDERSCRIPT_INCLUDES)
+endif
+
+RS_COMPAT :=
+ifneq ($(call module-is-shared-library,$(LOCAL_MODULE)),)
+ RS_COMPAT := true
+endif
+
# Build the sources to object files
#
$(foreach src,$(filter %.c,$(LOCAL_SRC_FILES)), $(call compile-c-source,$(src),$(call get-object-name,$(src))))
$(foreach src,$(filter %.S %.s,$(LOCAL_SRC_FILES)), $(call compile-s-source,$(src),$(call get-object-name,$(src))))
-
$(foreach src,$(filter $(all_cpp_patterns),$(LOCAL_SRC_FILES)),\
$(call compile-cpp-source,$(src),$(call get-object-name,$(src)))\
)
+$(foreach src,$(filter $(all_rs_patterns),$(LOCAL_SRC_FILES)),\
+ $(call compile-rs-source,$(src),$(call get-rs-scriptc-name,$(src)),$(call get-rs-bc-name,$(src)),$(call get-rs-so-name,$(src)),$(call get-object-name,$(src)),$(RS_COMPAT))\
+)
+
#
# The compile-xxx-source calls updated LOCAL_OBJECTS and LOCAL_DEPENDENCY_DIRS
#
diff --git a/build/core/default-build-commands.mk b/build/core/default-build-commands.mk
index cf2e89e..41967f6 100644
--- a/build/core/default-build-commands.mk
+++ b/build/core/default-build-commands.mk
@@ -124,6 +124,10 @@
endif
TARGET_CXXFLAGS = $(TARGET_CFLAGS) -fno-exceptions -fno-rtti
+TARGET_RS_CC = $(RENDERSCRIPT_TOOLCHAIN_PREFIX)llvm-rs-cc
+TARGET_RS_BCC = $(RENDERSCRIPT_TOOLCHAIN_PREFIX)bcc_compat
+TARGET_RS_FLAGS = -Wall -Werror
+
TARGET_LD = $(TOOLCHAIN_PREFIX)ld
TARGET_LDFLAGS :=
diff --git a/build/core/definitions.mk b/build/core/definitions.mk
index 327c2e4..c446064 100644
--- a/build/core/definitions.mk
+++ b/build/core/definitions.mk
@@ -70,6 +70,9 @@
# The list of default C++ extensions supported by GCC.
default-c++-extensions := .cc .cp .cxx .cpp .CPP .c++ .C
+# The list of default RS extensions supported by llvm-rs-cc
+default-rs-extensions := .rs .fs
+
# -----------------------------------------------------------------------------
# Function : generate-dir
# Arguments: 1: directory path
@@ -401,6 +404,10 @@
SHORT_COMMANDS \
BUILT_MODULE_NOT_COPIED \
THIN_ARCHIVE \
+ RENDERSCRIPT_INCLUDES \
+ RENDERSCRIPT_INCLUDES_OVERRIDE \
+ RENDERSCRIPT_FLAGS \
+ RENDERSCRIPT_TARGET_API
# The following are generated by the build scripts themselves
@@ -1278,7 +1285,7 @@
get-object-name = $(strip \
$(subst ../,__/,\
$(eval __obj := $1)\
- $(foreach __ext,.c .s .S $(LOCAL_CPP_EXTENSION),\
+ $(foreach __ext,.c .s .S $(LOCAL_CPP_EXTENSION) $(LOCAL_RS_EXTENSION),\
$(eval __obj := $(__obj:%$(__ext)=%$(TARGET_OBJ_EXTENSION)))\
)\
$(__obj)\
@@ -1287,10 +1294,39 @@
-test-get-object-name = \
$(eval TARGET_OBJ_EXTENSION=.o)\
$(eval LOCAL_CPP_EXTENSION ?= .cpp)\
+ $(eval LOCAL_RS_EXTENSION ?= .rs)\
$(call test-expect,foo.o,$(call get-object-name,foo.c))\
$(call test-expect,bar.o,$(call get-object-name,bar.s))\
$(call test-expect,zoo.o,$(call get-object-name,zoo.S))\
- $(call test-expect,tot.o,$(call get-object-name,tot.cpp))
+ $(call test-expect,tot.o,$(call get-object-name,tot.cpp))\
+ $(call test-expect,RS.o,$(call get-object-name,RS.rs))
+
+get-rs-scriptc-name = $(strip \
+ $(subst ../,__/,\
+ $(eval __obj := $1)\
+ $(foreach __ext,$(LOCAL_RS_EXTENSION),\
+ $(eval __obj := $(__obj:%$(__ext)=%.cpp))\
+ )\
+ $(dir $(__obj))ScriptC_$(notdir $(__obj))\
+ ))
+
+get-rs-bc-name = $(strip \
+ $(subst ../,__/,\
+ $(eval __obj := $1)\
+ $(foreach __ext,$(LOCAL_RS_EXTENSION),\
+ $(eval __obj := $(__obj:%$(__ext)=%.bc))\
+ )\
+ $(__obj)\
+ ))
+
+get-rs-so-name = $(strip \
+ $(subst ../,__/,\
+ $(eval __obj := $1)\
+ $(foreach __ext,$(LOCAL_RS_EXTENSION),\
+ $(eval __obj := $(__obj:%$(__ext)=%$(TARGET_SONAME_EXTENSION)))\
+ )\
+ $(notdir $(__obj))\
+ ))
# -----------------------------------------------------------------------------
# Macro : hide
@@ -1385,13 +1421,79 @@
endif
$$(call generate-file-dir,$$(_OBJ))
-
-$$(_OBJ): $$(_SRC) $$(LOCAL_MAKEFILE) $$(NDK_APP_APPLICATION_MK) $$(NDK_DEPENDENCIES_CONVERTER)
+$$(_OBJ): $$(_SRC) $$(LOCAL_MAKEFILE) $$(NDK_APP_APPLICATION_MK) $$(NDK_DEPENDENCIES_CONVERTER) $(LOCAL_RS_OBJECTS)
$$(call host-echo-build-step,$$(PRIVATE_ABI),$$(PRIVATE_TEXT)) "$$(PRIVATE_MODULE) <= $$(notdir $$(PRIVATE_SRC))"
$$(hide) $$(PRIVATE_CC) -MMD -MP -MF $$(call convert-deps,$$(PRIVATE_DEPS)) $$(PRIVATE_CFLAGS) $$(call host-path,$$(PRIVATE_SRC)) -o $$(call host-path,$$(PRIVATE_OBJ)) \
$$(call cmd-convert-deps,$$(PRIVATE_DEPS))
endef
+
+# For renderscript: slightly different from the above ev-build-file
+# _RS_SRC: RS source file
+# _CPP_SRC: ScriptC_RS.cpp source file
+# _BC_SRC: Bitcode source file
+# _BC_SO: Bitcode SO name, no path
+# _OBJ: destination file
+# _RS_CC: 'compiler' command for _RS_SRC
+# _RS_BCC: 'compiler' command for _BC_SRC
+# _CXX: 'compiler' command for _CPP_SRC
+# _RS_FLAGS: 'compiler' flags for _RS_SRC
+# _CPP_FLAGS: 'compiler' flags for _CPP_SRC
+# _TEXT: Display text (e.g. "Compile RS")
+# _OUT: output dir
+# _COMPAT: 'true' if bcc_compat is required
+#
+define ev-build-rs-file
+$$(_OBJ): PRIVATE_ABI := $$(TARGET_ARCH_ABI)
+$$(_OBJ): PRIVATE_RS_SRC := $$(_RS_SRC)
+$$(_OBJ): PRIVATE_CPP_SRC := $$(_CPP_SRC)
+$$(_OBJ): PRIVATE_BC_SRC := $$(_BC_SRC)
+$$(_OBJ): PRIVATE_OBJ := $$(_OBJ)
+$$(_OBJ): PRIVATE_BC_OBJ := $$(_BC_SRC)$(TARGET_OBJ_EXTENSION)
+$$(_OBJ): PRIVATE_BC_SO := $$(_BC_SO)
+$$(_OBJ): PRIVATE_DEPS := $$(call host-path,$$(_OBJ).d)
+$$(_OBJ): PRIVATE_MODULE := $$(LOCAL_MODULE)
+$$(_OBJ): PRIVATE_TEXT := $$(_TEXT)
+$$(_OBJ): PRIVATE_RS_CC := $$(_RS_CC)
+$$(_OBJ): PRIVATE_RS_BCC := $$(_RS_BCC)
+$$(_OBJ): PRIVATE_CXX := $$(_CXX)
+$$(_OBJ): PRIVATE_RS_FLAGS := $$(_RS_FLAGS)
+$$(_OBJ): PRIVATE_CPPFLAGS := $$(_CPP_FLAGS)
+$$(_OBJ): PRIVATE_OUT := $$(NDK_APP_DST_DIR)
+$$(_OBJ): PRIVATE_RS_TRIPLE := $$(RS_TRIPLE)
+$$(_OBJ): PRIVATE_COMPAT := $$(_COMPAT)
+
+ifeq ($$(LOCAL_SHORT_COMMANDS),true)
+_OPTIONS_LISTFILE := $$(_OBJ).cflags
+$$(_OBJ): $$(call generate-list-file,$$(_CPP_FLAGS),$$(_OPTIONS_LISTFILE))
+$$(_OBJ): PRIVATE_CPPFLAGS := @$$(call host-path,$$(_OPTIONS_LISTFILE))
+$$(_OBJ): $$(_OPTIONS_LISTFILE)
+endif
+
+# llvm-rc-cc.exe has problem accepting input *.rs with path. To workaround:
+# cd ($dir $(_SRC)) ; llvm-rs-cc $(notdir $(_SRC)) -o ...full-path...
+#
+ifeq ($$(_COMPAT),true)
+$$(_OBJ): $$(_RS_SRC) $$(LOCAL_MAKEFILE) $$(NDK_APP_APPLICATION_MK) $$(NDK_DEPENDENCIES_CONVERTER)
+ $$(call host-echo-build-step,$$(PRIVATE_ABI),$$(PRIVATE_TEXT)) "$$(PRIVATE_MODULE) <= $$(notdir $$(PRIVATE_RS_SRC))"
+ $$(hide) \
+ cd $$(call host-path,$$(dir $$(PRIVATE_RS_SRC))) && $$(PRIVATE_RS_CC) -o $$(call host-path,$$(abspath $$(dir $$(PRIVATE_OBJ))))/ -d $$(abspath $$(call host-path,$$(dir $$(PRIVATE_OBJ)))) -MD -reflect-c++ $$(PRIVATE_RS_FLAGS) $$(notdir $$(PRIVATE_RS_SRC))
+ $$(hide) \
+ $$(PRIVATE_RS_BCC) -O3 -o $$(call host-path,$$(PRIVATE_BC_OBJ)) -fPIC -shared -rt-path $$(call host-path,$(RENDERSCRIPT_TOOLCHAIN_LIB)/libclcore.bc) -mtriple $$(PRIVATE_RS_TRIPLE) $$(call host-path,$$(PRIVATE_BC_SRC)) && \
+ $$(PRIVATE_CXX) -shared -Wl,-soname,librs.$$(PRIVATE_BC_SO) -nostdlib $$(call host-path,$$(PRIVATE_BC_OBJ)) $$(call host-path,$(SYSROOT_LINK)/usr/lib/rs/libcompiler_rt.a) -o $$(call host-path,$$(PRIVATE_OUT)/librs.$$(PRIVATE_BC_SO)) -L $$(call host-path,$(SYSROOT_LINK)/usr/lib) -L $$(call host-path,$(SYSROOT_LINK)/usr/lib/rs) -lRSSupport -lm -lc && \
+ $$(PRIVATE_CXX) -MMD -MP -MF $$(call convert-deps,$$(PRIVATE_DEPS)) $$(PRIVATE_CPPFLAGS) $$(call host-path,$$(PRIVATE_CPP_SRC)) -o $$(call host-path,$$(PRIVATE_OBJ)) \
+ $$(call cmd-convert-deps,$$(PRIVATE_DEPS))
+else
+$$(_OBJ): $$(_RS_SRC) $$(LOCAL_MAKEFILE) $$(NDK_APP_APPLICATION_MK) $$(NDK_DEPENDENCIES_CONVERTER)
+ $$(call host-echo-build-step,$$(PRIVATE_ABI),$$(PRIVATE_TEXT)) "$$(PRIVATE_MODULE) <= $$(notdir $$(PRIVATE_RS_SRC))"
+ $$(hide) \
+ cd $$(call host-path,$$(dir $$(PRIVATE_RS_SRC))) && $$(PRIVATE_RS_CC) -o $$(call host-path,$$(abspath $$(dir $$(PRIVATE_OBJ))))/ -d $$(abspath $$(call host-path,$$(dir $$(PRIVATE_OBJ)))) -MD -reflect-c++ $$(PRIVATE_RS_FLAGS) $$(notdir $$(PRIVATE_RS_SRC))
+ $$(hide) \
+ $$(PRIVATE_CXX) -MMD -MP -MF $$(call convert-deps,$$(PRIVATE_DEPS)) $$(PRIVATE_CPPFLAGS) $$(call host-path,$$(PRIVATE_CPP_SRC)) -o $$(call host-path,$$(PRIVATE_OBJ)) \
+ $$(call cmd-convert-deps,$$(PRIVATE_DEPS))
+endif
+endef
+
# This assumes the same things than ev-build-file, but will handle
# the definition of LOCAL_FILTER_ASM as well.
define ev-build-source-file
@@ -1551,11 +1653,72 @@
# Arguments : 1: single C++ source file name (relative to LOCAL_PATH)
# : 2: object file name
# Returns : None
-# Usage : $(call compile-c-source,<srcfile>)
+# Usage : $(call compile-cpp-source,<srcfile>)
# Rationale : Setup everything required to build a single C++ source file
# -----------------------------------------------------------------------------
compile-cpp-source = $(eval $(call ev-compile-cpp-source,$1,$2))
+# -----------------------------------------------------------------------------
+# Template : ev-compile-rs-source
+# Arguments : 1: single RS source file name (relative to LOCAL_PATH)
+# 2: intermediate cpp file (without path)
+# 3: intermediate bc file (without path)
+# 4: so file from bc (without path)
+# 5: target object file (without path)
+# 6: 'true' if bcc_compat is required
+# Returns : None
+# Usage : $(eval $(call ev-compile-rs-source,<srcfile>,<cppfile>,<objfile>)
+# Rationale : Internal template evaluated by compile-rs-source
+# -----------------------------------------------------------------------------
+
+define ev-compile-rs-source
+_RS_SRC:=$$(call local-source-file-path,$(1))
+_CPP_SRC:=$$(LOCAL_OBJS_DIR:%/=%)/$(2)
+_BC_SRC:=$$(LOCAL_OBJS_DIR:%/=%)/$(3)
+_BC_SO:=$(4)
+_OBJ:=$$(LOCAL_OBJS_DIR:%/=%)/$(5)
+_COMPAT := $(6)
+_CPP_FLAGS := $$($$(my)CXXFLAGS) \
+ $$(call get-src-file-target-cflags,$(1)) \
+ $$(call host-c-includes, $$(LOCAL_C_INCLUDES) $$(LOCAL_PATH)) \
+ $$(LOCAL_CFLAGS) \
+ $$(LOCAL_CPPFLAGS) \
+ $$(LOCAL_CXXFLAGS) \
+ $$(NDK_APP_CFLAGS) \
+ $$(NDK_APP_CPPFLAGS) \
+ $$(NDK_APP_CXXFLAGS) \
+ $$(call host-c-includes,$$($(my)C_INCLUDES)) \
+ -fno-rtti \
+ -c \
+
+_RS_FLAGS := $$(call host-c-includes, $$(LOCAL_RENDERSCRIPT_INCLUDES) $$(LOCAL_PATH)) \
+ $$($$(my)RS_FLAGS) \
+ $$(LOCAL_RENDERSCRIPT_FLAGS) \
+ $$(call host-c-includes,$$($(my)RENDERSCRIPT_INCLUDES)) \
+
+_RS_CC := $$(NDK_CCACHE) $$($$(my)RS_CC)
+_RS_BCC := $$(NDK_CCACHE) $$($$(my)RS_BCC)
+_CXX := $$(NDK_CCACHE) $$($$(my)CXX)
+_TEXT := Compile RS
+_OUT := $$($$(my)OUT)
+
+$$(eval $$(call ev-build-rs-file))
+endef
+
+# -----------------------------------------------------------------------------
+# Function : compile-rs-source
+# Arguments : 1: single RS source file name (relative to LOCAL_PATH)
+# 2: intermediate cpp file name
+# 3: intermediate bc file
+# 4: so file from bc (without path)
+# 5: object file name
+# 6: 'true' if bcc_compat is required
+# Returns : None
+# Usage : $(call compile-rs-source,<srcfile>)
+# Rationale : Setup everything required to build a single RS source file
+# -----------------------------------------------------------------------------
+compile-rs-source = $(eval $(call ev-compile-rs-source,$1,$2,$3,$4,$5,$6))
+
#
# Module imports
#
diff --git a/build/core/import-locals.mk b/build/core/import-locals.mk
index cb18480..2c4dfba 100644
--- a/build/core/import-locals.mk
+++ b/build/core/import-locals.mk
@@ -32,6 +32,7 @@
imported_CFLAGS := $(call module-get-listed-export,$(all_depends),CFLAGS)
imported_CONLYFLAGS := $(call module-get-listed-export,$(all_depends),CONLYFLAGS)
imported_CPPFLAGS := $(call module-get-listed-export,$(all_depends),CPPFLAGS)
+imported_RENDERSCRIPT_FLAGS := $(call module-get-listed-export,$(all_depends),RENDERSCRIPT_FLAGS)
imported_C_INCLUDES := $(call module-get-listed-export,$(all_depends),C_INCLUDES)
ifdef NDK_DEBUG_IMPORTS
@@ -39,6 +40,7 @@
$(info CFLAGS='$(imported_CFLAGS)')
$(info CONLYFLAGS='$(imported_CONLYFLAGS)')
$(info CPPFLAGS='$(imported_CPPFLAGS)')
+ $(info RENDERSCRIPT_FLAGS='$(imported_RENDERSCRIPT_FLAGS)')
$(info C_INCLUDES='$(imported_C_INCLUDES)')
$(info All depends='$(all_depends)')
endif
@@ -50,6 +52,7 @@
LOCAL_CFLAGS := $(strip $(imported_CFLAGS) $(LOCAL_CFLAGS))
LOCAL_CONLYFLAGS := $(strip $(imported_CONLYFLAGS) $(LOCAL_CONLYFLAGS))
LOCAL_CPPFLAGS := $(strip $(imported_CPPFLAGS) $(LOCAL_CPPFLAGS))
+LOCAL_RENDERSCRIPT_FLAGS := $(strip $(imported_RENDERSCRIPT_FLAGS) $(LOCAL_RENDERSCRIPT_FLAGS))
#
# The imported include directories are appended to their LOCAL_XXX value
diff --git a/build/core/setup-abi.mk b/build/core/setup-abi.mk
index c66deaf..c3be36a 100644
--- a/build/core/setup-abi.mk
+++ b/build/core/setup-abi.mk
@@ -54,6 +54,21 @@
TARGET_GDB_SETUP := $(TARGET_OUT)/setup.gdb
+# RS triple
+ifeq ($(TARGET_ARCH_ABI),armeabi-v7a)
+ RS_TRIPLE := armv7-none-linux-gnueabi
+endif
+ifeq ($(TARGET_ARCH_ABI),armeabi)
+ RS_TRIPLE := arm-none-linux-gnueabi
+endif
+ifeq ($(TARGET_ARCH_ABI),mips)
+ RS_TRIPLE := mipsel-unknown-linux
+endif
+ifeq ($(TARGET_ARCH_ABI),x86)
+ RS_TRIPLE := i686-unknown-linux
+endif
+
+
include $(BUILD_SYSTEM)/setup-toolchain.mk
# Restore TARGET_PLATFORM, see above.
diff --git a/build/core/setup-app.mk b/build/core/setup-app.mk
index e9e5073..6a9b850 100644
--- a/build/core/setup-app.mk
+++ b/build/core/setup-app.mk
@@ -105,6 +105,15 @@
$(hide) $(call host-rm,$(NDK_ALL_ABIS:%=$(NDK_APP_LIBS_OUT)/%/gdb.setup))
endif
+# Renderscript
+
+RENDERSCRIPT_TOOLCHAIN_ROOT := $(NDK_ROOT)/toolchains/renderscript
+RENDERSCRIPT_TOOLCHAIN_PREBUILT_ROOT := $(call host-prebuilt-tag,$(RENDERSCRIPT_TOOLCHAIN_ROOT))
+RENDERSCRIPT_TOOLCHAIN_PREFIX := $(RENDERSCRIPT_TOOLCHAIN_PREBUILT_ROOT)/bin/
+RENDERSCRIPT_TOOLCHAIN_LIB := $(RENDERSCRIPT_TOOLCHAIN_PREBUILT_ROOT)/lib
+RENDERSCRIPT_TOOLCHAIN_HEADER := $(RENDERSCRIPT_TOOLCHAIN_PREBUILT_ROOT)/lib/clang/3.3/include
+
+# Each ABI
$(foreach _abi,$(NDK_APP_ABI),\
$(eval TARGET_ARCH_ABI := $(_abi))\
$(eval include $(BUILD_SYSTEM)/setup-abi.mk) \
diff --git a/build/tools/dev-defaults.sh b/build/tools/dev-defaults.sh
index 9877af1..df979d9 100644
--- a/build/tools/dev-defaults.sh
+++ b/build/tools/dev-defaults.sh
@@ -6,7 +6,7 @@
# Note: levels 6 and 7 are omitted since they have the same native
# APIs as level 5. Same for levels 10, 11 and 12
#
-API_LEVELS="3 4 5 8 9 13 14 15 16 17 18"
+API_LEVELS="3 4 5 8 9 13 14 15 16 17 18 19"
# Default ABIs for the target prebuilt binaries.
PREBUILT_ABIS="armeabi armeabi-v7a x86 mips"