Brian Carlstrom | ced4bff | 2013-11-14 23:44:56 -0800 | [diff] [blame] | 1 | # dexpreopt_odex_install.mk is used to define odex creation rules for JARs and APKs |
| 2 | # This file depends on variables set in base_rules.mk |
| 3 | # Output variables: LOCAL_DEX_PREOPT, built_odex, dexpreopt_boot_jar_module |
| 4 | |
| 5 | # Setting LOCAL_DEX_PREOPT based on WITH_DEXPREOPT, LOCAL_DEX_PREOPT, etc |
| 6 | LOCAL_DEX_PREOPT := $(strip $(LOCAL_DEX_PREOPT)) |
| 7 | ifneq (true,$(WITH_DEXPREOPT)) |
| 8 | LOCAL_DEX_PREOPT := |
| 9 | else # WITH_DEXPREOPT=true |
| 10 | ifeq (,$(TARGET_BUILD_APPS)) # TARGET_BUILD_APPS empty |
Ying Wang | 9db168c | 2014-01-03 16:24:56 -0800 | [diff] [blame] | 11 | ifndef LOCAL_DEX_PREOPT # LOCAL_DEX_PREOPT undefined |
| 12 | ifeq (,$(LOCAL_APK_LIBRARIES)) # LOCAL_APK_LIBRARIES empty |
| 13 | LOCAL_DEX_PREOPT := $(DEX_PREOPT_DEFAULT) |
| 14 | else # LOCAL_APK_LIBRARIES not empty |
| 15 | LOCAL_DEX_PREOPT := nostripping |
| 16 | endif # LOCAL_APK_LIBRARIES not empty |
| 17 | endif # LOCAL_DEX_PREOPT undefined |
Brian Carlstrom | ced4bff | 2013-11-14 23:44:56 -0800 | [diff] [blame] | 18 | endif # TARGET_BUILD_APPS empty |
| 19 | endif # WITH_DEXPREOPT=true |
| 20 | ifeq (false,$(LOCAL_DEX_PREOPT)) |
| 21 | LOCAL_DEX_PREOPT := |
| 22 | endif |
| 23 | ifdef LOCAL_UNINSTALLABLE_MODULE |
| 24 | LOCAL_DEX_PREOPT := |
| 25 | endif |
| 26 | ifeq (,$(strip $(all_java_sources)$(full_static_java_libs)$(my_prebuilt_src_file))) # contains no java code |
| 27 | LOCAL_DEX_PREOPT := |
| 28 | endif |
| 29 | # if module oat file requested in data, disable LOCAL_DEX_PREOPT, will default location to dalvik-cache |
| 30 | ifneq (,$(filter $(LOCAL_MODULE),$(PRODUCT_DEX_PREOPT_PACKAGES_IN_DATA))) |
| 31 | LOCAL_DEX_PREOPT := |
| 32 | endif |
| 33 | |
| 34 | built_odex := |
| 35 | installed_odex := |
| 36 | ifdef LOCAL_DEX_PREOPT |
| 37 | dexpreopt_boot_jar_module := $(filter $(DEXPREOPT_BOOT_JARS_MODULES),$(LOCAL_MODULE)) |
| 38 | ifdef dexpreopt_boot_jar_module |
| 39 | ifeq ($(DALVIK_VM_LIB),libdvm.so) |
| 40 | built_odex := $(basename $(LOCAL_BUILT_MODULE)).odex |
| 41 | installed_odex := $(basename $(LOCAL_INSTALLED_MODULE)).odex |
| 42 | else # libdvm.so |
| 43 | # For libart, the boot jars' odex files are replaced by $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE). |
| 44 | # We use this installed_odex trick to get boot.art installed. |
| 45 | installed_odex := $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) |
Ying Wang | b9aa5d4 | 2014-05-13 13:57:28 -0700 | [diff] [blame] | 46 | # Append the odex for the 2nd arch if we have one. |
| 47 | installed_odex += $($(TARGET_2ND_ARCH_VAR_PREFIX)DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) |
Brian Carlstrom | ced4bff | 2013-11-14 23:44:56 -0800 | [diff] [blame] | 48 | endif # libdvm.so |
| 49 | else # boot jar |
Ying Wang | b9aa5d4 | 2014-05-13 13:57:28 -0700 | [diff] [blame] | 50 | ifeq ($(DALVIK_VM_LIB),libdvm.so) |
Brian Carlstrom | ced4bff | 2013-11-14 23:44:56 -0800 | [diff] [blame] | 51 | built_odex := $(basename $(LOCAL_BUILT_MODULE)).odex |
| 52 | installed_odex := $(basename $(LOCAL_INSTALLED_MODULE)).odex |
| 53 | |
Ying Wang | b9aa5d4 | 2014-05-13 13:57:28 -0700 | [diff] [blame] | 54 | $(built_odex) : $(DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT) \ |
| 55 | $(DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS) |
| 56 | else # libart |
| 57 | ifeq ($(LOCAL_MODULE_CLASS),JAVA_LIBRARIES) |
| 58 | # For a Java library, we build odex for both 1st arch and 2nd arch, if we have one. |
| 59 | # ################################################# |
| 60 | # Odex for the 1st arch |
| 61 | built_odex := $(call get-odex-file-path,$(DEX2OAT_TARGET_ARCH),$(LOCAL_BUILT_MODULE)) |
| 62 | ifdef LOCAL_DEX_PREOPT_IMAGE_LOCATION |
| 63 | my_dex_preopt_image_location := $(LOCAL_DEX_PREOPT_IMAGE_LOCATION) |
| 64 | else |
| 65 | my_dex_preopt_image_location := $(DEFAULT_DEX_PREOPT_BUILT_IMAGE_LOCATION) |
Brian Carlstrom | ced4bff | 2013-11-14 23:44:56 -0800 | [diff] [blame] | 66 | endif |
Ying Wang | b9aa5d4 | 2014-05-13 13:57:28 -0700 | [diff] [blame] | 67 | my_dex_preopt_image_filename := $(call get-image-file-path,$(DEX2OAT_TARGET_ARCH),$(my_dex_preopt_image_location)) |
| 68 | $(built_odex): PRIVATE_2ND_ARCH_VAR_PREFIX := |
| 69 | $(built_odex): PRIVATE_DEX_LOCATION := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE)) |
| 70 | $(built_odex): PRIVATE_DEX_PREOPT_IMAGE_LOCATION := $(my_dex_preopt_image_location) |
| 71 | $(built_odex) : $(DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT) \ |
| 72 | $(DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS) \ |
| 73 | $(my_dex_preopt_image_filename) |
| 74 | installed_odex := $(call get-odex-file-path,$(DEX2OAT_TARGET_ARCH),$(LOCAL_INSTALLED_MODULE)) |
| 75 | |
| 76 | # ################################################# |
| 77 | # Odex for the 2nd arch |
| 78 | ifdef TARGET_2ND_ARCH |
| 79 | built_odex2 := $(call get-odex-file-path,$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH),$(LOCAL_BUILT_MODULE)) |
| 80 | ifdef LOCAL_DEX_PREOPT_IMAGE_LOCATION |
| 81 | my_dex_preopt_image_location := $(LOCAL_DEX_PREOPT_IMAGE_LOCATION) |
| 82 | else |
| 83 | my_dex_preopt_image_location := $($(TARGET_2ND_ARCH_VAR_PREFIX)DEFAULT_DEX_PREOPT_BUILT_IMAGE_LOCATION) |
| 84 | endif |
| 85 | my_dex_preopt_image_filename := $(call get-image-file-path,$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH),$(my_dex_preopt_image_location)) |
| 86 | $(built_odex2): PRIVATE_2ND_ARCH_VAR_PREFIX := $(TARGET_2ND_ARCH_VAR_PREFIX) |
| 87 | $(built_odex2): PRIVATE_DEX_LOCATION := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE)) |
| 88 | $(built_odex2): PRIVATE_DEX_PREOPT_IMAGE_LOCATION := $(my_dex_preopt_image_location) |
| 89 | $(built_odex2) : $($(TARGET_2ND_ARCH_VAR_PREFIX)DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT) \ |
| 90 | $(DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS) \ |
| 91 | $(my_dex_preopt_image_filename) |
| 92 | |
| 93 | built_odex += $(built_odex2) |
| 94 | installed_odex += $(call get-odex-file-path,$($(TARGET_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH),$(LOCAL_INSTALLED_MODULE)) |
| 95 | endif # TARGET_2ND_ARCH |
| 96 | # ################################################# |
| 97 | else # must be APPS |
| 98 | # For an app, we build for the multilib arch it's targeted for. |
| 99 | built_odex := $(call get-odex-file-path,$($(LOCAL_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH),$(LOCAL_BUILT_MODULE)) |
| 100 | ifdef LOCAL_DEX_PREOPT_IMAGE_LOCATION |
| 101 | my_dex_preopt_image_location := $(LOCAL_DEX_PREOPT_IMAGE_LOCATION) |
| 102 | else |
| 103 | my_dex_preopt_image_location := $($(LOCAL_2ND_ARCH_VAR_PREFIX)DEFAULT_DEX_PREOPT_BUILT_IMAGE_LOCATION) |
| 104 | endif |
| 105 | my_dex_preopt_image_filename := $(call get-image-file-path,$($(LOCAL_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH),$(my_dex_preopt_image_location)) |
Ying Wang | 36142f6 | 2014-05-21 16:13:33 -0700 | [diff] [blame^] | 106 | $(built_odex): PRIVATE_2ND_ARCH_VAR_PREFIX := $(LOCAL_2ND_ARCH_VAR_PREFIX) |
| 107 | $(built_odex): PRIVATE_DEX_LOCATION := $(patsubst $(PRODUCT_OUT)%,%,$(LOCAL_INSTALLED_MODULE)) |
| 108 | $(built_odex): PRIVATE_DEX_PREOPT_IMAGE_LOCATION := $(my_dex_preopt_image_location) |
| 109 | $(built_odex) : $($(LOCAL_2ND_ARCH_VAR_PREFIX)DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT) \ |
Ying Wang | b9aa5d4 | 2014-05-13 13:57:28 -0700 | [diff] [blame] | 110 | $(DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS) \ |
| 111 | $(my_dex_preopt_image_filename) |
| 112 | installed_odex := $(call get-odex-file-path,$($(LOCAL_2ND_ARCH_VAR_PREFIX)DEX2OAT_TARGET_ARCH),$(LOCAL_INSTALLED_MODULE)) |
| 113 | endif # LOCAL_MODULE_CLASS |
Brian Carlstrom | ced4bff | 2013-11-14 23:44:56 -0800 | [diff] [blame] | 114 | endif # libart |
| 115 | endif # boot jar |
| 116 | |
| 117 | ifdef built_odex |
Ying Wang | b9aa5d4 | 2014-05-13 13:57:28 -0700 | [diff] [blame] | 118 | # Use pattern rule - we may have multiple installed odex files. |
| 119 | # Ugly syntax - See the definition get-odex-file-path. |
| 120 | $(installed_odex) : $(dir $(LOCAL_INSTALLED_MODULE))%/$(notdir $(word 1,$(installed_odex))) \ |
| 121 | : $(dir $(LOCAL_BUILT_MODULE))%/$(notdir $(word 1,$(built_odex))) \ |
Ying Wang | 36142f6 | 2014-05-21 16:13:33 -0700 | [diff] [blame^] | 122 | | $(ACP) |
Brian Carlstrom | ced4bff | 2013-11-14 23:44:56 -0800 | [diff] [blame] | 123 | @echo "Install: $@" |
| 124 | $(copy-file-to-target) |
| 125 | endif |
| 126 | |
| 127 | # Add the installed_odex to the list of installed files for this module. |
| 128 | ALL_MODULES.$(LOCAL_MODULE).INSTALLED += $(installed_odex) |
Ying Wang | 5c7fed2 | 2014-01-22 16:50:21 -0800 | [diff] [blame] | 129 | # Make sure to install the .odex when you run "make <module_name>" |
| 130 | $(my_register_name): $(installed_odex) |
| 131 | |
Brian Carlstrom | ced4bff | 2013-11-14 23:44:56 -0800 | [diff] [blame] | 132 | endif # LOCAL_DEX_PREOPT |