Loading core/dex_preopt_libart.mk +36 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,42 @@ LIBART_TARGET_BOOT_DEX_FILES := $(foreach jar,$(LIBART_TARGET_BOOT_JARS),$(call LIBART_TARGET_BOOT_ART_EXTRA_FILES := $(foreach jar,$(wordlist 2,999,$(LIBART_TARGET_BOOT_JARS)),boot-$(jar).art boot-$(jar).oat boot-$(jar).vdex) LIBART_TARGET_BOOT_ART_EXTRA_FILES += boot.oat boot.vdex # If we use a boot image profile. my_use_profile_for_boot_image := $(PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE) ifeq (,$(my_use_profile_for_boot_image)) # If not set, use the default. my_use_profile_for_boot_image := false endif ifeq (true,$(my_use_profile_for_boot_image)) # Location of text based profile for the boot image. my_boot_image_profile_location := $(PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION) ifeq (,$(my_boot_image_profile_location)) # If not set, use the default. my_boot_image_profile_location := frameworks/base/boot-image-profile.txt endif # Code to create the boot image profile, not in dex_preopt_libart_boot.mk since the profile is the same for all archs. my_out_boot_image_profile_location := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/boot.prof $(my_out_boot_image_profile_location): PRIVATE_PROFILE_INPUT_LOCATION := $(my_boot_image_profile_location) $(my_out_boot_image_profile_location): $(PROFMAN) $(LIBART_TARGET_BOOT_DEX_FILES) $(my_boot_image_profile_location) @echo "target profman: $@" @mkdir -p $(dir $@) ANDROID_LOG_TAGS="*:e" $(PROFMAN) \ --create-profile-from=$(PRIVATE_PROFILE_INPUT_LOCATION) \ $(addprefix --apk=,$(LIBART_TARGET_BOOT_DEX_FILES)) \ $(addprefix --dex-location=,$(LIBART_TARGET_BOOT_DEX_LOCATIONS)) \ --reference-profile-file=$@ # We want to install the profile even if we are not using preopt since it is required to generate # the image on the device. my_installed_profile := $(TARGET_OUT)/etc/boot-image.prof $(eval $(call copy-one-file,$(my_out_boot_image_profile_location),$(my_installed_profile))) ALL_DEFAULT_INSTALLED_MODULES += $(my_installed_profile) endif my_2nd_arch_prefix := include $(BUILD_SYSTEM)/dex_preopt_libart_boot.mk Loading core/dex_preopt_libart_boot.mk +13 −4 Original line number Diff line number Diff line Loading @@ -50,18 +50,27 @@ $($(my_2nd_arch_prefix)LIBART_TARGET_BOOT_ART_EXTRA_INSTALLED_FILES) : $($(my_2n @mkdir -p $(dir $@) $(hide) $(ACP) -fp $(dir $<)$(notdir $@) $@ ifeq (,$(my_out_boot_image_profile_location)) my_boot_image_flags := $(COMPILED_CLASSES_FLAGS) my_boot_image_flags += --image-classes=$(PRELOADED_CLASSES) else my_boot_image_flags := --compiler-filter=speed-profile my_boot_image_flags += --profile-file=$(my_out_boot_image_profile_location) endif $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME): PRIVATE_BOOT_IMAGE_FLAGS := $(my_boot_image_flags) $($(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) $(PRELOADED_CLASSES) $(COMPILED_CLASSES) $(DEX2OAT_DEPENDENCY) $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) : $(LIBART_TARGET_BOOT_DEX_FILES) $(PRELOADED_CLASSES) $(COMPILED_CLASSES) $(DEX2OAT_DEPENDENCY) $(my_out_profile_location) @echo "target dex2oat: $@" @mkdir -p $(dir $@) @mkdir -p $(dir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED)) @rm -f $(dir $@)/*.art $(dir $@)/*.oat @rm -f $(dir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED))/*.art @rm -f $(dir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED))/*.oat $(hide) ANDROID_LOG_TAGS="*:e" $(DEX2OAT) --runtime-arg -Xms$(DEX2OAT_IMAGE_XMS) \ $(DEX2OAT) --runtime-arg -Xms$(DEX2OAT_IMAGE_XMS) \ --runtime-arg -Xmx$(DEX2OAT_IMAGE_XMX) \ --image-classes=$(PRELOADED_CLASSES) \ $(PRIVATE_BOOT_IMAGE_FLAGS) \ $(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) \ Loading @@ -75,4 +84,4 @@ $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) : $(LIBART_TARGE --runtime-arg -Xnorelocate --compile-pic \ --no-generate-debug-info --generate-build-id \ --multi-image --no-inline-from=core-oj.jar \ $(PRODUCT_DEX_PREOPT_BOOT_FLAGS) $(GLOBAL_DEXPREOPT_FLAGS) $(COMPILED_CLASSES_FLAGS) $(ART_BOOT_IMAGE_EXTRA_ARGS) $(PRODUCT_DEX_PREOPT_BOOT_FLAGS) $(GLOBAL_DEXPREOPT_FLAGS) $(ART_BOOT_IMAGE_EXTRA_ARGS) core/dex_preopt_odex_install.mk +71 −16 Original line number Diff line number Diff line Loading @@ -59,6 +59,31 @@ built_installed_vdex := built_installed_art := ifdef LOCAL_DEX_PREOPT ifeq (false,$(WITH_DEX_PREOPT_GENERATE_PROFILE)) LOCAL_DEX_PREOPT_GENERATE_PROFILE := false endif ifdef LOCAL_VENDOR_MODULE ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE)) $(error profiles are not supported for vendor modules) endif else ifndef LOCAL_DEX_PREOPT_GENERATE_PROFILE # If LOCAL_DEX_PREOPT_GENERATE_PROFILE is not defined, default it based on the existence of the # profile class listing. TODO: Use product specific directory here. my_classes_directory := $(PRODUCT_DEX_PREOPT_PROFILE_DIR) LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING := $(my_classes_directory)/$(LOCAL_MODULE).prof.txt ifneq (,$(wildcard $(LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING))) # Profile listing exists, use it to generate the profile. ifeq ($(LOCAL_DEX_PREOPT_APP_IMAGE),) LOCAL_DEX_PREOPT_APP_IMAGE := true endif LOCAL_DEX_PREOPT_GENERATE_PROFILE := true endif endif endif dexpreopt_boot_jar_module := $(filter $(DEXPREOPT_BOOT_JARS_MODULES),$(LOCAL_MODULE)) ifdef dexpreopt_boot_jar_module # For libart, the boot jars' odex files are replaced by $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE). Loading Loading @@ -113,13 +138,6 @@ installed_vdex := $(strip $(installed_vdex)) installed_art := $(strip $(installed_art)) ifdef built_odex ifndef LOCAL_DEX_PREOPT_GENERATE_PROFILE ifeq (true,$(WITH_DEX_PREOPT_GENERATE_PROFILE)) LOCAL_DEX_PREOPT_GENERATE_PROFILE := true endif endif ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE)) ifndef LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING $(call pretty-error,Must have specified class listing (LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING)) Loading @@ -141,7 +159,12 @@ $(my_built_profile): --apk=$(PRIVATE_BUILT_MODULE) \ --dex-location=$(PRIVATE_DEX_LOCATION) \ --reference-profile-file=$@ my_installed_profile := $(LOCAL_INSTALLED_MODULE).prof $(eval $(call copy-one-file,$(my_built_profile),$(my_installed_profile))) build_installed_profile:=$(my_built_profile):$(my_installed_profile) else build_installed_profile:= my_installed_profile := $(built_odex): PRIVATE_PROFILE_PREOPT_FLAGS := endif Loading @@ -152,16 +175,46 @@ LOCAL_DEX_PREOPT_FLAGS := $(PRODUCT_DEX_PREOPT_DEFAULT_FLAGS) endif endif ifneq (,$(filter $(PRODUCT_SYSTEM_SERVER_JARS) $(PRODUCT_DEXPREOPT_SPEED_APPS) $(PRODUCT_SYSTEM_SERVER_APPS),$(LOCAL_MODULE))) # Jars of system server, apps loaded into system server, and apps the product wants to be # compiled with the 'speed' compiler filter. my_system_server_compiler_filter := $(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER) ifeq (,$(my_system_server_compiler_filter)) my_system_server_compiler_filter := speed endif ifeq (,$(filter --compiler-filter=%, $(LOCAL_DEX_PREOPT_FLAGS))) ifneq (,$(filter $(PRODUCT_SYSTEM_SERVER_JARS),$(LOCAL_MODULE))) # Jars of system server, use the product option if it is set, speed otherwise. LOCAL_DEX_PREOPT_FLAGS += --compiler-filter=$(my_system_server_compiler_filter) else ifneq (,$(filter $(PRODUCT_DEXPREOPT_SPEED_APPS) $(PRODUCT_SYSTEM_SERVER_APPS),$(LOCAL_MODULE))) # Apps loaded into system server, and apps the product default to being compiled with the # 'speed' compiler filter. LOCAL_DEX_PREOPT_FLAGS += --compiler-filter=speed else ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE)) # For non system server jars, use speed-profile when we have a profile. LOCAL_DEX_PREOPT_FLAGS += --compiler-filter=speed-profile else # If no compiler filter is specified, default to 'quicken' to save on storage. ifeq (,$(filter --compiler-filter=%, $(LOCAL_DEX_PREOPT_FLAGS))) LOCAL_DEX_PREOPT_FLAGS += --compiler-filter=quicken endif endif endif endif # PRODUCT_SYSTEM_SERVER_DEBUG_INFO overrides WITH_DEXPREOPT_DEBUG_INFO. my_system_server_debug_info := $(PRODUCT_SYSTEM_SERVER_DEBUG_INFO) ifeq (,$(filter eng, $(TARGET_BUILD_VARIANT))) # Only enable for non-eng builds. ifeq (,$(my_system_server_debug_info)) my_system_server_debug_info := true endif endif ifeq (true, $(my_system_server_debug_info)) ifneq (,$(filter $(PRODUCT_SYSTEM_SERVER_JARS),$(LOCAL_MODULE))) LOCAL_DEX_PREOPT_FLAGS += --generate-mini-debug-info endif endif $(built_odex): PRIVATE_DEX_PREOPT_FLAGS := $(LOCAL_DEX_PREOPT_FLAGS) $(built_vdex): $(built_odex) Loading @@ -172,9 +225,11 @@ endif ALL_MODULES.$(my_register_name).INSTALLED += $(installed_odex) ALL_MODULES.$(my_register_name).INSTALLED += $(installed_vdex) ALL_MODULES.$(my_register_name).INSTALLED += $(installed_art) ALL_MODULES.$(my_register_name).INSTALLED += $(my_installed_profile) ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_odex) ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_vdex) ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_art) ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(build_installed_profile) # Record dex-preopt config. DEXPREOPT.$(LOCAL_MODULE).DEX_PREOPT := $(LOCAL_DEX_PREOPT) Loading @@ -190,6 +245,6 @@ DEXPREOPT.MODULES.$(LOCAL_MODULE_CLASS) := $(sort \ # Make sure to install the .odex and .vdex when you run "make <module_name>" $(my_all_targets): $(installed_odex) $(installed_vdex) $(installed_art) $(my_all_targets): $(installed_odex) $(installed_vdex) $(installed_art) $(my_installed_profile) endif # LOCAL_DEX_PREOPT core/main.mk +5 −0 Original line number Diff line number Diff line Loading @@ -222,6 +222,11 @@ ifdef TARGET_2ND_ARCH endif endif # Add the system server compiler filter if they are specified for the product. ifneq (,$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER)) ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.systemservercompilerfilter=$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER) endif ## user/userdebug ## user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT)) Loading core/product.mk +5 −0 Original line number Diff line number Diff line Loading @@ -120,9 +120,14 @@ _product_var_list := \ PRODUCT_VERITY_SIGNING_KEY \ PRODUCT_SYSTEM_VERITY_PARTITION \ PRODUCT_VENDOR_VERITY_PARTITION \ PRODUCT_SYSTEM_SERVER_DEBUG_INFO \ PRODUCT_DEX_PREOPT_MODULE_CONFIGS \ PRODUCT_DEX_PREOPT_DEFAULT_FLAGS \ PRODUCT_DEX_PREOPT_BOOT_FLAGS \ PRODUCT_DEX_PREOPT_PROFILE_DIR \ PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION \ PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE \ PRODUCT_SYSTEM_SERVER_COMPILER_FILTER \ PRODUCT_SANITIZER_MODULE_CONFIGS \ PRODUCT_SYSTEM_BASE_FS_PATH \ PRODUCT_VENDOR_BASE_FS_PATH \ Loading Loading
core/dex_preopt_libart.mk +36 −0 Original line number Diff line number Diff line Loading @@ -88,6 +88,42 @@ LIBART_TARGET_BOOT_DEX_FILES := $(foreach jar,$(LIBART_TARGET_BOOT_JARS),$(call LIBART_TARGET_BOOT_ART_EXTRA_FILES := $(foreach jar,$(wordlist 2,999,$(LIBART_TARGET_BOOT_JARS)),boot-$(jar).art boot-$(jar).oat boot-$(jar).vdex) LIBART_TARGET_BOOT_ART_EXTRA_FILES += boot.oat boot.vdex # If we use a boot image profile. my_use_profile_for_boot_image := $(PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE) ifeq (,$(my_use_profile_for_boot_image)) # If not set, use the default. my_use_profile_for_boot_image := false endif ifeq (true,$(my_use_profile_for_boot_image)) # Location of text based profile for the boot image. my_boot_image_profile_location := $(PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION) ifeq (,$(my_boot_image_profile_location)) # If not set, use the default. my_boot_image_profile_location := frameworks/base/boot-image-profile.txt endif # Code to create the boot image profile, not in dex_preopt_libart_boot.mk since the profile is the same for all archs. my_out_boot_image_profile_location := $(DEXPREOPT_BOOT_JAR_DIR_FULL_PATH)/boot.prof $(my_out_boot_image_profile_location): PRIVATE_PROFILE_INPUT_LOCATION := $(my_boot_image_profile_location) $(my_out_boot_image_profile_location): $(PROFMAN) $(LIBART_TARGET_BOOT_DEX_FILES) $(my_boot_image_profile_location) @echo "target profman: $@" @mkdir -p $(dir $@) ANDROID_LOG_TAGS="*:e" $(PROFMAN) \ --create-profile-from=$(PRIVATE_PROFILE_INPUT_LOCATION) \ $(addprefix --apk=,$(LIBART_TARGET_BOOT_DEX_FILES)) \ $(addprefix --dex-location=,$(LIBART_TARGET_BOOT_DEX_LOCATIONS)) \ --reference-profile-file=$@ # We want to install the profile even if we are not using preopt since it is required to generate # the image on the device. my_installed_profile := $(TARGET_OUT)/etc/boot-image.prof $(eval $(call copy-one-file,$(my_out_boot_image_profile_location),$(my_installed_profile))) ALL_DEFAULT_INSTALLED_MODULES += $(my_installed_profile) endif my_2nd_arch_prefix := include $(BUILD_SYSTEM)/dex_preopt_libart_boot.mk Loading
core/dex_preopt_libart_boot.mk +13 −4 Original line number Diff line number Diff line Loading @@ -50,18 +50,27 @@ $($(my_2nd_arch_prefix)LIBART_TARGET_BOOT_ART_EXTRA_INSTALLED_FILES) : $($(my_2n @mkdir -p $(dir $@) $(hide) $(ACP) -fp $(dir $<)$(notdir $@) $@ ifeq (,$(my_out_boot_image_profile_location)) my_boot_image_flags := $(COMPILED_CLASSES_FLAGS) my_boot_image_flags += --image-classes=$(PRELOADED_CLASSES) else my_boot_image_flags := --compiler-filter=speed-profile my_boot_image_flags += --profile-file=$(my_out_boot_image_profile_location) endif $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME): PRIVATE_BOOT_IMAGE_FLAGS := $(my_boot_image_flags) $($(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) $(PRELOADED_CLASSES) $(COMPILED_CLASSES) $(DEX2OAT_DEPENDENCY) $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) : $(LIBART_TARGET_BOOT_DEX_FILES) $(PRELOADED_CLASSES) $(COMPILED_CLASSES) $(DEX2OAT_DEPENDENCY) $(my_out_profile_location) @echo "target dex2oat: $@" @mkdir -p $(dir $@) @mkdir -p $(dir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED)) @rm -f $(dir $@)/*.art $(dir $@)/*.oat @rm -f $(dir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED))/*.art @rm -f $(dir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)LIBART_TARGET_BOOT_OAT_UNSTRIPPED))/*.oat $(hide) ANDROID_LOG_TAGS="*:e" $(DEX2OAT) --runtime-arg -Xms$(DEX2OAT_IMAGE_XMS) \ $(DEX2OAT) --runtime-arg -Xms$(DEX2OAT_IMAGE_XMS) \ --runtime-arg -Xmx$(DEX2OAT_IMAGE_XMX) \ --image-classes=$(PRELOADED_CLASSES) \ $(PRIVATE_BOOT_IMAGE_FLAGS) \ $(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) \ Loading @@ -75,4 +84,4 @@ $($(my_2nd_arch_prefix)DEFAULT_DEX_PREOPT_BUILT_IMAGE_FILENAME) : $(LIBART_TARGE --runtime-arg -Xnorelocate --compile-pic \ --no-generate-debug-info --generate-build-id \ --multi-image --no-inline-from=core-oj.jar \ $(PRODUCT_DEX_PREOPT_BOOT_FLAGS) $(GLOBAL_DEXPREOPT_FLAGS) $(COMPILED_CLASSES_FLAGS) $(ART_BOOT_IMAGE_EXTRA_ARGS) $(PRODUCT_DEX_PREOPT_BOOT_FLAGS) $(GLOBAL_DEXPREOPT_FLAGS) $(ART_BOOT_IMAGE_EXTRA_ARGS)
core/dex_preopt_odex_install.mk +71 −16 Original line number Diff line number Diff line Loading @@ -59,6 +59,31 @@ built_installed_vdex := built_installed_art := ifdef LOCAL_DEX_PREOPT ifeq (false,$(WITH_DEX_PREOPT_GENERATE_PROFILE)) LOCAL_DEX_PREOPT_GENERATE_PROFILE := false endif ifdef LOCAL_VENDOR_MODULE ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE)) $(error profiles are not supported for vendor modules) endif else ifndef LOCAL_DEX_PREOPT_GENERATE_PROFILE # If LOCAL_DEX_PREOPT_GENERATE_PROFILE is not defined, default it based on the existence of the # profile class listing. TODO: Use product specific directory here. my_classes_directory := $(PRODUCT_DEX_PREOPT_PROFILE_DIR) LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING := $(my_classes_directory)/$(LOCAL_MODULE).prof.txt ifneq (,$(wildcard $(LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING))) # Profile listing exists, use it to generate the profile. ifeq ($(LOCAL_DEX_PREOPT_APP_IMAGE),) LOCAL_DEX_PREOPT_APP_IMAGE := true endif LOCAL_DEX_PREOPT_GENERATE_PROFILE := true endif endif endif dexpreopt_boot_jar_module := $(filter $(DEXPREOPT_BOOT_JARS_MODULES),$(LOCAL_MODULE)) ifdef dexpreopt_boot_jar_module # For libart, the boot jars' odex files are replaced by $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE). Loading Loading @@ -113,13 +138,6 @@ installed_vdex := $(strip $(installed_vdex)) installed_art := $(strip $(installed_art)) ifdef built_odex ifndef LOCAL_DEX_PREOPT_GENERATE_PROFILE ifeq (true,$(WITH_DEX_PREOPT_GENERATE_PROFILE)) LOCAL_DEX_PREOPT_GENERATE_PROFILE := true endif endif ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE)) ifndef LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING $(call pretty-error,Must have specified class listing (LOCAL_DEX_PREOPT_PROFILE_CLASS_LISTING)) Loading @@ -141,7 +159,12 @@ $(my_built_profile): --apk=$(PRIVATE_BUILT_MODULE) \ --dex-location=$(PRIVATE_DEX_LOCATION) \ --reference-profile-file=$@ my_installed_profile := $(LOCAL_INSTALLED_MODULE).prof $(eval $(call copy-one-file,$(my_built_profile),$(my_installed_profile))) build_installed_profile:=$(my_built_profile):$(my_installed_profile) else build_installed_profile:= my_installed_profile := $(built_odex): PRIVATE_PROFILE_PREOPT_FLAGS := endif Loading @@ -152,16 +175,46 @@ LOCAL_DEX_PREOPT_FLAGS := $(PRODUCT_DEX_PREOPT_DEFAULT_FLAGS) endif endif ifneq (,$(filter $(PRODUCT_SYSTEM_SERVER_JARS) $(PRODUCT_DEXPREOPT_SPEED_APPS) $(PRODUCT_SYSTEM_SERVER_APPS),$(LOCAL_MODULE))) # Jars of system server, apps loaded into system server, and apps the product wants to be # compiled with the 'speed' compiler filter. my_system_server_compiler_filter := $(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER) ifeq (,$(my_system_server_compiler_filter)) my_system_server_compiler_filter := speed endif ifeq (,$(filter --compiler-filter=%, $(LOCAL_DEX_PREOPT_FLAGS))) ifneq (,$(filter $(PRODUCT_SYSTEM_SERVER_JARS),$(LOCAL_MODULE))) # Jars of system server, use the product option if it is set, speed otherwise. LOCAL_DEX_PREOPT_FLAGS += --compiler-filter=$(my_system_server_compiler_filter) else ifneq (,$(filter $(PRODUCT_DEXPREOPT_SPEED_APPS) $(PRODUCT_SYSTEM_SERVER_APPS),$(LOCAL_MODULE))) # Apps loaded into system server, and apps the product default to being compiled with the # 'speed' compiler filter. LOCAL_DEX_PREOPT_FLAGS += --compiler-filter=speed else ifeq (true,$(LOCAL_DEX_PREOPT_GENERATE_PROFILE)) # For non system server jars, use speed-profile when we have a profile. LOCAL_DEX_PREOPT_FLAGS += --compiler-filter=speed-profile else # If no compiler filter is specified, default to 'quicken' to save on storage. ifeq (,$(filter --compiler-filter=%, $(LOCAL_DEX_PREOPT_FLAGS))) LOCAL_DEX_PREOPT_FLAGS += --compiler-filter=quicken endif endif endif endif # PRODUCT_SYSTEM_SERVER_DEBUG_INFO overrides WITH_DEXPREOPT_DEBUG_INFO. my_system_server_debug_info := $(PRODUCT_SYSTEM_SERVER_DEBUG_INFO) ifeq (,$(filter eng, $(TARGET_BUILD_VARIANT))) # Only enable for non-eng builds. ifeq (,$(my_system_server_debug_info)) my_system_server_debug_info := true endif endif ifeq (true, $(my_system_server_debug_info)) ifneq (,$(filter $(PRODUCT_SYSTEM_SERVER_JARS),$(LOCAL_MODULE))) LOCAL_DEX_PREOPT_FLAGS += --generate-mini-debug-info endif endif $(built_odex): PRIVATE_DEX_PREOPT_FLAGS := $(LOCAL_DEX_PREOPT_FLAGS) $(built_vdex): $(built_odex) Loading @@ -172,9 +225,11 @@ endif ALL_MODULES.$(my_register_name).INSTALLED += $(installed_odex) ALL_MODULES.$(my_register_name).INSTALLED += $(installed_vdex) ALL_MODULES.$(my_register_name).INSTALLED += $(installed_art) ALL_MODULES.$(my_register_name).INSTALLED += $(my_installed_profile) ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_odex) ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_vdex) ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_art) ALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(build_installed_profile) # Record dex-preopt config. DEXPREOPT.$(LOCAL_MODULE).DEX_PREOPT := $(LOCAL_DEX_PREOPT) Loading @@ -190,6 +245,6 @@ DEXPREOPT.MODULES.$(LOCAL_MODULE_CLASS) := $(sort \ # Make sure to install the .odex and .vdex when you run "make <module_name>" $(my_all_targets): $(installed_odex) $(installed_vdex) $(installed_art) $(my_all_targets): $(installed_odex) $(installed_vdex) $(installed_art) $(my_installed_profile) endif # LOCAL_DEX_PREOPT
core/main.mk +5 −0 Original line number Diff line number Diff line Loading @@ -222,6 +222,11 @@ ifdef TARGET_2ND_ARCH endif endif # Add the system server compiler filter if they are specified for the product. ifneq (,$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER)) ADDITIONAL_BUILD_PROPERTIES += dalvik.vm.systemservercompilerfilter=$(PRODUCT_SYSTEM_SERVER_COMPILER_FILTER) endif ## user/userdebug ## user_variant := $(filter user userdebug,$(TARGET_BUILD_VARIANT)) Loading
core/product.mk +5 −0 Original line number Diff line number Diff line Loading @@ -120,9 +120,14 @@ _product_var_list := \ PRODUCT_VERITY_SIGNING_KEY \ PRODUCT_SYSTEM_VERITY_PARTITION \ PRODUCT_VENDOR_VERITY_PARTITION \ PRODUCT_SYSTEM_SERVER_DEBUG_INFO \ PRODUCT_DEX_PREOPT_MODULE_CONFIGS \ PRODUCT_DEX_PREOPT_DEFAULT_FLAGS \ PRODUCT_DEX_PREOPT_BOOT_FLAGS \ PRODUCT_DEX_PREOPT_PROFILE_DIR \ PRODUCT_DEX_PREOPT_BOOT_IMAGE_PROFILE_LOCATION \ PRODUCT_USE_PROFILE_FOR_BOOT_IMAGE \ PRODUCT_SYSTEM_SERVER_COMPILER_FILTER \ PRODUCT_SANITIZER_MODULE_CONFIGS \ PRODUCT_SYSTEM_BASE_FS_PATH \ PRODUCT_VENDOR_BASE_FS_PATH \ Loading