diff --git a/core/base_rules.mk b/core/base_rules.mk index c256869d9..64ca5b2a3 100644 --- a/core/base_rules.mk +++ b/core/base_rules.mk @@ -111,7 +111,7 @@ ifeq ($(LOCAL_MODULE_PATH),) partition_tag := $(if $(call should-install-to-system,$(LOCAL_MODULE_TAGS)),,_DATA) endif endif - install_path_var := $(my_prefix)OUT$(partition_tag)_$(LOCAL_MODULE_CLASS) + install_path_var := $(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT$(partition_tag)_$(LOCAL_MODULE_CLASS) ifeq (true,$(LOCAL_PRIVILEGED_MODULE)) install_path_var := $(install_path_var)_PRIVILEGED endif @@ -127,15 +127,19 @@ ifneq ($(strip $(LOCAL_BUILT_MODULE)$(LOCAL_INSTALLED_MODULE)),) $(error $(LOCAL_PATH): LOCAL_BUILT_MODULE and LOCAL_INSTALLED_MODULE must not be defined by component makefiles) endif +my_register_name := $(LOCAL_MODULE) +ifdef LOCAL_2ND_ARCH_VAR_PREFIX +my_register_name := $(LOCAL_MODULE)$(TARGET_2ND_ARCH_MODULE_SUFFIX) +endif # Make sure that this IS_HOST/CLASS/MODULE combination is unique. module_id := MODULE.$(if \ - $(LOCAL_IS_HOST_MODULE),HOST,TARGET).$(LOCAL_MODULE_CLASS).$(LOCAL_MODULE) + $(LOCAL_IS_HOST_MODULE),HOST,TARGET).$(LOCAL_MODULE_CLASS).$(my_register_name) ifdef $(module_id) $(error $(LOCAL_PATH): $(module_id) already defined by $($(module_id))) endif $(module_id) := $(LOCAL_PATH) -intermediates := $(call local-intermediates-dir) +intermediates := $(call local-intermediates-dir,,$(LOCAL_2ND_ARCH_VAR_PREFIX)) intermediates.COMMON := $(call local-intermediates-dir,COMMON) ########################################################### @@ -459,8 +463,8 @@ endif # need_compile_java ########################################################### ## make clean- targets ########################################################### -cleantarget := clean-$(LOCAL_MODULE) -$(cleantarget) : PRIVATE_MODULE := $(LOCAL_MODULE) +cleantarget := clean-$(my_register_name) +$(cleantarget) : PRIVATE_MODULE := $(my_register_name) $(cleantarget) : PRIVATE_CLEAN_FILES := \ $(LOCAL_BUILT_MODULE) \ $(LOCAL_INSTALLED_MODULE) \ @@ -502,13 +506,13 @@ $(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_HOST:= $(my_host) $(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_INTERMEDIATES_DIR:= $(intermediates) # Tell the module and all of its sub-modules who it is. -$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_MODULE:= $(LOCAL_MODULE) +$(LOCAL_INTERMEDIATE_TARGETS) : PRIVATE_MODULE:= $(my_register_name) # Provide a short-hand for building this module. # We name both BUILT and INSTALLED in case # LOCAL_UNINSTALLABLE_MODULE is set. -.PHONY: $(LOCAL_MODULE) -$(LOCAL_MODULE): $(LOCAL_BUILT_MODULE) $(LOCAL_INSTALLED_MODULE) +.PHONY: $(my_register_name) +$(my_register_name): $(LOCAL_BUILT_MODULE) $(LOCAL_INSTALLED_MODULE) ########################################################### ## Module installation rule @@ -558,41 +562,45 @@ endif ifdef LOCAL_DONT_CHECK_MODULE LOCAL_CHECKED_MODULE := endif +# Don't check build the module defined for the 2nd arch +ifdef LOCAL_2ND_ARCH_VAR_PREFIX + LOCAL_CHECKED_MODULE := +endif ########################################################### ## Register with ALL_MODULES ########################################################### -ALL_MODULES += $(LOCAL_MODULE) +ALL_MODULES += $(my_register_name) # Don't use += on subvars, or else they'll end up being # recursively expanded. -ALL_MODULES.$(LOCAL_MODULE).CLASS := \ - $(ALL_MODULES.$(LOCAL_MODULE).CLASS) $(LOCAL_MODULE_CLASS) -ALL_MODULES.$(LOCAL_MODULE).PATH := \ - $(ALL_MODULES.$(LOCAL_MODULE).PATH) $(LOCAL_PATH) -ALL_MODULES.$(LOCAL_MODULE).TAGS := \ - $(ALL_MODULES.$(LOCAL_MODULE).TAGS) $(LOCAL_MODULE_TAGS) -ALL_MODULES.$(LOCAL_MODULE).CHECKED := \ - $(ALL_MODULES.$(LOCAL_MODULE).CHECKED) $(LOCAL_CHECKED_MODULE) -ALL_MODULES.$(LOCAL_MODULE).BUILT := \ - $(ALL_MODULES.$(LOCAL_MODULE).BUILT) $(LOCAL_BUILT_MODULE) -ALL_MODULES.$(LOCAL_MODULE).INSTALLED := \ - $(strip $(ALL_MODULES.$(LOCAL_MODULE).INSTALLED) $(LOCAL_INSTALLED_MODULE)) -ALL_MODULES.$(LOCAL_MODULE).REQUIRED := \ - $(ALL_MODULES.$(LOCAL_MODULE).REQUIRED) $(LOCAL_REQUIRED_MODULES) -ALL_MODULES.$(LOCAL_MODULE).EVENT_LOG_TAGS := \ - $(ALL_MODULES.$(LOCAL_MODULE).EVENT_LOG_TAGS) $(event_log_tags) -ALL_MODULES.$(LOCAL_MODULE).INTERMEDIATE_SOURCE_DIR := \ - $(ALL_MODULES.$(LOCAL_MODULE).INTERMEDIATE_SOURCE_DIR) $(LOCAL_INTERMEDIATE_SOURCE_DIR) -ALL_MODULES.$(LOCAL_MODULE).MAKEFILE := \ - $(ALL_MODULES.$(LOCAL_MODULE).MAKEFILE) $(LOCAL_MODULE_MAKEFILE) +ALL_MODULES.$(my_register_name).CLASS := \ + $(ALL_MODULES.$(my_register_name).CLASS) $(LOCAL_MODULE_CLASS) +ALL_MODULES.$(my_register_name).PATH := \ + $(ALL_MODULES.$(my_register_name).PATH) $(LOCAL_PATH) +ALL_MODULES.$(my_register_name).TAGS := \ + $(ALL_MODULES.$(my_register_name).TAGS) $(LOCAL_MODULE_TAGS) +ALL_MODULES.$(my_register_name).CHECKED := \ + $(ALL_MODULES.$(my_register_name).CHECKED) $(LOCAL_CHECKED_MODULE) +ALL_MODULES.$(my_register_name).BUILT := \ + $(ALL_MODULES.$(my_register_name).BUILT) $(LOCAL_BUILT_MODULE) +ALL_MODULES.$(my_register_name).INSTALLED := \ + $(strip $(ALL_MODULES.$(my_register_name).INSTALLED) $(LOCAL_INSTALLED_MODULE)) +ALL_MODULES.$(my_register_name).REQUIRED := \ + $(ALL_MODULES.$(my_register_name).REQUIRED) $(LOCAL_REQUIRED_MODULES) +ALL_MODULES.$(my_register_name).EVENT_LOG_TAGS := \ + $(ALL_MODULES.$(my_register_name).EVENT_LOG_TAGS) $(event_log_tags) +ALL_MODULES.$(my_register_name).INTERMEDIATE_SOURCE_DIR := \ + $(ALL_MODULES.$(my_register_name).INTERMEDIATE_SOURCE_DIR) $(LOCAL_INTERMEDIATE_SOURCE_DIR) +ALL_MODULES.$(my_register_name).MAKEFILE := \ + $(ALL_MODULES.$(my_register_name).MAKEFILE) $(LOCAL_MODULE_MAKEFILE) ifdef LOCAL_MODULE_OWNER -ALL_MODULES.$(LOCAL_MODULE).OWNER := \ - $(sort $(ALL_MODULES.$(LOCAL_MODULE).OWNER) $(LOCAL_MODULE_OWNER)) +ALL_MODULES.$(my_register_name).OWNER := \ + $(sort $(ALL_MODULES.$(my_register_name).OWNER) $(LOCAL_MODULE_OWNER)) endif -INSTALLABLE_FILES.$(LOCAL_INSTALLED_MODULE).MODULE := $(LOCAL_MODULE) +INSTALLABLE_FILES.$(LOCAL_INSTALLED_MODULE).MODULE := $(my_register_name) ########################################################### ## Take care of LOCAL_MODULE_TAGS @@ -611,7 +619,7 @@ $(foreach tag,$(LOCAL_MODULE_TAGS),\ # Add this module name to the tag list of each specified tag. $(foreach tag,$(LOCAL_MODULE_TAGS),\ - $(eval ALL_MODULE_NAME_TAGS.$(tag) += $(LOCAL_MODULE))) + $(eval ALL_MODULE_NAME_TAGS.$(tag) += $(my_register_name))) ########################################################### ## umbrella targets used to verify builds diff --git a/core/binary.mk b/core/binary.mk index 55b529cea..3f9f4a350 100644 --- a/core/binary.mk +++ b/core/binary.mk @@ -14,7 +14,7 @@ ifdef LOCAL_SDK_VERSION $(error $(LOCAL_PATH): LOCAL_SDK_VERSION cannot be used in host module) endif my_ndk_source_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/sources - my_ndk_version_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/platforms/android-$(LOCAL_SDK_VERSION)/arch-$(TARGET_ARCH) + my_ndk_version_root := $(HISTORICAL_NDK_VERSIONS_ROOT)/current/platforms/android-$(LOCAL_SDK_VERSION)/arch-$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) # Set up the NDK stl variant. Starting from NDK-r5 the c++ stl resides in a separate location. # See ndk/docs/CPLUSPLUS-SUPPORT.html @@ -35,16 +35,16 @@ ifdef LOCAL_SDK_VERSION ifneq (,$(filter stlport_%, $(LOCAL_NDK_STL_VARIANT))) my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/stlport/stlport ifeq (stlport_static,$(LOCAL_NDK_STL_VARIANT)) - my_ndk_stl_static_lib := $(my_ndk_source_root)/cxx-stl/stlport/libs/$(TARGET_CPU_ABI)/libstlport_static.a + my_ndk_stl_static_lib := $(my_ndk_source_root)/cxx-stl/stlport/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libstlport_static.a else - my_ndk_stl_shared_lib_fullpath := $(my_ndk_source_root)/cxx-stl/stlport/libs/$(TARGET_CPU_ABI)/libstlport_shared.so + my_ndk_stl_shared_lib_fullpath := $(my_ndk_source_root)/cxx-stl/stlport/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libstlport_shared.so my_ndk_stl_shared_lib := -lstlport_shared endif else # LOCAL_NDK_STL_VARIANT is gnustl_static - my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/libs/$(TARGET_CPU_ABI)/include \ + my_ndk_stl_include_path := $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/include \ $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/include - my_ndk_stl_static_lib := $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/libs/$(TARGET_CPU_ABI)/libgnustl_static.a + my_ndk_stl_static_lib := $(my_ndk_source_root)/cxx-stl/gnu-libstdc++/libs/$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)CPU_ABI)/libgnustl_static.a endif endif endif @@ -82,11 +82,27 @@ installed_shared_library_module_names := $(sort $(installed_shared_library_modul include $(BUILD_SYSTEM)/base_rules.mk ####################################### +# The following LOCAL_ variables will be modified in this file. +# Because the same LOCAL_ variables may be used to define modules for both 1st arch and 2nd arch, +# we can't modify them in place. +my_static_libraries := $(LOCAL_STATIC_LIBRARIES) +my_shared_libraries := $(LOCAL_SHARED_LIBRARIES) +my_cflags := $(LOCAL_CFLAGS) +my_cppflags := $(LOCAL_CPPFLAGS) +my_ldflags := $(LOCAL_LDFLAGS) +my_asflags := $(LOCAL_ASFLAGS) +my_cc := $(LOCAL_CC) +my_cxx := $(LOCAL_CXX) +my_c_includes := $(LOCAL_C_INCLUDES) +my_generated_sources := $(LOCAL_GENERATED_SOURCES) + + # The real dependency will be added after all Android.mks are loaded and the install paths # of the shared libraries are determined. ifdef LOCAL_INSTALLED_MODULE ifdef installed_shared_library_module_names -$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += $(LOCAL_MODULE):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(installed_shared_library_module_names)) +$(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)DEPENDENCIES_ON_SHARED_LIBRARIES += \ + $(LOCAL_MODULE):$(LOCAL_INSTALLED_MODULE):$(subst $(space),$(comma),$(installed_shared_library_module_names)) endif endif @@ -94,17 +110,17 @@ endif ifdef LOCAL_HAL_STATIC_LIBRARIES $(foreach lib, $(LOCAL_HAL_STATIC_LIBRARIES), \ $(eval b_lib := $(filter $(lib).%,$(BOARD_HAL_STATIC_LIBRARIES)))\ - $(if $(b_lib), $(eval LOCAL_STATIC_LIBRARIES += $(b_lib)),\ - $(eval LOCAL_STATIC_LIBRARIES += $(lib).default))) + $(if $(b_lib), $(eval my_static_libraries += $(b_lib)),\ + $(eval my_static_libraries += $(lib).default))) b_lib := endif ifeq ($(strip $(LOCAL_ADDRESS_SANITIZER)),true) LOCAL_CLANG := true - LOCAL_CFLAGS += $(ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS) - LOCAL_LDFLAGS += $(ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS) - LOCAL_SHARED_LIBRARIES += $(ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES) - LOCAL_STATIC_LIBRARIES += $(ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES) + my_cflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_CFLAGS) + my_ldflags += $(ADDRESS_SANITIZER_CONFIG_EXTRA_LDFLAGS) + my_shared_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_SHARED_LIBRARIES) + my_static_libraries += $(ADDRESS_SANITIZER_CONFIG_EXTRA_STATIC_LIBRARIES) endif ifeq ($(strip $(WITHOUT_CLANG)),true) @@ -113,7 +129,7 @@ endif # Add in libcompiler_rt for all regular device builds ifeq (,$(LOCAL_SDK_VERSION)$(LOCAL_IS_HOST_MODULE)$(WITHOUT_LIBCOMPILER_RT)) - LOCAL_STATIC_LIBRARIES += $(COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES) + my_static_libraries += $(COMPILER_RT_CONFIG_EXTRA_STATIC_LIBRARIES) endif my_compiler_dependencies := @@ -126,9 +142,9 @@ endif #################################################### ifneq ($(strip $(LOCAL_FDO_SUPPORT)),) ifeq ($(strip $(LOCAL_IS_HOST_MODULE)),) - LOCAL_CFLAGS += $(TARGET_FDO_CFLAGS) - LOCAL_CPPFLAGS += $(TARGET_FDO_CFLAGS) - LOCAL_LDFLAGS += $(TARGET_FDO_CFLAGS) + my_cflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_CFLAGS) + my_cppflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_CFLAGS) + my_ldflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_FDO_CFLAGS) endif endif @@ -136,7 +152,7 @@ endif ## Explicitly declare assembly-only __ASSEMBLY__ macro for ## assembly source ########################################################### -LOCAL_ASFLAGS += -D__ASSEMBLY__ +my_asflags += -D__ASSEMBLY__ ########################################################### ## Define PRIVATE_ variables from global vars @@ -146,8 +162,8 @@ ifdef LOCAL_SDK_VERSION my_target_project_includes := my_target_c_includes := $(my_ndk_stl_include_path) $(my_ndk_version_root)/usr/include else -my_target_project_includes := $(TARGET_PROJECT_INCLUDES) -my_target_c_includes := $(TARGET_C_INCLUDES) +my_target_project_includes := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_PROJECT_INCLUDES) +my_target_c_includes := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_C_INCLUDES) endif # LOCAL_SDK_VERSION ifeq ($(LOCAL_CLANG),true) @@ -156,9 +172,9 @@ my_target_global_cppflags := $(CLANG_TARGET_GLOBAL_CPPFLAGS) my_target_global_ldflags := $(CLANG_TARGET_GLOBAL_LDFLAGS) my_target_c_includes += $(CLANG_CONFIG_EXTRA_TARGET_C_INCLUDES) else -my_target_global_cflags := $(TARGET_GLOBAL_CFLAGS) -my_target_global_cppflags := $(TARGET_GLOBAL_CPPFLAGS) -my_target_global_ldflags := $(TARGET_GLOBAL_LDFLAGS) +my_target_global_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CFLAGS) +my_target_global_cppflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_CPPFLAGS) +my_target_global_ldflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_LDFLAGS) endif # LOCAL_CLANG $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_TARGET_PROJECT_INCLUDES := $(my_target_project_includes) @@ -204,40 +220,40 @@ endif ifneq ($(strip $(LOCAL_IS_HOST_MODULE)),) my_syntax_arch := host else - my_syntax_arch := $(TARGET_ARCH) + my_syntax_arch := $(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH) endif -ifeq ($(strip $(LOCAL_CC)),) +ifeq ($(strip $(my_cc)),) ifeq ($(strip $(LOCAL_CLANG)),true) - LOCAL_CC := $(CLANG) + my_cc := $(CLANG) else - LOCAL_CC := $($(my_prefix)CC) + my_cc := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)CC) endif endif ifneq ($(LOCAL_NO_STATIC_ANALYZER),true) - LOCAL_CC := $(SYNTAX_TOOLS_PREFIX)/ccc-analyzer $(my_syntax_arch) "$(LOCAL_CC)" + my_cc := $(SYNTAX_TOOLS_PREFIX)/ccc-analyzer $(my_syntax_arch) "$(my_cc)" else ifneq ($(LOCAL_NO_SYNTAX_CHECK),true) - LOCAL_CC := $(SYNTAX_TOOLS_PREFIX)/ccc-syntax $(my_syntax_arch) "$(LOCAL_CC)" + my_cc := $(SYNTAX_TOOLS_PREFIX)/ccc-syntax $(my_syntax_arch) "$(my_cc)" endif endif -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CC := $(LOCAL_CC) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CC := $(my_cc) -ifeq ($(strip $(LOCAL_CXX)),) +ifeq ($(strip $(my_cxx)),) ifeq ($(strip $(LOCAL_CLANG)),true) - LOCAL_CXX := $(CLANG_CXX) + my_cxx := $(CLANG_CXX) else - LOCAL_CXX := $($(my_prefix)CXX) + my_cxx := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)CXX) endif endif ifneq ($(LOCAL_NO_STATIC_ANALYZER),true) - LOCAL_CXX := $(SYNTAX_TOOLS_PREFIX)/cxx-analyzer $(my_syntax_arch) "$(LOCAL_CXX)" + my_cxx := $(SYNTAX_TOOLS_PREFIX)/cxx-analyzer $(my_syntax_arch) "$(my_cxx)" else ifneq ($(LOCAL_NO_SYNTAX_CHECK),true) - LOCAL_CXX := $(SYNTAX_TOOLS_PREFIX)/cxx-syntax $(my_syntax_arch) "$(LOCAL_CXX)" + my_cxx := $(SYNTAX_TOOLS_PREFIX)/cxx-syntax $(my_syntax_arch) "$(my_cxx)" endif endif -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CXX := $(LOCAL_CXX) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CXX := $(my_cxx) # TODO: support a mix of standard extensions so that this isn't necessary LOCAL_CPP_EXTENSION := $(strip $(LOCAL_CPP_EXTENSION)) @@ -250,7 +266,7 @@ $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPP_EXTENSION := $(LOCAL_CPP_EXTENSION) # up if --no-undefined is passed to the linker. ifeq ($(strip $(LOCAL_NO_DEFAULT_COMPILER_FLAGS)),) ifeq ($(strip $(LOCAL_ALLOW_UNDEFINED_SYMBOLS)),) - LOCAL_LDFLAGS := $(LOCAL_LDFLAGS) $($(my_prefix)NO_UNDEFINED_LDFLAGS) + my_ldflags += $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)NO_UNDEFINED_LDFLAGS) endif endif @@ -271,8 +287,8 @@ normal_objects_mode := $(if $(LOCAL_ARM_MODE),$(LOCAL_ARM_MODE),thumb) # Read the values from something like TARGET_arm_CFLAGS or # TARGET_thumb_CFLAGS. HOST_(arm|thumb)_CFLAGS values aren't # actually used (although they are usually empty). -arm_objects_cflags := $($(my_prefix)$(arm_objects_mode)_CFLAGS) -normal_objects_cflags := $($(my_prefix)$(normal_objects_mode)_CFLAGS) +arm_objects_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)$(arm_objects_mode)_CFLAGS) +normal_objects_cflags := $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)$(normal_objects_mode)_CFLAGS) ifeq ($(strip $(LOCAL_CLANG)),true) arm_objects_cflags := $(call convert-to-$(my_host)clang-flags,$(arm_objects_cflags)) normal_objects_cflags := $(call convert-to-$(my_host)clang-flags,$(normal_objects_cflags)) @@ -319,16 +335,16 @@ endif renderscript_flags := -Wall -Werror renderscript_flags += $(LOCAL_RENDERSCRIPT_FLAGS) -LOCAL_RENDERSCRIPT_INCLUDES := \ +renderscript_includes := \ $(TOPDIR)external/clang/lib/Headers \ $(TOPDIR)frameworks/rs/scriptc \ $(LOCAL_RENDERSCRIPT_INCLUDES) ifneq ($(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE),) -LOCAL_RENDERSCRIPT_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE) +renderscript_includes := $(LOCAL_RENDERSCRIPT_INCLUDES_OVERRIDE) endif -$(RenderScript_file_stamp): PRIVATE_RS_INCLUDES := $(LOCAL_RENDERSCRIPT_INCLUDES) +$(RenderScript_file_stamp): PRIVATE_RS_INCLUDES := $(renderscript_includes) $(RenderScript_file_stamp): PRIVATE_RS_CC := $(LOCAL_RENDERSCRIPT_CC) $(RenderScript_file_stamp): PRIVATE_RS_FLAGS := $(renderscript_flags) $(RenderScript_file_stamp): PRIVATE_RS_SOURCE_FILES := $(renderscript_sources_fullpath) @@ -349,8 +365,8 @@ rs_generated_cpps := $(addprefix \ $(rs_generated_cpps) : $(RenderScript_file_stamp) -LOCAL_C_INCLUDES += $(renderscript_intermediate) -LOCAL_GENERATED_SOURCES += $(rs_generated_cpps) +my_c_includes += $(renderscript_intermediate) +my_generated_sources += $(rs_generated_cpps) endif @@ -358,9 +374,9 @@ endif ########################################################### ## Stuff source generated from one-off tools ########################################################### -$(LOCAL_GENERATED_SOURCES): PRIVATE_MODULE := $(LOCAL_MODULE) +$(my_generated_sources): PRIVATE_MODULE := $(my_register_name) -ALL_GENERATED_SOURCES += $(LOCAL_GENERATED_SOURCES) +ALL_GENERATED_SOURCES += $(my_generated_sources) ########################################################### @@ -391,12 +407,12 @@ $(proto_generated_objects): $(proto_generated_cc_sources_dir)/%.o: $(proto_gener $(transform-$(PRIVATE_HOST)cpp-to-o) -include $(proto_generated_objects:%.o=%.P) -LOCAL_C_INCLUDES += external/protobuf/src $(proto_generated_cc_sources_dir) -LOCAL_CFLAGS += -DGOOGLE_PROTOBUF_NO_RTTI +my_c_includes += external/protobuf/src $(proto_generated_cc_sources_dir) +my_cflags += -DGOOGLE_PROTOBUF_NO_RTTI ifeq ($(LOCAL_PROTOC_OPTIMIZE_TYPE),full) -LOCAL_STATIC_LIBRARIES += libprotobuf-cpp-2.3.0-full +my_static_libraries += libprotobuf-cpp-2.3.0-full else -LOCAL_STATIC_LIBRARIES += libprotobuf-cpp-2.3.0-lite +my_static_libraries += libprotobuf-cpp-2.3.0-lite endif endif @@ -625,9 +641,9 @@ asm_objects := $(asm_objects_S) $(asm_objects_s) import_includes := $(intermediates)/import_includes import_includes_deps := $(strip \ $(foreach l, $(installed_shared_library_module_names), \ - $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(LOCAL_IS_HOST_MODULE))/export_includes) \ - $(foreach l, $(LOCAL_STATIC_LIBRARIES) $(LOCAL_WHOLE_STATIC_LIBRARIES), \ - $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(LOCAL_IS_HOST_MODULE))/export_includes)) + $(call intermediates-dir-for,SHARED_LIBRARIES,$(l),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/export_includes) \ + $(foreach l, $(my_static_libraries) $(LOCAL_WHOLE_STATIC_LIBRARIES), \ + $(call intermediates-dir-for,STATIC_LIBRARIES,$(l),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/export_includes)) $(import_includes) : $(import_includes_deps) @echo Import includes file: $@ $(hide) mkdir -p $(dir $@) && rm -f $@ @@ -660,10 +676,10 @@ normal_objects := \ all_objects := $(normal_objects) $(gen_o_objects) -LOCAL_C_INCLUDES += $(TOPDIR)$(LOCAL_PATH) $(intermediates) +my_c_includes += $(TOPDIR)$(LOCAL_PATH) $(intermediates) ifndef LOCAL_SDK_VERSION - LOCAL_C_INCLUDES += $(JNI_H_INCLUDE) + my_c_includes += $(JNI_H_INCLUDE) endif # all_objects includes gen_o_objects which were part of LOCAL_GENERATED_SOURCES; @@ -677,7 +693,9 @@ ALL_C_CPP_ETC_OBJECTS += $(all_objects) ########################################################### ## Copy headers to the install tree ########################################################### +ifndef LOCAL_2ND_ARCH_VAR_PREFIX include $(BUILD_COPY_HEADERS) +endif ########################################################### # Standard library handling. @@ -714,9 +732,9 @@ a_suffix := $($(my_prefix)STATIC_LIB_SUFFIX) ifdef LOCAL_SDK_VERSION built_shared_libraries := \ - $(addprefix $($(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \ + $(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \ $(addsuffix $(so_suffix), \ - $(LOCAL_SHARED_LIBRARIES))) + $(my_shared_libraries))) my_system_shared_libraries_fullpath := \ $(my_ndk_stl_shared_lib_fullpath) \ @@ -724,19 +742,19 @@ my_system_shared_libraries_fullpath := \ $(addsuffix $(so_suffix), $(LOCAL_SYSTEM_SHARED_LIBRARIES))) built_shared_libraries += $(my_system_shared_libraries_fullpath) -LOCAL_SHARED_LIBRARIES += $(LOCAL_SYSTEM_SHARED_LIBRARIES) +my_shared_libraries += $(LOCAL_SYSTEM_SHARED_LIBRARIES) else -LOCAL_SHARED_LIBRARIES += $(LOCAL_SYSTEM_SHARED_LIBRARIES) +my_shared_libraries += $(LOCAL_SYSTEM_SHARED_LIBRARIES) built_shared_libraries := \ - $(addprefix $($(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \ + $(addprefix $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_INTERMEDIATE_LIBRARIES)/, \ $(addsuffix $(so_suffix), \ - $(LOCAL_SHARED_LIBRARIES))) + $(my_shared_libraries))) endif built_static_libraries := \ - $(foreach lib,$(LOCAL_STATIC_LIBRARIES), \ + $(foreach lib,$(my_static_libraries), \ $(call intermediates-dir-for, \ - STATIC_LIBRARIES,$(lib),$(LOCAL_IS_HOST_MODULE))/$(lib)$(a_suffix)) + STATIC_LIBRARIES,$(lib),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/$(lib)$(a_suffix)) ifdef LOCAL_SDK_VERSION built_static_libraries += $(my_ndk_stl_static_lib) @@ -745,7 +763,7 @@ endif built_whole_libraries := \ $(foreach lib,$(LOCAL_WHOLE_STATIC_LIBRARIES), \ $(call intermediates-dir-for, \ - STATIC_LIBRARIES,$(lib),$(LOCAL_IS_HOST_MODULE))/$(lib)$(a_suffix)) + STATIC_LIBRARIES,$(lib),$(LOCAL_IS_HOST_MODULE),,$(LOCAL_2ND_ARCH_VAR_PREFIX))/$(lib)$(a_suffix)) # We don't care about installed static libraries, since the # libraries have already been linked into the module at that point. @@ -753,7 +771,7 @@ built_whole_libraries := \ # libraries that we use. (see notice_files.mk) installed_static_library_notice_file_targets := \ - $(foreach lib,$(LOCAL_STATIC_LIBRARIES) $(LOCAL_WHOLE_STATIC_LIBRARIES), \ + $(foreach lib,$(my_static_libraries) $(LOCAL_WHOLE_STATIC_LIBRARIES), \ NOTICE-$(if $(LOCAL_IS_HOST_MODULE),HOST,TARGET)-STATIC_LIBRARIES-$(lib)) # Default is -fno-rtti. @@ -766,22 +784,22 @@ endif ########################################################### ifeq ($(LOCAL_CLANG),true) -LOCAL_CFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_CFLAGS)) -LOCAL_CPPFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_CPPFLAGS)) -LOCAL_ASFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_ASFLAGS)) -LOCAL_LDFLAGS := $(call convert-to-$(my_host)clang-flags,$(LOCAL_LDFLAGS)) +my_cflags := $(call convert-to-$(my_host)clang-flags,$(my_cflags)) +my_cppflags := $(call convert-to-$(my_host)clang-flags,$(my_cppflags)) +my_asflags := $(call convert-to-$(my_host)clang-flags,$(my_asflags)) +my_ldflags := $(call convert-to-$(my_host)clang-flags,$(my_ldflags)) endif $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_YACCFLAGS := $(LOCAL_YACCFLAGS) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASFLAGS := $(LOCAL_ASFLAGS) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_ASFLAGS := $(my_asflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CONLYFLAGS := $(LOCAL_CONLYFLAGS) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CFLAGS := $(LOCAL_CFLAGS) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPPFLAGS := $(LOCAL_CPPFLAGS) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CFLAGS := $(my_cflags) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_CPPFLAGS := $(my_cppflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_RTTI_FLAG := $(LOCAL_RTTI_FLAG) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_DEBUG_CFLAGS := $(debug_cflags) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_C_INCLUDES := $(LOCAL_C_INCLUDES) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_C_INCLUDES := $(my_c_includes) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_IMPORT_INCLUDES := $(import_includes) -$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDFLAGS := $(LOCAL_LDFLAGS) +$(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDFLAGS := $(my_ldflags) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_LDLIBS := $(LOCAL_LDLIBS) $(LOCAL_INTERMEDIATE_TARGETS): PRIVATE_NO_CRT := $(LOCAL_NO_CRT) diff --git a/core/clear_vars.mk b/core/clear_vars.mk index 7b3ab31f6..9833a4a01 100644 --- a/core/clear_vars.mk +++ b/core/clear_vars.mk @@ -142,6 +142,7 @@ LOCAL_DIST_BUNDLED_BINARIES:= LOCAL_HAL_STATIC_LIBRARIES:= LOCAL_NO_SYNTAX_CHECK:= LOCAL_NO_STATIC_ANALYZER:= +LOCAL_2ND_ARCH_VAR_PREFIX:= # Trim MAKEFILE_LIST so that $(call my-dir) doesn't need to # iterate over thousands of entries every time. diff --git a/core/combo/TARGET_linux-arm.mk b/core/combo/TARGET_linux-arm.mk index c8c75aaf3..bd9349c09 100644 --- a/core/combo/TARGET_linux-arm.mk +++ b/core/combo/TARGET_linux-arm.mk @@ -180,7 +180,7 @@ ifneq ($(strip $(BUILD_FDO_INSTRUMENT)),) else # If BUILD_FDO_INSTRUMENT is turned off, then consider doing the FDO optimizations. # Set TARGET_FDO_PROFILE_PATH to set a custom profile directory for your build. - ifeq ($(strip $(TARGET_FDO_PROFILE_PATH)),) + ifeq ($(strip $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH)),) $(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH := fdo/profiles/$(TARGET_$(combo_2nd_arch_prefix)ARCH)/$(TARGET_$(combo_2nd_arch_prefix)ARCH_VARIANT) else ifeq ($(strip $(wildcard $($(combo_2nd_arch_prefix)TARGET_FDO_PROFILE_PATH))),) diff --git a/core/definitions.mk b/core/definitions.mk index fe54bcae1..37bdc3276 100644 --- a/core/definitions.mk +++ b/core/definitions.mk @@ -426,6 +426,7 @@ endef # $(2): target name, like "NotePad" # $(3): if non-empty, this is a HOST target. # $(4): if non-empty, force the intermediates to be COMMON +# $(5): if non-empty, force the intermedistes to be for the 2nd arch define intermediates-dir-for $(strip \ $(eval _idfClass := $(strip $(1))) \ @@ -435,10 +436,11 @@ $(strip \ $(if $(_idfName),, \ $(error $(LOCAL_PATH): Name not defined in call to intermediates-dir-for)) \ $(eval _idfPrefix := $(if $(strip $(3)),HOST,TARGET)) \ + $(eval _idf2ndArchPrefix := $(if $(strip $(5)),$(TARGET_2ND_ARCH_VAR_PREFIX))) \ $(if $(filter $(_idfPrefix)-$(_idfClass),$(COMMON_MODULE_CLASSES))$(4), \ $(eval _idfIntBase := $($(_idfPrefix)_OUT_COMMON_INTERMEDIATES)) \ , \ - $(eval _idfIntBase := $($(_idfPrefix)_OUT_INTERMEDIATES)) \ + $(eval _idfIntBase := $($(_idf2ndArchPrefix)$(_idfPrefix)_OUT_INTERMEDIATES)) \ ) \ $(_idfIntBase)/$(_idfClass)/$(_idfName)_intermediates \ ) @@ -448,13 +450,14 @@ endef # to determine the intermediates directory. # # $(1): if non-empty, force the intermediates to be COMMON +# $(2): if non-empty, force the intermediates to be for the 2nd arch define local-intermediates-dir $(strip \ $(if $(strip $(LOCAL_MODULE_CLASS)),, \ $(error $(LOCAL_PATH): LOCAL_MODULE_CLASS not defined before call to local-intermediates-dir)) \ $(if $(strip $(LOCAL_MODULE)),, \ $(error $(LOCAL_PATH): LOCAL_MODULE not defined before call to local-intermediates-dir)) \ - $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),$(LOCAL_IS_HOST_MODULE),$(1)) \ + $(call intermediates-dir-for,$(LOCAL_MODULE_CLASS),$(LOCAL_MODULE),$(LOCAL_IS_HOST_MODULE),$(1),$(2)) \ ) endef @@ -1135,10 +1138,11 @@ $(hide) ldir=$(PRIVATE_INTERMEDIATES_DIR)/WHOLE/$(basename $(notdir $(1)))_objs; mkdir -p $$ldir; \ filelist=; \ for f in `$(TARGET_AR) t $(1)`; do \ - $(TARGET_AR) p $(1) $$f > $$ldir/$$f; \ + $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) p $(1) $$f > $$ldir/$$f; \ filelist="$$filelist $$ldir/$$f"; \ done ; \ - $(TARGET_AR) $(TARGET_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@ $$filelist + $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \ + $(PRIVATE_ARFLAGS) $@ $$filelist endef @@ -1154,7 +1158,8 @@ define transform-o-to-static-lib @rm -f $@ $(extract-and-include-target-whole-static-libs) @echo "target StaticLib: $(PRIVATE_MODULE) ($@)" -$(call split-long-arguments,$(TARGET_AR) $(TARGET_GLOBAL_ARFLAGS) $(PRIVATE_ARFLAGS) $@,$(filter %.o, $^)) +$(call split-long-arguments,$($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_AR) $($(PRIVATE_2ND_ARCH_VAR_PREFIX)TARGET_GLOBAL_ARFLAGS) \ + $(PRIVATE_ARFLAGS) $@,$(filter %.o, $^)) endef ########################################################### diff --git a/core/envsetup.mk b/core/envsetup.mk index 99ec0cd6e..792638655 100644 --- a/core/envsetup.mk +++ b/core/envsetup.mk @@ -234,6 +234,7 @@ TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages # Out for TARGET_2ND_ARCH TARGET_2ND_ARCH_VAR_PREFIX := 2ND_ +TARGET_2ND_ARCH_MODULE_SUFFIX := _32 $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES := $(PRODUCT_OUT)/obj_$(TARGET_2ND_ARCH) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATE_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_INTERMEDIATES)/lib $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(TARGET_OUT)/lib @@ -263,6 +264,8 @@ TARGET_OUT_VENDOR_JAVA_LIBRARIES := $(TARGET_OUT_VENDOR)/framework TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR)/app TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc +$(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib + TARGET_OUT_UNSTRIPPED := $(PRODUCT_OUT)/symbols TARGET_OUT_EXECUTABLES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/bin TARGET_OUT_SHARED_LIBRARIES_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)/system/lib diff --git a/core/notice_files.mk b/core/notice_files.mk index 5af01137f..e63cd84b5 100644 --- a/core/notice_files.mk +++ b/core/notice_files.mk @@ -35,7 +35,7 @@ else # We can't use xxx_OUT_STATIC_LIBRARIES because it points into # device-obj or host-obj. module_installed_filename := \ - $(patsubst $(PRODUCT_OUT)%,%,$($(my_prefix)OUT_SHARED_LIBRARIES))/$(notdir $(LOCAL_BUILT_MODULE)) + $(patsubst $(PRODUCT_OUT)%,%,$($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)OUT_SHARED_LIBRARIES))/$(notdir $(LOCAL_BUILT_MODULE)) else ifeq ($(LOCAL_MODULE_CLASS),JAVA_LIBRARIES) # Stick the static java libraries with the regular java libraries. diff --git a/core/static_library.mk b/core/static_library.mk index 525806b71..231355345 100644 --- a/core/static_library.mk +++ b/core/static_library.mk @@ -1,33 +1,17 @@ -########################################################### -## Standard rules for building a static library. -## -## Additional inputs from base_rules.make: -## None. -## -## LOCAL_MODULE_SUFFIX will be set for you. -########################################################### +include $(BUILD_SYSTEM)/static_library_internal.mk -ifeq ($(strip $(LOCAL_MODULE_CLASS)),) -LOCAL_MODULE_CLASS := STATIC_LIBRARIES -endif -ifeq ($(strip $(LOCAL_MODULE_SUFFIX)),) -LOCAL_MODULE_SUFFIX := .a -endif -LOCAL_UNINSTALLABLE_MODULE := true -ifneq ($(strip $(LOCAL_MODULE_STEM)$(LOCAL_BUILT_MODULE_STEM)),) -$(error $(LOCAL_PATH): Cannot set module stem for a library) -endif +ifdef TARGET_2ND_ARCH -include $(BUILD_SYSTEM)/binary.mk +OVERRIDE_BUILT_MODULE_PATH := +LOCAL_BUILT_MODULE := +LOCAL_INSTALLED_MODULE := +LOCAL_MODULE_STEM := +LOCAL_BUILT_MODULE_STEM := +LOCAL_INSTALLED_MODULE_STEM := +LOCAL_INTERMEDIATE_TARGETS := + +LOCAL_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) +include $(BUILD_SYSTEM)/static_library_internal.mk +LOCAL_2ND_ARCH_VAR_PREFIX := -ifeq ($(LOCAL_RAW_STATIC_LIBRARY),true) -LOCAL_RAW_STATIC_LIBRARY:= -$(all_objects) : PRIVATE_TARGET_PROJECT_INCLUDES := -$(all_objects) : PRIVATE_TARGET_C_INCLUDES := -$(all_objects) : PRIVATE_TARGET_GLOBAL_CFLAGS := -$(all_objects) : PRIVATE_TARGET_GLOBAL_CPPFLAGS := endif - -$(LOCAL_BUILT_MODULE): $(built_whole_libraries) -$(LOCAL_BUILT_MODULE): $(all_objects) - $(transform-o-to-static-lib) diff --git a/core/static_library_internal.mk b/core/static_library_internal.mk new file mode 100644 index 000000000..2d3468c94 --- /dev/null +++ b/core/static_library_internal.mk @@ -0,0 +1,34 @@ +########################################################### +## Standard rules for building a static library. +## +## Additional inputs from base_rules.make: +## None. +## +## LOCAL_MODULE_SUFFIX will be set for you. +########################################################### + +ifeq ($(strip $(LOCAL_MODULE_CLASS)),) +LOCAL_MODULE_CLASS := STATIC_LIBRARIES +endif +ifeq ($(strip $(LOCAL_MODULE_SUFFIX)),) +LOCAL_MODULE_SUFFIX := .a +endif +LOCAL_UNINSTALLABLE_MODULE := true +ifneq ($(strip $(LOCAL_MODULE_STEM)$(LOCAL_BUILT_MODULE_STEM)),) +$(error $(LOCAL_PATH): Cannot set module stem for a library) +endif + +include $(BUILD_SYSTEM)/binary.mk + +ifeq ($(LOCAL_RAW_STATIC_LIBRARY),true) +LOCAL_RAW_STATIC_LIBRARY:= +$(all_objects) : PRIVATE_TARGET_PROJECT_INCLUDES := +$(all_objects) : PRIVATE_TARGET_C_INCLUDES := +$(all_objects) : PRIVATE_TARGET_GLOBAL_CFLAGS := +$(all_objects) : PRIVATE_TARGET_GLOBAL_CPPFLAGS := +endif + +$(LOCAL_BUILT_MODULE): PRIVATE_2ND_ARCH_VAR_PREFIX := $(LOCAL_2ND_ARCH_VAR_PREFIX) +$(LOCAL_BUILT_MODULE) : $(built_whole_libraries) +$(LOCAL_BUILT_MODULE) : $(all_objects) + $(transform-o-to-static-lib)