Loading core/base_rules.mk +16 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,12 @@ my_module_tags := $(LOCAL_MODULE_TAGS) ifeq ($(my_host_cross),true) my_module_tags := endif ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) ifdef LOCAL_2ND_ARCH_VAR_PREFIX # Don't pull in modules by tags if this is for translation TARGET_2ND_ARCH. my_module_tags := endif endif # Ninja has an implicit dependency on the command being run, and kati will # regenerate the ninja manifest if any read makefile changes, so there is no Loading Loading @@ -123,7 +129,17 @@ endif my_32_64_bit_suffix := $(if $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)IS_64_BIT),64,32) ifneq (true,$(LOCAL_UNINSTALLABLE_MODULE)) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) # When in TARGET_TRANSLATE_2ND_ARCH both TARGET_ARCH and TARGET_2ND_ARCH are 32-bit, # to avoid path conflict we force using LOCAL_MODULE_PATH_64 for the first arch. ifdef LOCAL_2ND_ARCH_VAR_PREFIX my_multilib_module_path := $(LOCAL_MODULE_PATH_32) else # ! LOCAL_2ND_ARCH_VAR_PREFIX my_multilib_module_path := $(LOCAL_MODULE_PATH_64) endif # ! LOCAL_2ND_ARCH_VAR_PREFIX else # ! TARGET_TRANSLATE_2ND_ARCH my_multilib_module_path := $(strip $(LOCAL_MODULE_PATH_$(my_32_64_bit_suffix))) endif # ! TARGET_TRANSLATE_2ND_ARCH ifdef my_multilib_module_path my_module_path := $(my_multilib_module_path) else Loading core/dex_preopt_libart.mk +2 −0 Original line number Diff line number Diff line Loading @@ -70,11 +70,13 @@ LIBART_TARGET_BOOT_DEX_FILES := $(foreach jar,$(LIBART_TARGET_BOOT_JARS),$(call my_2nd_arch_prefix := include $(BUILD_SYSTEM)/dex_preopt_libart_boot.mk ifneq ($(TARGET_TRANSLATE_2ND_ARCH),true) ifdef TARGET_2ND_ARCH my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) include $(BUILD_SYSTEM)/dex_preopt_libart_boot.mk my_2nd_arch_prefix := endif endif ######################################################################## Loading core/envsetup.mk +25 −0 Original line number Diff line number Diff line Loading @@ -324,10 +324,19 @@ TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages # Out for TARGET_2ND_ARCH TARGET_2ND_ARCH_VAR_PREFIX := $(HOST_2ND_ARCH_VAR_PREFIX) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) # With this you can reference the arm binary translation library with libfoo_arm in PRODUCT_PACKAGES. TARGET_2ND_ARCH_MODULE_SUFFIX := _$(TARGET_2ND_ARCH) else TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX) endif $(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 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS) Loading @@ -351,7 +360,11 @@ TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest endif TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache Loading @@ -375,7 +388,11 @@ TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR)/priv-app TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS) TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM) Loading @@ -391,7 +408,11 @@ TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS) TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM) Loading @@ -405,7 +426,11 @@ TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM)/app TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS) TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad Loading core/executable.mk +4 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,10 @@ endif ifneq (true,$(my_skip_this_target)) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) LOCAL_MULTILIB := first endif my_prefix := TARGET_ include $(BUILD_SYSTEM)/multilib.mk Loading core/main.mk +20 −6 Original line number Diff line number Diff line Loading @@ -582,19 +582,33 @@ CUSTOM_MODULES := \ # # Resolve the required module name to 32-bit or 64-bit variant. # Get a list of corresponding 32-bit module names, if one exists. ifneq ($(TARGET_TRANSLATE_2ND_ARCH),true) define get-32-bit-modules $(strip $(foreach m,$(1),\ $(sort $(foreach m,$(1),\ $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS),\ $(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX)))) $(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX))\ $(if $(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).CLASS),\ $(m)$(HOST_2ND_ARCH_MODULE_SUFFIX))\ )) endef # Get a list of corresponding 32-bit module names, if one exists; # otherwise return the original module name define get-32-bit-modules-if-we-can $(strip $(foreach m,$(1),\ $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS),\ $(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX), $(sort $(foreach m,$(1),\ $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS)$(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).CLASS),\ $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS),$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX)) \ $(if $(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).CLASS),$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX)),\ $(m)))) endef else # TARGET_TRANSLATE_2ND_ARCH # For binary translation config, by default only install the first arch. define get-32-bit-modules endef define get-32-bit-modules-if-we-can $(strip $(1)) endef endif # TARGET_TRANSLATE_2ND_ARCH # If a module is for a cross host os, the required modules must be for # that OS too. Loading Loading
core/base_rules.mk +16 −0 Original line number Diff line number Diff line Loading @@ -55,6 +55,12 @@ my_module_tags := $(LOCAL_MODULE_TAGS) ifeq ($(my_host_cross),true) my_module_tags := endif ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) ifdef LOCAL_2ND_ARCH_VAR_PREFIX # Don't pull in modules by tags if this is for translation TARGET_2ND_ARCH. my_module_tags := endif endif # Ninja has an implicit dependency on the command being run, and kati will # regenerate the ninja manifest if any read makefile changes, so there is no Loading Loading @@ -123,7 +129,17 @@ endif my_32_64_bit_suffix := $(if $($(LOCAL_2ND_ARCH_VAR_PREFIX)$(my_prefix)IS_64_BIT),64,32) ifneq (true,$(LOCAL_UNINSTALLABLE_MODULE)) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) # When in TARGET_TRANSLATE_2ND_ARCH both TARGET_ARCH and TARGET_2ND_ARCH are 32-bit, # to avoid path conflict we force using LOCAL_MODULE_PATH_64 for the first arch. ifdef LOCAL_2ND_ARCH_VAR_PREFIX my_multilib_module_path := $(LOCAL_MODULE_PATH_32) else # ! LOCAL_2ND_ARCH_VAR_PREFIX my_multilib_module_path := $(LOCAL_MODULE_PATH_64) endif # ! LOCAL_2ND_ARCH_VAR_PREFIX else # ! TARGET_TRANSLATE_2ND_ARCH my_multilib_module_path := $(strip $(LOCAL_MODULE_PATH_$(my_32_64_bit_suffix))) endif # ! TARGET_TRANSLATE_2ND_ARCH ifdef my_multilib_module_path my_module_path := $(my_multilib_module_path) else Loading
core/dex_preopt_libart.mk +2 −0 Original line number Diff line number Diff line Loading @@ -70,11 +70,13 @@ LIBART_TARGET_BOOT_DEX_FILES := $(foreach jar,$(LIBART_TARGET_BOOT_JARS),$(call my_2nd_arch_prefix := include $(BUILD_SYSTEM)/dex_preopt_libart_boot.mk ifneq ($(TARGET_TRANSLATE_2ND_ARCH),true) ifdef TARGET_2ND_ARCH my_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) include $(BUILD_SYSTEM)/dex_preopt_libart_boot.mk my_2nd_arch_prefix := endif endif ######################################################################## Loading
core/envsetup.mk +25 −0 Original line number Diff line number Diff line Loading @@ -324,10 +324,19 @@ TARGET_OUT_FAKE := $(PRODUCT_OUT)/fake_packages # Out for TARGET_2ND_ARCH TARGET_2ND_ARCH_VAR_PREFIX := $(HOST_2ND_ARCH_VAR_PREFIX) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) # With this you can reference the arm binary translation library with libfoo_arm in PRODUCT_PACKAGES. TARGET_2ND_ARCH_MODULE_SUFFIX := _$(TARGET_2ND_ARCH) else TARGET_2ND_ARCH_MODULE_SUFFIX := $(HOST_2ND_ARCH_MODULE_SUFFIX) endif $(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 ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES := $(target_out_shared_libraries_base)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_RENDERSCRIPT_BITCODE := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_EXECUTABLES := $(TARGET_OUT_EXECUTABLES) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_APPS := $(TARGET_OUT_APPS) Loading @@ -351,7 +360,11 @@ TARGET_OUT_DATA_FAKE := $(TARGET_OUT_DATA)/fake_packages $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_EXECUTABLES := $(TARGET_OUT_DATA_EXECUTABLES) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_SHARED_LIBRARIES := $($(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_SHARED_LIBRARIES) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_APPS := $(TARGET_OUT_DATA_APPS) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_DATA_NATIVE_TESTS := $(TARGET_OUT_DATA)/nativetest endif TARGET_OUT_CACHE := $(PRODUCT_OUT)/cache Loading @@ -375,7 +388,11 @@ TARGET_OUT_VENDOR_APPS_PRIVILEGED := $(TARGET_OUT_VENDOR)/priv-app TARGET_OUT_VENDOR_ETC := $(TARGET_OUT_VENDOR)/etc $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_EXECUTABLES := $(TARGET_OUT_VENDOR_EXECUTABLES) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_SHARED_LIBRARIES := $(TARGET_OUT_VENDOR)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_VENDOR_APPS := $(TARGET_OUT_VENDOR_APPS) TARGET_OUT_OEM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_OEM) Loading @@ -391,7 +408,11 @@ TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM)/app TARGET_OUT_OEM_ETC := $(TARGET_OUT_OEM)/etc $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_EXECUTABLES := $(TARGET_OUT_OEM_EXECUTABLES) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_SHARED_LIBRARIES := $(TARGET_OUT_OEM)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_OEM_APPS := $(TARGET_OUT_OEM_APPS) TARGET_OUT_ODM := $(PRODUCT_OUT)/$(TARGET_COPY_OUT_ODM) Loading @@ -405,7 +426,11 @@ TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM)/app TARGET_OUT_ODM_ETC := $(TARGET_OUT_ODM)/etc $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_EXECUTABLES := $(TARGET_OUT_ODM_EXECUTABLES) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib/$(TARGET_2ND_ARCH) else $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_SHARED_LIBRARIES := $(TARGET_OUT_ODM)/lib endif $(TARGET_2ND_ARCH_VAR_PREFIX)TARGET_OUT_ODM_APPS := $(TARGET_OUT_ODM_APPS) TARGET_OUT_BREAKPAD := $(PRODUCT_OUT)/breakpad Loading
core/executable.mk +4 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,10 @@ endif ifneq (true,$(my_skip_this_target)) ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true) LOCAL_MULTILIB := first endif my_prefix := TARGET_ include $(BUILD_SYSTEM)/multilib.mk Loading
core/main.mk +20 −6 Original line number Diff line number Diff line Loading @@ -582,19 +582,33 @@ CUSTOM_MODULES := \ # # Resolve the required module name to 32-bit or 64-bit variant. # Get a list of corresponding 32-bit module names, if one exists. ifneq ($(TARGET_TRANSLATE_2ND_ARCH),true) define get-32-bit-modules $(strip $(foreach m,$(1),\ $(sort $(foreach m,$(1),\ $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS),\ $(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX)))) $(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX))\ $(if $(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).CLASS),\ $(m)$(HOST_2ND_ARCH_MODULE_SUFFIX))\ )) endef # Get a list of corresponding 32-bit module names, if one exists; # otherwise return the original module name define get-32-bit-modules-if-we-can $(strip $(foreach m,$(1),\ $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS),\ $(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX), $(sort $(foreach m,$(1),\ $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS)$(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).CLASS),\ $(if $(ALL_MODULES.$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX).CLASS),$(m)$(TARGET_2ND_ARCH_MODULE_SUFFIX)) \ $(if $(ALL_MODULES.$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX).CLASS),$(m)$(HOST_2ND_ARCH_MODULE_SUFFIX)),\ $(m)))) endef else # TARGET_TRANSLATE_2ND_ARCH # For binary translation config, by default only install the first arch. define get-32-bit-modules endef define get-32-bit-modules-if-we-can $(strip $(1)) endef endif # TARGET_TRANSLATE_2ND_ARCH # If a module is for a cross host os, the required modules must be for # that OS too. Loading