From 1e047d39a5be0b0f81aaad8db1d9dc7d7e32b1d6 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Mon, 12 Mar 2018 18:23:15 -0700 Subject: [PATCH] Move java renderscript support to java_renderscript.mk Move java renderscript support to java_renderscript.mk in preparation to moving it before aapt. Filter *.rs files out of LOCAL_SRC_FILES and forbid them in java_common.mk so that using *.rs files is an error if java_renderscript.mk was not included. Bug: 73885582 Test: m checkbuild Change-Id: Ib37ce89daee58b025dec98f733c5a08149641afd Merged-In: Ib37ce89daee58b025dec98f733c5a08149641afd (cherry picked from commit 71822d6fb96facf4907a68d5401d7df22f3dc144) --- core/java.mk | 150 +----------------------------------- core/java_common.mk | 2 +- core/java_renderscript.mk | 155 ++++++++++++++++++++++++++++++++++++++ 3 files changed, 157 insertions(+), 150 deletions(-) create mode 100644 core/java_renderscript.mk diff --git a/core/java.mk b/core/java.mk index aa63d5ad7..6ee2c043d 100644 --- a/core/java.mk +++ b/core/java.mk @@ -109,155 +109,7 @@ LOCAL_INTERMEDIATE_SOURCE_DIR := $(intermediates.COMMON)/src ############################################################### ## .rs files: RenderScript sources to .java files and .bc files ############################################################### -renderscript_sources := $(filter %.rs,$(LOCAL_SRC_FILES)) -rs_generated_res_zip := -rs_generated_src_jar := -rs_compatibility_jni_libs := -ifneq ($(renderscript_sources),) -renderscript_sources_fullpath := $(addprefix $(LOCAL_PATH)/, $(renderscript_sources)) -renderscript_intermediate.COMMON := $(intermediates.COMMON)/renderscript -rs_generated_res_zip := $(renderscript_intermediate.COMMON)/res.zip -rs_generated_src_jar := $(renderscript_intermediate.COMMON)/rs.srcjar - -LOCAL_SRCJARS += $(rs_generated_src_jar) - -# Defaulting to an empty string uses the latest available platform SDK. -renderscript_target_api := - -ifneq (,$(LOCAL_RENDERSCRIPT_TARGET_API)) - renderscript_target_api := $(LOCAL_RENDERSCRIPT_TARGET_API) -else - ifneq (,$(LOCAL_SDK_VERSION)) - # Set target-api for LOCAL_SDK_VERSIONs other than current. - ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION))) - renderscript_target_api := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) - endif - endif # LOCAL_SDK_VERSION is set -endif # LOCAL_RENDERSCRIPT_TARGET_API is set - -# For 64-bit, we always have to upgrade to at least 21 for compat build. -ifneq ($(LOCAL_RENDERSCRIPT_COMPATIBILITY),) - ifeq ($(TARGET_IS_64_BIT),true) - ifneq ($(filter $(RSCOMPAT_32BIT_ONLY_API_LEVELS),$(renderscript_target_api)),) - renderscript_target_api := 21 - endif - endif -endif - -ifeq ($(LOCAL_RENDERSCRIPT_CC),) -LOCAL_RENDERSCRIPT_CC := $(LLVM_RS_CC) -endif - -# Turn on all warnings and warnings as errors for RS compiles. -# This can be disabled with LOCAL_RENDERSCRIPT_FLAGS := -Wno-error -renderscript_flags := -Wall -Werror -renderscript_flags += $(LOCAL_RENDERSCRIPT_FLAGS) - -# prepend the RenderScript system include path -ifneq ($(filter-out current system_current test_current core_current,$(LOCAL_SDK_VERSION))$(if $(TARGET_BUILD_APPS),$(filter current system_current test_current,$(LOCAL_SDK_VERSION))),) -# if a numeric LOCAL_SDK_VERSION, or current LOCAL_SDK_VERSION with TARGET_BUILD_APPS -LOCAL_RENDERSCRIPT_INCLUDES := \ - $(HISTORICAL_SDK_VERSIONS_ROOT)/renderscript/clang-include \ - $(HISTORICAL_SDK_VERSIONS_ROOT)/renderscript/include \ - $(LOCAL_RENDERSCRIPT_INCLUDES) -else -LOCAL_RENDERSCRIPT_INCLUDES := \ - $(TOPDIR)external/clang/lib/Headers \ - $(TOPDIR)frameworks/rs/script_api/include \ - $(LOCAL_RENDERSCRIPT_INCLUDES) -endif - -ifneq ($(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE),) -LOCAL_RENDERSCRIPT_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE) -endif - -bc_files := $(patsubst %.rs,%.bc, $(notdir $(renderscript_sources))) -bc_dep_files := $(addprefix $(renderscript_intermediate.COMMON)/,$(patsubst %.bc,%.d,$(bc_files))) - -$(rs_generated_src_jar): PRIVATE_RS_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES) -$(rs_generated_src_jar): PRIVATE_RS_CC := $(LOCAL_RENDERSCRIPT_CC) -$(rs_generated_src_jar): PRIVATE_RS_FLAGS := $(renderscript_flags) -$(rs_generated_src_jar): PRIVATE_RS_SOURCE_FILES := $(renderscript_sources_fullpath) -$(rs_generated_src_jar): PRIVATE_RS_OUTPUT_DIR := $(renderscript_intermediate.COMMON) -$(rs_generated_src_jar): PRIVATE_RS_TARGET_API := $(renderscript_target_api) -$(rs_generated_src_jar): PRIVATE_DEP_FILES := $(bc_dep_files) -$(rs_generated_src_jar): PRIVATE_RS_OUTPUT_RES_ZIP := $(rs_generated_res_zip) -$(rs_generated_src_jar): .KATI_IMPLICIT_OUTPUTS := $(rs_generated_res_zip) -$(rs_generated_src_jar): $(renderscript_sources_fullpath) $(LOCAL_RENDERSCRIPT_CC) $(SOONG_ZIP) - $(transform-renderscripts-to-java-and-bc) - -# include the dependency files (.d/.P) generated by llvm-rs-cc. -$(call include-depfile,$(rs_generated_src_jar).P,$(rs_generated_src_jar)) - -ifneq ($(LOCAL_RENDERSCRIPT_COMPATIBILITY),) - - -ifeq ($(filter $(RSCOMPAT_32BIT_ONLY_API_LEVELS),$(renderscript_target_api)),) -ifeq ($(TARGET_IS_64_BIT),true) -renderscript_intermediate.bc_folder := $(renderscript_intermediate.COMMON)/res/raw/bc64/ -else -renderscript_intermediate.bc_folder := $(renderscript_intermediate.COMMON)/res/raw/bc32/ -endif -else -renderscript_intermediate.bc_folder := $(renderscript_intermediate.COMMON)/res/raw/ -endif - -rs_generated_bc := $(addprefix \ - $(renderscript_intermediate.bc_folder), $(bc_files)) - -renderscript_intermediate := $(intermediates)/renderscript - -# We don't need the .so files in bundled branches -# Prevent these from showing up on the device -# One exception is librsjni.so, which is needed for -# both native path and compat path. -rs_jni_lib := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/librsjni.so -LOCAL_JNI_SHARED_LIBRARIES += librsjni - -ifneq (,$(TARGET_BUILD_APPS)$(FORCE_BUILD_RS_COMPAT)) - -rs_compatibility_jni_libs := $(addprefix \ - $(renderscript_intermediate)/librs., \ - $(patsubst %.bc,%.so, $(bc_files))) - -$(rs_generated_src_jar): .KATI_IMPLICIT_OUTPUTS += $(rs_generated_bc) - -rs_support_lib := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libRSSupport.so -LOCAL_JNI_SHARED_LIBRARIES += libRSSupport - -rs_support_io_lib := -# check if the target api level support USAGE_IO -ifeq ($(filter $(RSCOMPAT_NO_USAGEIO_API_LEVELS),$(renderscript_target_api)),) -rs_support_io_lib := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libRSSupportIO.so -LOCAL_JNI_SHARED_LIBRARIES += libRSSupportIO -endif - -my_arch := $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) -ifneq (,$(filter arm64 mips64 x86_64,$(my_arch))) - my_min_sdk_version := 21 -else - my_min_sdk_version := $(MIN_SUPPORTED_SDK_VERSION) -endif - -$(rs_compatibility_jni_libs): $(RS_PREBUILT_CLCORE) \ - $(rs_support_lib) $(rs_support_io_lib) $(rs_jni_lib) $(rs_compiler_rt) -$(rs_compatibility_jni_libs): $(BCC_COMPAT) -$(rs_compatibility_jni_libs): PRIVATE_CXX := $(CXX_WRAPPER) $(TARGET_CXX) -$(rs_compatibility_jni_libs): PRIVATE_SDK_VERSION := $(my_min_sdk_version) -$(rs_compatibility_jni_libs): $(renderscript_intermediate)/librs.%.so: \ - $(renderscript_intermediate.bc_folder)%.bc \ - $(SOONG_OUT_DIR)/ndk.timestamp - $(transform-bc-to-so) - -endif - -endif - -LOCAL_INTERMEDIATE_TARGETS += $(rs_generated_src_jar) -# Make sure the generated resource will be added to the apk. -LOCAL_RESOURCE_DIR := $(renderscript_intermediate.COMMON)/res $(LOCAL_RESOURCE_DIR) -endif - +include $(BUILD_SYSTEM)/java_renderscript.mk ########################################################### ## AIDL: Compile .aidl files to .java diff --git a/core/java_common.mk b/core/java_common.mk index dea0435dc..44ee4b234 100644 --- a/core/java_common.mk +++ b/core/java_common.mk @@ -177,7 +177,7 @@ endif # java_resource_file_groups ##################################### ## Warn if there is unrecognized file in LOCAL_SRC_FILES. my_unknown_src_files := $(filter-out \ - %.java %.aidl %.proto %.logtags %.rs, \ + %.java %.aidl %.proto %.logtags, \ $(LOCAL_SRC_FILES) $(LOCAL_INTERMEDIATE_SOURCES) $(LOCAL_GENERATED_SOURCES)) ifneq ($(my_unknown_src_files),) $(warning $(LOCAL_MODULE_MAKEFILE): $(LOCAL_MODULE): Unused source files: $(my_unknown_src_files)) diff --git a/core/java_renderscript.mk b/core/java_renderscript.mk new file mode 100644 index 000000000..191b3be6a --- /dev/null +++ b/core/java_renderscript.mk @@ -0,0 +1,155 @@ +############################################################### +## Renderscript support for java +## Adds rules to convert .rs files to .java and .bc files +############################################################### + +renderscript_sources := $(filter %.rs,$(LOCAL_SRC_FILES)) +LOCAL_SRC_FILES := $(filter-out %.rs,$(LOCAL_SRC_FILES)) + +rs_generated_res_zip := +rs_generated_src_jar := +rs_compatibility_jni_libs := +ifneq ($(renderscript_sources),) +renderscript_sources_fullpath := $(addprefix $(LOCAL_PATH)/, $(renderscript_sources)) +renderscript_intermediate.COMMON := $(intermediates.COMMON)/renderscript +rs_generated_res_zip := $(renderscript_intermediate.COMMON)/res.zip +rs_generated_src_jar := $(renderscript_intermediate.COMMON)/rs.srcjar + +LOCAL_SRCJARS += $(rs_generated_src_jar) + +# Defaulting to an empty string uses the latest available platform SDK. +renderscript_target_api := + +ifneq (,$(LOCAL_RENDERSCRIPT_TARGET_API)) + renderscript_target_api := $(LOCAL_RENDERSCRIPT_TARGET_API) +else + ifneq (,$(LOCAL_SDK_VERSION)) + # Set target-api for LOCAL_SDK_VERSIONs other than current. + ifneq (,$(filter-out current system_current test_current core_current, $(LOCAL_SDK_VERSION))) + renderscript_target_api := $(call get-numeric-sdk-version,$(LOCAL_SDK_VERSION)) + endif + endif # LOCAL_SDK_VERSION is set +endif # LOCAL_RENDERSCRIPT_TARGET_API is set + +# For 64-bit, we always have to upgrade to at least 21 for compat build. +ifneq ($(LOCAL_RENDERSCRIPT_COMPATIBILITY),) + ifeq ($(TARGET_IS_64_BIT),true) + ifneq ($(filter $(RSCOMPAT_32BIT_ONLY_API_LEVELS),$(renderscript_target_api)),) + renderscript_target_api := 21 + endif + endif +endif + +ifeq ($(LOCAL_RENDERSCRIPT_CC),) +LOCAL_RENDERSCRIPT_CC := $(LLVM_RS_CC) +endif + +# Turn on all warnings and warnings as errors for RS compiles. +# This can be disabled with LOCAL_RENDERSCRIPT_FLAGS := -Wno-error +renderscript_flags := -Wall -Werror +renderscript_flags += $(LOCAL_RENDERSCRIPT_FLAGS) + +# prepend the RenderScript system include path +ifneq ($(filter-out current system_current test_current core_current,$(LOCAL_SDK_VERSION))$(if $(TARGET_BUILD_APPS),$(filter current system_current test_current,$(LOCAL_SDK_VERSION))),) +# if a numeric LOCAL_SDK_VERSION, or current LOCAL_SDK_VERSION with TARGET_BUILD_APPS +LOCAL_RENDERSCRIPT_INCLUDES := \ + $(HISTORICAL_SDK_VERSIONS_ROOT)/renderscript/clang-include \ + $(HISTORICAL_SDK_VERSIONS_ROOT)/renderscript/include \ + $(LOCAL_RENDERSCRIPT_INCLUDES) +else +LOCAL_RENDERSCRIPT_INCLUDES := \ + $(TOPDIR)external/clang/lib/Headers \ + $(TOPDIR)frameworks/rs/script_api/include \ + $(LOCAL_RENDERSCRIPT_INCLUDES) +endif + +ifneq ($(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE),) +LOCAL_RENDERSCRIPT_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE) +endif + +bc_files := $(patsubst %.rs,%.bc, $(notdir $(renderscript_sources))) +bc_dep_files := $(addprefix $(renderscript_intermediate.COMMON)/,$(patsubst %.bc,%.d,$(bc_files))) + +$(rs_generated_src_jar): PRIVATE_RS_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES) +$(rs_generated_src_jar): PRIVATE_RS_CC := $(LOCAL_RENDERSCRIPT_CC) +$(rs_generated_src_jar): PRIVATE_RS_FLAGS := $(renderscript_flags) +$(rs_generated_src_jar): PRIVATE_RS_SOURCE_FILES := $(renderscript_sources_fullpath) +$(rs_generated_src_jar): PRIVATE_RS_OUTPUT_DIR := $(renderscript_intermediate.COMMON) +$(rs_generated_src_jar): PRIVATE_RS_TARGET_API := $(renderscript_target_api) +$(rs_generated_src_jar): PRIVATE_DEP_FILES := $(bc_dep_files) +$(rs_generated_src_jar): PRIVATE_RS_OUTPUT_RES_ZIP := $(rs_generated_res_zip) +$(rs_generated_src_jar): .KATI_IMPLICIT_OUTPUTS := $(rs_generated_res_zip) +$(rs_generated_src_jar): $(renderscript_sources_fullpath) $(LOCAL_RENDERSCRIPT_CC) $(SOONG_ZIP) + $(transform-renderscripts-to-java-and-bc) + +# include the dependency files (.d/.P) generated by llvm-rs-cc. +$(call include-depfile,$(rs_generated_src_jar).P,$(rs_generated_src_jar)) + +ifneq ($(LOCAL_RENDERSCRIPT_COMPATIBILITY),) + + +ifeq ($(filter $(RSCOMPAT_32BIT_ONLY_API_LEVELS),$(renderscript_target_api)),) +ifeq ($(TARGET_IS_64_BIT),true) +renderscript_intermediate.bc_folder := $(renderscript_intermediate.COMMON)/res/raw/bc64/ +else +renderscript_intermediate.bc_folder := $(renderscript_intermediate.COMMON)/res/raw/bc32/ +endif +else +renderscript_intermediate.bc_folder := $(renderscript_intermediate.COMMON)/res/raw/ +endif + +rs_generated_bc := $(addprefix \ + $(renderscript_intermediate.bc_folder), $(bc_files)) + +renderscript_intermediate := $(intermediates)/renderscript + +# We don't need the .so files in bundled branches +# Prevent these from showing up on the device +# One exception is librsjni.so, which is needed for +# both native path and compat path. +rs_jni_lib := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/librsjni.so +LOCAL_JNI_SHARED_LIBRARIES += librsjni + +ifneq (,$(TARGET_BUILD_APPS)$(FORCE_BUILD_RS_COMPAT)) + +rs_compatibility_jni_libs := $(addprefix \ + $(renderscript_intermediate)/librs., \ + $(patsubst %.bc,%.so, $(bc_files))) + +$(rs_generated_src_jar): .KATI_IMPLICIT_OUTPUTS += $(rs_generated_bc) + +rs_support_lib := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libRSSupport.so +LOCAL_JNI_SHARED_LIBRARIES += libRSSupport + +rs_support_io_lib := +# check if the target api level support USAGE_IO +ifeq ($(filter $(RSCOMPAT_NO_USAGEIO_API_LEVELS),$(renderscript_target_api)),) +rs_support_io_lib := $(TARGET_OUT_INTERMEDIATE_LIBRARIES)/libRSSupportIO.so +LOCAL_JNI_SHARED_LIBRARIES += libRSSupportIO +endif + +my_arch := $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) +ifneq (,$(filter arm64 mips64 x86_64,$(my_arch))) + my_min_sdk_version := 21 +else + my_min_sdk_version := $(MIN_SUPPORTED_SDK_VERSION) +endif + +$(rs_compatibility_jni_libs): $(RS_PREBUILT_CLCORE) \ + $(rs_support_lib) $(rs_support_io_lib) $(rs_jni_lib) $(rs_compiler_rt) +$(rs_compatibility_jni_libs): $(BCC_COMPAT) +$(rs_compatibility_jni_libs): PRIVATE_CXX := $(CXX_WRAPPER) $(TARGET_CXX) +$(rs_compatibility_jni_libs): PRIVATE_SDK_VERSION := $(my_min_sdk_version) +$(rs_compatibility_jni_libs): $(renderscript_intermediate)/librs.%.so: \ + $(renderscript_intermediate.bc_folder)%.bc \ + $(SOONG_OUT_DIR)/ndk.timestamp + $(transform-bc-to-so) + +endif + +endif + +LOCAL_INTERMEDIATE_TARGETS += $(rs_generated_src_jar) +# Make sure the generated resource will be added to the apk. +LOCAL_RESOURCE_DIR := $(renderscript_intermediate.COMMON)/res $(LOCAL_RESOURCE_DIR) +endif