1ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom# dexpreopt_odex_install.mk is used to define odex creation rules for JARs and APKs 2ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom# This file depends on variables set in base_rules.mk 3ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom# Output variables: LOCAL_DEX_PREOPT, built_odex, dexpreopt_boot_jar_module 4ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom 5ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom# Setting LOCAL_DEX_PREOPT based on WITH_DEXPREOPT, LOCAL_DEX_PREOPT, etc 6ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian CarlstromLOCAL_DEX_PREOPT := $(strip $(LOCAL_DEX_PREOPT)) 7ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifneq (true,$(WITH_DEXPREOPT)) 8ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom LOCAL_DEX_PREOPT := 9ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromelse # WITH_DEXPREOPT=true 10ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom ifeq (,$(TARGET_BUILD_APPS)) # TARGET_BUILD_APPS empty 119db168ca5ce93cbb43f7245f7163f1be2ff06d54Ying Wang ifndef LOCAL_DEX_PREOPT # LOCAL_DEX_PREOPT undefined 12edfd55ae999eb7bfc932cfa88a1a8dcd6bad1169Ying Wang ifneq ($(filter $(TARGET_OUT)/%,$(my_module_path)),) # Installed to system.img. 13edfd55ae999eb7bfc932cfa88a1a8dcd6bad1169Ying Wang ifeq (,$(LOCAL_APK_LIBRARIES)) # LOCAL_APK_LIBRARIES empty 14edfd55ae999eb7bfc932cfa88a1a8dcd6bad1169Ying Wang LOCAL_DEX_PREOPT := $(DEX_PREOPT_DEFAULT) 15edfd55ae999eb7bfc932cfa88a1a8dcd6bad1169Ying Wang else # LOCAL_APK_LIBRARIES not empty 16edfd55ae999eb7bfc932cfa88a1a8dcd6bad1169Ying Wang LOCAL_DEX_PREOPT := nostripping 17edfd55ae999eb7bfc932cfa88a1a8dcd6bad1169Ying Wang endif # LOCAL_APK_LIBRARIES not empty 18edfd55ae999eb7bfc932cfa88a1a8dcd6bad1169Ying Wang endif # Installed to system.img. 199db168ca5ce93cbb43f7245f7163f1be2ff06d54Ying Wang endif # LOCAL_DEX_PREOPT undefined 20ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom endif # TARGET_BUILD_APPS empty 21ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif # WITH_DEXPREOPT=true 22ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifeq (false,$(LOCAL_DEX_PREOPT)) 23ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom LOCAL_DEX_PREOPT := 24ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif 25ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifdef LOCAL_UNINSTALLABLE_MODULE 26ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian CarlstromLOCAL_DEX_PREOPT := 27ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif 2862fb8a1f5591d1b664ba6ee3bad5bb8c83c5eaefYing Wangifeq (,$(strip $(built_dex)$(my_prebuilt_src_file))) # contains no java code 29ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian CarlstromLOCAL_DEX_PREOPT := 30ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif 31ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom# if module oat file requested in data, disable LOCAL_DEX_PREOPT, will default location to dalvik-cache 32ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifneq (,$(filter $(LOCAL_MODULE),$(PRODUCT_DEX_PREOPT_PACKAGES_IN_DATA))) 33ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian CarlstromLOCAL_DEX_PREOPT := 34ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif 357326f7b746b82ec60d7381f1fe967a2cd8c7f8e9Alex Light# if WITH_DEXPREOPT_BOOT_IMG_ONLY=true and module is not in boot class path skip 367326f7b746b82ec60d7381f1fe967a2cd8c7f8e9Alex Lightifeq (true,$(WITH_DEXPREOPT_BOOT_IMG_ONLY)) 377326f7b746b82ec60d7381f1fe967a2cd8c7f8e9Alex Lightifeq ($(filter $(DEXPREOPT_BOOT_JARS_MODULES),$(LOCAL_MODULE)),) 387326f7b746b82ec60d7381f1fe967a2cd8c7f8e9Alex LightLOCAL_DEX_PREOPT := 397326f7b746b82ec60d7381f1fe967a2cd8c7f8e9Alex Lightendif 407326f7b746b82ec60d7381f1fe967a2cd8c7f8e9Alex Lightendif 41ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom 42ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrombuilt_odex := 43ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrominstalled_odex := 4474c9850c795303b2ee60e5c4d8494385e0e57d58Ying Wangbuilt_installed_odex := 45ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifdef LOCAL_DEX_PREOPT 46ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromdexpreopt_boot_jar_module := $(filter $(DEXPREOPT_BOOT_JARS_MODULES),$(LOCAL_MODULE)) 47ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifdef dexpreopt_boot_jar_module 48ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifeq ($(DALVIK_VM_LIB),libdvm.so) 49ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrombuilt_odex := $(basename $(LOCAL_BUILT_MODULE)).odex 50ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrominstalled_odex := $(basename $(LOCAL_INSTALLED_MODULE)).odex 5174c9850c795303b2ee60e5c4d8494385e0e57d58Ying Wangbuilt_installed_odex := $(built_odex):$(installed_odex) 52ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromelse # libdvm.so 53ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom# For libart, the boot jars' odex files are replaced by $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE). 54ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom# We use this installed_odex trick to get boot.art installed. 55ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrominstalled_odex := $(DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) 56b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# Append the odex for the 2nd arch if we have one. 57b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wanginstalled_odex += $($(TARGET_2ND_ARCH_VAR_PREFIX)DEFAULT_DEX_PREOPT_INSTALLED_IMAGE) 58ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif # libdvm.so 59ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromelse # boot jar 60b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wangifeq ($(DALVIK_VM_LIB),libdvm.so) 61ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrombuilt_odex := $(basename $(LOCAL_BUILT_MODULE)).odex 62ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrominstalled_odex := $(basename $(LOCAL_INSTALLED_MODULE)).odex 6374c9850c795303b2ee60e5c4d8494385e0e57d58Ying Wangbuilt_installed_odex := $(built_odex):$(installed_odex) 64ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom 65b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang$(built_odex) : $(DEXPREOPT_ONE_FILE_DEPENDENCY_BUILT_BOOT_PREOPT) \ 66b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang $(DEXPREOPT_ONE_FILE_DEPENDENCY_TOOLS) 67b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wangelse # libart 68b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wangifeq ($(LOCAL_MODULE_CLASS),JAVA_LIBRARIES) 69b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# For a Java library, we build odex for both 1st arch and 2nd arch, if we have one. 70b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# ################################################# 71b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# Odex for the 1st arch 72db48da78448b35b2a51f01031b1534ddba16c920Ying Wangmy_2nd_arch_prefix := 73db48da78448b35b2a51f01031b1534ddba16c920Ying Wanginclude $(BUILD_SYSTEM)/setup_one_odex.mk 74b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# ################################################# 75b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# Odex for the 2nd arch 76b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wangifdef TARGET_2ND_ARCH 77db48da78448b35b2a51f01031b1534ddba16c920Ying Wangmy_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX) 78db48da78448b35b2a51f01031b1534ddba16c920Ying Wanginclude $(BUILD_SYSTEM)/setup_one_odex.mk 79b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wangendif # TARGET_2ND_ARCH 80b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# ################################################# 81b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wangelse # must be APPS 82db48da78448b35b2a51f01031b1534ddba16c920Ying Wang# The preferred arch 83db48da78448b35b2a51f01031b1534ddba16c920Ying Wangmy_2nd_arch_prefix := $(LOCAL_2ND_ARCH_VAR_PREFIX) 84db48da78448b35b2a51f01031b1534ddba16c920Ying Wanginclude $(BUILD_SYSTEM)/setup_one_odex.mk 857a8991991f6459945782175b0cda7d03fbf6cbdeYing Wangifdef TARGET_2ND_ARCH 86db48da78448b35b2a51f01031b1534ddba16c920Ying Wangifeq ($(LOCAL_MULTILIB),both) 87db48da78448b35b2a51f01031b1534ddba16c920Ying Wang# The non-preferred arch 88db48da78448b35b2a51f01031b1534ddba16c920Ying Wangmy_2nd_arch_prefix := $(if $(LOCAL_2ND_ARCH_VAR_PREFIX),,$(TARGET_2ND_ARCH_VAR_PREFIX)) 89db48da78448b35b2a51f01031b1534ddba16c920Ying Wanginclude $(BUILD_SYSTEM)/setup_one_odex.mk 90db48da78448b35b2a51f01031b1534ddba16c920Ying Wangendif # LOCAL_MULTILIB is both 917a8991991f6459945782175b0cda7d03fbf6cbdeYing Wangendif # TARGET_2ND_ARCH 92b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wangendif # LOCAL_MODULE_CLASS 937a8991991f6459945782175b0cda7d03fbf6cbdeYing Wangendif # libart 947a8991991f6459945782175b0cda7d03fbf6cbdeYing Wangendif # boot jar 95ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom 96ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromifdef built_odex 97b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# Use pattern rule - we may have multiple installed odex files. 98b9aa5d43de114cecdf94fabb23d3f61f147b627dYing Wang# Ugly syntax - See the definition get-odex-file-path. 99994c226b91d0b9695cfde8dabb8f243e9f53be64Ying Wang$(installed_odex) : $(dir $(LOCAL_INSTALLED_MODULE))%$(notdir $(word 1,$(installed_odex))) \ 100994c226b91d0b9695cfde8dabb8f243e9f53be64Ying Wang : $(dir $(LOCAL_BUILT_MODULE))%$(notdir $(word 1,$(built_odex))) \ 10136142f64aef3da56a6e70589dad634b5babc0c31Ying Wang | $(ACP) 102ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom @echo "Install: $@" 103ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom $(copy-file-to-target) 104ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif 105ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom 106ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstrom# Add the installed_odex to the list of installed files for this module. 10774c9850c795303b2ee60e5c4d8494385e0e57d58Ying WangALL_MODULES.$(my_register_name).INSTALLED += $(installed_odex) 10874c9850c795303b2ee60e5c4d8494385e0e57d58Ying WangALL_MODULES.$(my_register_name).BUILT_INSTALLED += $(built_installed_odex) 10974c9850c795303b2ee60e5c4d8494385e0e57d58Ying Wang 1105c7fed28f2c06e80182a08e36318d66e494a5a33Ying Wang# Make sure to install the .odex when you run "make <module_name>" 1115c7fed28f2c06e80182a08e36318d66e494a5a33Ying Wang$(my_register_name): $(installed_odex) 1125c7fed28f2c06e80182a08e36318d66e494a5a33Ying Wang 113ced4bff58e76a16ebce3a35ed24aadc8490ca39bBrian Carlstromendif # LOCAL_DEX_PREOPT 114