Loading core/clear_vars.mk +1 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,7 @@ LOCAL_RENDERSCRIPT_SKIP_INSTALL:= LOCAL_RENDERSCRIPT_TARGET_API:= LOCAL_BUILD_HOST_DEX:= LOCAL_DEX_PREOPT:= # '',true,false,nostripping LOCAL_DEX_PREOPT_IMAGE:= LOCAL_DEX_PREOPT_IMAGE_LOCATION:= LOCAL_PROTOC_OPTIMIZE_TYPE:= # lite(default),micro,nano,full LOCAL_PROTOC_FLAGS:= LOCAL_PROTO_JAVA_OUTPUT_PARAMS:= Loading core/config.mk +8 −11 Original line number Diff line number Diff line Loading @@ -530,22 +530,19 @@ TARGET_CPU_SMP ?= true DEX2OAT_TARGET_ARCH := $(TARGET_ARCH) DEX2OAT_TARGET_CPU_VARIANT := $(TARGET_CPU_VARIANT) DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := default ifneq (,$(filter $(DEX2OAT_TARGET_CPU_VARIANT),cortex-a7 cortex-a15 krait denver)) DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := div endif # If for a 64bit build we have a 2nd architecture but the zygote isn't 64bit, # assume DEX2OAT should DEXPREOPT for the 2nd architecture. ifdef TARGET_2ND_ARCH ifeq (true,$(TARGET_IS_64_BIT)) ifeq ($(filter ro.zygote=zygote64,$(PRODUCT_DEFAULT_PROPERTY_OVERRIDES)),) DEX2OAT_TARGET_ARCH := $(TARGET_2ND_ARCH) DEX2OAT_TARGET_CPU_VARIANT := $(TARGET_2ND_CPU_VARIANT) endif $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH := $(TARGET_2ND_ARCH) $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT := $(TARGET_2ND_CPU_VARIANT) $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := default ifneq (,$(filter $($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT),cortex-a7 cortex-a15 krait denver)) $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := div endif endif ifneq (,$(filter $(DEX2OAT_TARGET_CPU_VARIANT),cortex-a7 cortex-a15 krait denver)) DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := div endif # define clang/llvm tools and global flags include $(BUILD_SYSTEM)/clang/config.mk Loading core/dex_preopt.mk +9 −8 Original line number Diff line number Diff line Loading @@ -49,25 +49,26 @@ endif include $(BUILD_SYSTEM)/dex_preopt_libart.mk # Define dexpreopt-one-file based on current default runtime. # $(1): the boot image to use (unused for libdvm) # $(2): the input .jar or .apk file # $(3): the input .jar or .apk target location (unused for libdvm) # $(4): the output .odex file # $(1): the input .jar or .apk file # $(2): the output .odex file ifeq ($(DALVIK_VM_LIB),libdvm.so) define dexpreopt-one-file $(call dexopt-one-file,$(2),$(4)) $(call dexopt-one-file,$(1),$(2)) endef DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS := $(DEXOPT_DEPENDENCY) DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $(DEXPREOPT_BOOT_ODEXS) else define dexpreopt-one-file $(call dex2oat-one-file,$(1),$(2),$(3),$(4)) $(call dex2oat-one-file,$(1),$(2)) endef DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS := $(DEX2OATD_DEPENDENCY) DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $(DEFAULT_DEX_PREOPT_BUILT_IMAGE) endif DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $(DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) ifdef TARGET_2ND_ARCH $(TARGET_2ND_ARCH_VAR_PREFIX)DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $($(TARGET_2ND_ARCH_VAR_PREFIX)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) endif # TARGET_2ND_ARCH endif # DALVIK_VM_LIB else $(warning No DALVIK_VM_LIB, disable dexpreopt.) WITH_DEXPREOPT := false Loading core/dex_preopt_libart.mk +32 −44 Original line number Diff line number Diff line Loading @@ -23,20 +23,6 @@ DEX2OATD_DEPENDENCY += $(LIBARTD_COMPILER) PRELOADED_CLASSES := frameworks/base/preloaded-classes LIBART_BOOT_IMAGE := /$(DEXPREOPT_BOOT_JAR_DIR)/boot-$(DEX2OAT_TARGET_ARCH).art DEFAULT_DEX_PREOPT_BUILT_IMAGE := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/boot-$(DEX2OAT_TARGET_ARCH).art DEFAULT_DEX_PREOPT_INSTALLED_IMAGE := ifneq ($(PRODUCT_DEX_PREOPT_IMAGE_IN_DATA),true) DEFAULT_DEX_PREOPT_INSTALLED_IMAGE := $(PRODUCT_OUT)$(LIBART_BOOT_IMAGE) # The rule to install boot.art and boot.oat $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) : $(DEFAULT_DEX_PREOPT_BUILT_IMAGE) | $(ACP) $(call copy-file-to-target) $(hide) $(ACP) -fp $(patsubst %.art,%.oat,$<) $(patsubst %.art,%.oat,$@) endif # start of image reserved address space LIBART_IMG_HOST_BASE_ADDRESS := 0x60000000 Loading @@ -49,48 +35,50 @@ endif ######################################################################## # The full system boot classpath # Returns the path to the .odex file # $(1): the arch name. # $(2): the full path (including file name) of the corresponding .jar or .apk. define get-odex-file-path $(dir $(2))$(1)/$(basename $(notdir $(2))).odex endef # Returns the path to the image file (such as "/system/framework/<arch>/boot.art" # $(1): the arch name (such as "arm") # $(2): the image location (such as "/system/framework/boot.art") define get-image-file-path $(dir $(2))$(1)/$(notdir $(2)) endef # note we use core-libart.jar in place of core.jar for ART. LIBART_TARGET_BOOT_JARS := $(patsubst core, core-libart,$(DEXPREOPT_BOOT_JARS_MODULES)) LIBART_TARGET_BOOT_DEX_LOCATIONS := $(foreach jar,$(LIBART_TARGET_BOOT_JARS),/$(DEXPREOPT_BOOT_JAR_DIR)/$(jar).jar) LIBART_TARGET_BOOT_DEX_FILES := $(foreach jar,$(LIBART_TARGET_BOOT_JARS),$(call intermediates-dir-for,JAVA_LIBRARIES,$(jar),,COMMON)/javalib.jar) # The .oat with symbols LIBART_TARGET_BOOT_OAT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)$(patsubst %.art,%.oat,$(LIBART_BOOT_IMAGE)) # Use dex2oat debug version for better error reporting $(DEFAULT_DEX_PREOPT_BUILT_IMAGE): $(LIBART_TARGET_BOOT_DEX_FILES) $(DEX2OATD_DEPENDENCY) @echo "target dex2oat: $@ ($?)" @mkdir -p $(dir $@) @mkdir -p $(dir $(LIBART_TARGET_BOOT_OAT_UNSTRIPPED)) $(hide) $(DEX2OATD) --runtime-arg -Xms256m --runtime-arg -Xmx256m --image-classes=$(PRELOADED_CLASSES) \ $(addprefix --dex-file=,$(LIBART_TARGET_BOOT_DEX_FILES)) \ $(addprefix --dex-location=,$(LIBART_TARGET_BOOT_DEX_LOCATIONS)) \ --oat-symbols=$(LIBART_TARGET_BOOT_OAT_UNSTRIPPED) \ --oat-file=$(patsubst %.art,%.oat,$@) \ --oat-location=$(patsubst %.art,%.oat,$(LIBART_BOOT_IMAGE)) \ --image=$@ --base=$(LIBART_IMG_TARGET_BASE_ADDRESS) \ --instruction-set=$(DEX2OAT_TARGET_ARCH) \ --instruction-set-features=$(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) \ --android-root=$(PRODUCT_OUT)/system my_2nd_arch_prefix := include $(BUILD_SYSTEM)/dex_preopt_libart_boot.mk 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 ######################################################################## # For a single jar or APK # $(1): the boot image to use # $(2): the input .jar or .apk file # $(3): the input .jar or .apk target location # $(4): the output .odex file # $(1): the input .jar or .apk file # $(2): the output .odex file define dex2oat-one-file $(hide) rm -f $(4) $(hide) mkdir -p $(dir $(4)) $(hide) rm -f $(2) $(hide) mkdir -p $(dir $(2)) $(hide) $(DEX2OATD) \ --runtime-arg -Xms64m --runtime-arg -Xmx64m \ --boot-image=$(1) \ --dex-file=$(2) \ --dex-location=$(3) \ --oat-file=$(4) \ --boot-image=$(PRIVATE_DEX_PREOPT_IMAGE_LOCATION) \ --dex-file=$(1) \ --dex-location=$(PRIVATE_DEX_LOCATION) \ --oat-file=$(2) \ --android-root=$(PRODUCT_OUT)/system \ --instruction-set=$(DEX2OAT_TARGET_ARCH) \ --instruction-set-features=$(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) --instruction-set=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH) \ --instruction-set-features=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) endef core/dex_preopt_libart_boot.mk 0 → 100644 +55 −0 Original line number Diff line number Diff line # Rules to build boot.art # Input variables: # my_2nd_arch_prefix: indicates if this is to build for the 2nd arch. # The image "location" is a symbolic path that with multiarchitecture # support doesn't really exist on the device. Typically it is # /system/framework/boot.art and should be the same for all supported # architectures on the device. The concrete architecture specific # content actually ends up in a "filename" that contains an # architecture specific directory name such as arm, arm64, mips, # mips64, x86, x86_64. # # Here are some example values for an x86_64 / x86 configuration: # # DEFAULT_DEX_PREOPT_BUILT_IMAGE_LOCATION=out/target/product/generic_x86_64/dex_bootjars/system/framework/boot.art # DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME=out/target/product/generic_x86_64/dex_bootjars/system/framework/x86_64/boot.art # LIBART_BOOT_IMAGE=/system/framework/x86_64/boot.art # # 2ND_DEFAULT_DEX_PREOPT_BUILT_IMAGE_LOCATION=out/target/product/generic_x86_64/dex_bootjars/system/framework/boot.art # 2ND_DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME=out/target/product/generic_x86_64/dex_bootjars/system/framework/x86/boot.art # 2ND_LIBART_BOOT_IMAGE=/system/framework/x86/boot.art $(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_LOCATION := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/boot.art $(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$($(my_2nd_arch_prefix)DEX2OAT_TARGET_ARCH)/boot.art $(my_2nd_arch_prefix)LIBART_BOOT_IMAGE_FILENAME := /$(DEXPREOPT_BOOT_JAR_DIR)/$($(my_2nd_arch_prefix)DEX2OAT_TARGET_ARCH)/boot.art # The .oat with symbols $(my_2nd_arch_prefix)LIBART_TARGET_BOOT_OAT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)$(patsubst %.art,%.oat,$($(my_2nd_arch_prefix)LIBART_BOOT_IMAGE_FILENAME)) $(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_INSTALLED_IMAGE := ifneq ($(PRODUCT_DEX_PREOPT_IMAGE_IN_DATA),true) $(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_INSTALLED_IMAGE := $(PRODUCT_OUT)$($(my_2nd_arch_prefix)LIBART_BOOT_IMAGE_FILENAME) endif # The rule to install boot.art and boot.oat $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) : $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) | $(ACP) $(call copy-file-to-target) $(hide) $(ACP) -fp $(patsubst %.art,%.oat,$<) $(patsubst %.art,%.oat,$@) $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME): PRIVATE_2ND_ARCH_VAR_PREFIX := $(my_2nd_arch_prefix) # Use dex2oat debug version for better error reporting $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) : $(LIBART_TARGET_BOOT_DEX_FILES) $(DEX2OATD_DEPENDENCY) @echo "target dex2oat: $@ ($?)" @mkdir -p $(dir $@) @mkdir -p $(dir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED)) $(hide) $(DEX2OATD) --runtime-arg -Xms256m --runtime-arg -Xmx256m --image-classes=$(PRELOADED_CLASSES) \ $(addprefix --dex-file=,$(LIBART_TARGET_BOOT_DEX_FILES)) \ $(addprefix --dex-location=,$(LIBART_TARGET_BOOT_DEX_LOCATIONS)) \ --oat-symbols=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED) \ --oat-file=$(patsubst %.art,%.oat,$@) \ --oat-location=$(patsubst %.art,%.oat,$($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_BOOT_IMAGE_FILENAME)) \ --image=$@ --base=$(LIBART_IMG_TARGET_BASE_ADDRESS) \ --instruction-set=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH) \ --instruction-set-features=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) \ --android-root=$(PRODUCT_OUT)/system Loading
core/clear_vars.mk +1 −1 Original line number Diff line number Diff line Loading @@ -118,7 +118,7 @@ LOCAL_RENDERSCRIPT_SKIP_INSTALL:= LOCAL_RENDERSCRIPT_TARGET_API:= LOCAL_BUILD_HOST_DEX:= LOCAL_DEX_PREOPT:= # '',true,false,nostripping LOCAL_DEX_PREOPT_IMAGE:= LOCAL_DEX_PREOPT_IMAGE_LOCATION:= LOCAL_PROTOC_OPTIMIZE_TYPE:= # lite(default),micro,nano,full LOCAL_PROTOC_FLAGS:= LOCAL_PROTO_JAVA_OUTPUT_PARAMS:= Loading
core/config.mk +8 −11 Original line number Diff line number Diff line Loading @@ -530,22 +530,19 @@ TARGET_CPU_SMP ?= true DEX2OAT_TARGET_ARCH := $(TARGET_ARCH) DEX2OAT_TARGET_CPU_VARIANT := $(TARGET_CPU_VARIANT) DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := default ifneq (,$(filter $(DEX2OAT_TARGET_CPU_VARIANT),cortex-a7 cortex-a15 krait denver)) DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := div endif # If for a 64bit build we have a 2nd architecture but the zygote isn't 64bit, # assume DEX2OAT should DEXPREOPT for the 2nd architecture. ifdef TARGET_2ND_ARCH ifeq (true,$(TARGET_IS_64_BIT)) ifeq ($(filter ro.zygote=zygote64,$(PRODUCT_DEFAULT_PROPERTY_OVERRIDES)),) DEX2OAT_TARGET_ARCH := $(TARGET_2ND_ARCH) DEX2OAT_TARGET_CPU_VARIANT := $(TARGET_2ND_CPU_VARIANT) endif $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH := $(TARGET_2ND_ARCH) $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT := $(TARGET_2ND_CPU_VARIANT) $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := default ifneq (,$(filter $($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_CPU_VARIANT),cortex-a7 cortex-a15 krait denver)) $(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := div endif endif ifneq (,$(filter $(DEX2OAT_TARGET_CPU_VARIANT),cortex-a7 cortex-a15 krait denver)) DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES := div endif # define clang/llvm tools and global flags include $(BUILD_SYSTEM)/clang/config.mk Loading
core/dex_preopt.mk +9 −8 Original line number Diff line number Diff line Loading @@ -49,25 +49,26 @@ endif include $(BUILD_SYSTEM)/dex_preopt_libart.mk # Define dexpreopt-one-file based on current default runtime. # $(1): the boot image to use (unused for libdvm) # $(2): the input .jar or .apk file # $(3): the input .jar or .apk target location (unused for libdvm) # $(4): the output .odex file # $(1): the input .jar or .apk file # $(2): the output .odex file ifeq ($(DALVIK_VM_LIB),libdvm.so) define dexpreopt-one-file $(call dexopt-one-file,$(2),$(4)) $(call dexopt-one-file,$(1),$(2)) endef DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS := $(DEXOPT_DEPENDENCY) DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $(DEXPREOPT_BOOT_ODEXS) else define dexpreopt-one-file $(call dex2oat-one-file,$(1),$(2),$(3),$(4)) $(call dex2oat-one-file,$(1),$(2)) endef DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS := $(DEX2OATD_DEPENDENCY) DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $(DEFAULT_DEX_PREOPT_BUILT_IMAGE) endif DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $(DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) ifdef TARGET_2ND_ARCH $(TARGET_2ND_ARCH_VAR_PREFIX)DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT := $($(TARGET_2ND_ARCH_VAR_PREFIX)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) endif # TARGET_2ND_ARCH endif # DALVIK_VM_LIB else $(warning No DALVIK_VM_LIB, disable dexpreopt.) WITH_DEXPREOPT := false Loading
core/dex_preopt_libart.mk +32 −44 Original line number Diff line number Diff line Loading @@ -23,20 +23,6 @@ DEX2OATD_DEPENDENCY += $(LIBARTD_COMPILER) PRELOADED_CLASSES := frameworks/base/preloaded-classes LIBART_BOOT_IMAGE := /$(DEXPREOPT_BOOT_JAR_DIR)/boot-$(DEX2OAT_TARGET_ARCH).art DEFAULT_DEX_PREOPT_BUILT_IMAGE := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/boot-$(DEX2OAT_TARGET_ARCH).art DEFAULT_DEX_PREOPT_INSTALLED_IMAGE := ifneq ($(PRODUCT_DEX_PREOPT_IMAGE_IN_DATA),true) DEFAULT_DEX_PREOPT_INSTALLED_IMAGE := $(PRODUCT_OUT)$(LIBART_BOOT_IMAGE) # The rule to install boot.art and boot.oat $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) : $(DEFAULT_DEX_PREOPT_BUILT_IMAGE) | $(ACP) $(call copy-file-to-target) $(hide) $(ACP) -fp $(patsubst %.art,%.oat,$<) $(patsubst %.art,%.oat,$@) endif # start of image reserved address space LIBART_IMG_HOST_BASE_ADDRESS := 0x60000000 Loading @@ -49,48 +35,50 @@ endif ######################################################################## # The full system boot classpath # Returns the path to the .odex file # $(1): the arch name. # $(2): the full path (including file name) of the corresponding .jar or .apk. define get-odex-file-path $(dir $(2))$(1)/$(basename $(notdir $(2))).odex endef # Returns the path to the image file (such as "/system/framework/<arch>/boot.art" # $(1): the arch name (such as "arm") # $(2): the image location (such as "/system/framework/boot.art") define get-image-file-path $(dir $(2))$(1)/$(notdir $(2)) endef # note we use core-libart.jar in place of core.jar for ART. LIBART_TARGET_BOOT_JARS := $(patsubst core, core-libart,$(DEXPREOPT_BOOT_JARS_MODULES)) LIBART_TARGET_BOOT_DEX_LOCATIONS := $(foreach jar,$(LIBART_TARGET_BOOT_JARS),/$(DEXPREOPT_BOOT_JAR_DIR)/$(jar).jar) LIBART_TARGET_BOOT_DEX_FILES := $(foreach jar,$(LIBART_TARGET_BOOT_JARS),$(call intermediates-dir-for,JAVA_LIBRARIES,$(jar),,COMMON)/javalib.jar) # The .oat with symbols LIBART_TARGET_BOOT_OAT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)$(patsubst %.art,%.oat,$(LIBART_BOOT_IMAGE)) # Use dex2oat debug version for better error reporting $(DEFAULT_DEX_PREOPT_BUILT_IMAGE): $(LIBART_TARGET_BOOT_DEX_FILES) $(DEX2OATD_DEPENDENCY) @echo "target dex2oat: $@ ($?)" @mkdir -p $(dir $@) @mkdir -p $(dir $(LIBART_TARGET_BOOT_OAT_UNSTRIPPED)) $(hide) $(DEX2OATD) --runtime-arg -Xms256m --runtime-arg -Xmx256m --image-classes=$(PRELOADED_CLASSES) \ $(addprefix --dex-file=,$(LIBART_TARGET_BOOT_DEX_FILES)) \ $(addprefix --dex-location=,$(LIBART_TARGET_BOOT_DEX_LOCATIONS)) \ --oat-symbols=$(LIBART_TARGET_BOOT_OAT_UNSTRIPPED) \ --oat-file=$(patsubst %.art,%.oat,$@) \ --oat-location=$(patsubst %.art,%.oat,$(LIBART_BOOT_IMAGE)) \ --image=$@ --base=$(LIBART_IMG_TARGET_BASE_ADDRESS) \ --instruction-set=$(DEX2OAT_TARGET_ARCH) \ --instruction-set-features=$(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) \ --android-root=$(PRODUCT_OUT)/system my_2nd_arch_prefix := include $(BUILD_SYSTEM)/dex_preopt_libart_boot.mk 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 ######################################################################## # For a single jar or APK # $(1): the boot image to use # $(2): the input .jar or .apk file # $(3): the input .jar or .apk target location # $(4): the output .odex file # $(1): the input .jar or .apk file # $(2): the output .odex file define dex2oat-one-file $(hide) rm -f $(4) $(hide) mkdir -p $(dir $(4)) $(hide) rm -f $(2) $(hide) mkdir -p $(dir $(2)) $(hide) $(DEX2OATD) \ --runtime-arg -Xms64m --runtime-arg -Xmx64m \ --boot-image=$(1) \ --dex-file=$(2) \ --dex-location=$(3) \ --oat-file=$(4) \ --boot-image=$(PRIVATE_DEX_PREOPT_IMAGE_LOCATION) \ --dex-file=$(1) \ --dex-location=$(PRIVATE_DEX_LOCATION) \ --oat-file=$(2) \ --android-root=$(PRODUCT_OUT)/system \ --instruction-set=$(DEX2OAT_TARGET_ARCH) \ --instruction-set-features=$(DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) --instruction-set=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH) \ --instruction-set-features=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) endef
core/dex_preopt_libart_boot.mk 0 → 100644 +55 −0 Original line number Diff line number Diff line # Rules to build boot.art # Input variables: # my_2nd_arch_prefix: indicates if this is to build for the 2nd arch. # The image "location" is a symbolic path that with multiarchitecture # support doesn't really exist on the device. Typically it is # /system/framework/boot.art and should be the same for all supported # architectures on the device. The concrete architecture specific # content actually ends up in a "filename" that contains an # architecture specific directory name such as arm, arm64, mips, # mips64, x86, x86_64. # # Here are some example values for an x86_64 / x86 configuration: # # DEFAULT_DEX_PREOPT_BUILT_IMAGE_LOCATION=out/target/product/generic_x86_64/dex_bootjars/system/framework/boot.art # DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME=out/target/product/generic_x86_64/dex_bootjars/system/framework/x86_64/boot.art # LIBART_BOOT_IMAGE=/system/framework/x86_64/boot.art # # 2ND_DEFAULT_DEX_PREOPT_BUILT_IMAGE_LOCATION=out/target/product/generic_x86_64/dex_bootjars/system/framework/boot.art # 2ND_DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME=out/target/product/generic_x86_64/dex_bootjars/system/framework/x86/boot.art # 2ND_LIBART_BOOT_IMAGE=/system/framework/x86/boot.art $(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_LOCATION := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/boot.art $(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/$($(my_2nd_arch_prefix)DEX2OAT_TARGET_ARCH)/boot.art $(my_2nd_arch_prefix)LIBART_BOOT_IMAGE_FILENAME := /$(DEXPREOPT_BOOT_JAR_DIR)/$($(my_2nd_arch_prefix)DEX2OAT_TARGET_ARCH)/boot.art # The .oat with symbols $(my_2nd_arch_prefix)LIBART_TARGET_BOOT_OAT_UNSTRIPPED := $(TARGET_OUT_UNSTRIPPED)$(patsubst %.art,%.oat,$($(my_2nd_arch_prefix)LIBART_BOOT_IMAGE_FILENAME)) $(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_INSTALLED_IMAGE := ifneq ($(PRODUCT_DEX_PREOPT_IMAGE_IN_DATA),true) $(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_INSTALLED_IMAGE := $(PRODUCT_OUT)$($(my_2nd_arch_prefix)LIBART_BOOT_IMAGE_FILENAME) endif # The rule to install boot.art and boot.oat $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) : $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) | $(ACP) $(call copy-file-to-target) $(hide) $(ACP) -fp $(patsubst %.art,%.oat,$<) $(patsubst %.art,%.oat,$@) $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME): PRIVATE_2ND_ARCH_VAR_PREFIX := $(my_2nd_arch_prefix) # Use dex2oat debug version for better error reporting $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) : $(LIBART_TARGET_BOOT_DEX_FILES) $(DEX2OATD_DEPENDENCY) @echo "target dex2oat: $@ ($?)" @mkdir -p $(dir $@) @mkdir -p $(dir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED)) $(hide) $(DEX2OATD) --runtime-arg -Xms256m --runtime-arg -Xmx256m --image-classes=$(PRELOADED_CLASSES) \ $(addprefix --dex-file=,$(LIBART_TARGET_BOOT_DEX_FILES)) \ $(addprefix --dex-location=,$(LIBART_TARGET_BOOT_DEX_LOCATIONS)) \ --oat-symbols=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED) \ --oat-file=$(patsubst %.art,%.oat,$@) \ --oat-location=$(patsubst %.art,%.oat,$($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_BOOT_IMAGE_FILENAME)) \ --image=$@ --base=$(LIBART_IMG_TARGET_BASE_ADDRESS) \ --instruction-set=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH) \ --instruction-set-features=$($(PRIVATE_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_INSTRUCTION_SET_FEATURES) \ --android-root=$(PRODUCT_OUT)/system