diff options
-rw-r--r-- | core/clear_vars.mk | 1 | ||||
-rw-r--r-- | core/config.mk | 1 | ||||
-rw-r--r-- | core/definitions.mk | 10 | ||||
-rw-r--r-- | core/java.mk | 20 | ||||
-rw-r--r-- | core/package.mk | 8 |
5 files changed, 40 insertions, 0 deletions
diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 853f9a0..a566768 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -110,6 +110,7 @@ LOCAL_MANIFEST_FILE:= LOCAL_RENDERSCRIPT_INCLUDES:= LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE:= LOCAL_RENDERSCRIPT_CC:= +LOCAL_RENDERSCRIPT_COMPATIBILITY:= LOCAL_RENDERSCRIPT_FLAGS:= LOCAL_RENDERSCRIPT_TARGET_API:= LOCAL_BUILD_HOST_DEX:= diff --git a/core/config.mk b/core/config.mk index 1f92443..9746198 100644 --- a/core/config.mk +++ b/core/config.mk @@ -308,6 +308,7 @@ PROGUARD := external/proguard/bin/proguard.sh JAVATAGS := build/tools/java-event-log-tags.py LLVM_RS_CC := $(HOST_OUT_EXECUTABLES)/llvm-rs-cc$(HOST_EXECUTABLE_SUFFIX) LLVM_RS_LINK := $(HOST_OUT_EXECUTABLES)/llvm-rs-link$(HOST_EXECUTABLE_SUFFIX) +BCC_COMPAT := $(HOST_OUT_EXECUTABLES)/bcc_compat$(HOST_EXECUTABLE_SUFFIX) DEXOPT := $(HOST_OUT_EXECUTABLES)/dexopt$(HOST_EXECUTABLE_SUFFIX) DEXPREOPT := dalvik/tools/dex-preopt LINT := prebuilts/sdk/tools/lint diff --git a/core/definitions.mk b/core/definitions.mk index 319b63e..96cc0cc 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -819,6 +819,16 @@ $(hide) mkdir -p $(dir $@) $(hide) touch $@ endef +define transform-bc-to-so +@echo "Renderscript compatibility" +$(hide) mkdir -p $(dir $@) +$(hide) $(BCC_COMPAT) -o $(dir $@)/$(notdir $(<:.bc=.o)) -fPIC -shared \ + -rt-path $(TARGET_OUT_SHARED_LIBRARIES)/libclcore.bc $< +$(hide) $(PRIVATE_CXX) -shared -Wl,-soname,$(notdir $@) \ + $(dir $@)/$(notdir $(<:.bc=.o)) -o $@ -L prebuilts/gcc/ \ + -L $(TARGET_OUT_INTERMEDIATE_LIBRARIES) -lRSSupport -lm +endef + ########################################################### ## Commands to compile RenderScript to C++ ########################################################### diff --git a/core/java.mk b/core/java.mk index 222106c..ba7a45c 100644 --- a/core/java.mk +++ b/core/java.mk @@ -195,6 +195,26 @@ $(RenderScript_file_stamp): PRIVATE_RS_TARGET_API := $(renderscript_target_api) $(RenderScript_file_stamp): $(renderscript_sources_fullpath) $(LOCAL_RENDERSCRIPT_CC) $(transform-renderscripts-to-java-and-bc) +ifneq ($(LOCAL_RENDERSCRIPT_COMPATIBILITY),) +bc_files := $(patsubst %.fs,%.bc, $(patsubst %.rs,%.bc, $(notdir $(renderscript_sources)))) +rs_generated_bc := $(addprefix \ + $(renderscript_intermediate)/res/raw/, $(bc_files)) + +rs_compatibility_jni_libs := $(addprefix \ + $(renderscript_intermediate)/lib, \ + $(patsubst %.bc,%.so, $(bc_files))) + +$(rs_generated_bc) : $(RenderScript_file_stamp) + +$(rs_compatibility_jni_libs): $(RenderScript_file_stamp) +$(rs_compatibility_jni_libs): $(BCC_COMPAT) +$(rs_compatibility_jni_libs): PRIVATE_CXX := $(TARGET_CXX) +$(rs_compatibility_jni_libs): $(renderscript_intermediate)/lib%.so: \ + $(renderscript_intermediate)/res/raw/%.bc + $(transform-bc-to-so) + +endif + # include the dependency files (.d) generated by llvm-rs-cc. renderscript_generated_dep_files := $(addprefix $(renderscript_intermediate)/, \ $(patsubst %.fs,%.d, $(patsubst %.rs,%.d, $(notdir $(renderscript_sources))))) diff --git a/core/package.mk b/core/package.mk index 3af1afb..c0bc7d8 100644 --- a/core/package.mk +++ b/core/package.mk @@ -191,6 +191,8 @@ endif # LOCAL_SDK_VERSION endif # EMMA_INSTRUMENT_STATIC endif # LOCAL_EMMA_INSTRUMENT +rs_compatibility_jni_libs := + ################################# include $(BUILD_SYSTEM)/java.mk ################################# @@ -324,6 +326,12 @@ jni_shared_libraries := \ $(addsuffix $(so_suffix), \ $(LOCAL_JNI_SHARED_LIBRARIES))) +# Include RS dynamically-generated libraries as well +# Keep this ifneq, as the += otherwise adds spaces that need to be stripped. +ifneq ($(rs_compatibility_jni_libs),) +jni_shared_libraries += $(rs_compatibility_jni_libs) +endif + # App explicitly requires the prebuilt NDK libstlport_shared.so. # libstlport_shared.so should never go to the system image. # Instead it should be packaged into the apk. |