| # Auto-generate module defitions from platform.zip. | 
 | # We use these rules to rebuild .odex files of the .jar/.apk inside the platform.zip. | 
 | # | 
 |  | 
 | pdk_dexpreopt_config_mk := $(TARGET_OUT_INTERMEDIATES)/pdk_dexpreopt_config.mk | 
 |  | 
 | $(shell rm -f $(pdk_dexpreopt_config_mk) && mkdir -p $(dir $(pdk_dexpreopt_config_mk)) && \ | 
 |         unzip -qo $(PDK_FUSION_PLATFORM_ZIP) -d $(dir $(pdk_dexpreopt_config_mk)) pdk_dexpreopt_config.mk 2>/dev/null) | 
 |  | 
 | -include $(pdk_dexpreopt_config_mk) | 
 |  | 
 | # Define a PDK prebuilt module that comes from platform.zip. | 
 | # Must be called with $(eval) | 
 | define prebuilt-pdk-java-module | 
 | include $(CLEAR_VARS) | 
 | LOCAL_MODULE:=$(1) | 
 | LOCAL_MODULE_CLASS:=$(2) | 
 | # Use LOCAL_PREBUILT_MODULE_FILE instead of LOCAL_SRC_FILES so we don't need to deal with LOCAL_PATH. | 
 | LOCAL_PREBUILT_MODULE_FILE:=$(3) | 
 | LOCAL_DEX_PREOPT:=$(4) | 
 | LOCAL_MULTILIB:=$(5) | 
 | LOCAL_DEX_PREOPT_FLAGS:=$(6) | 
 | LOCAL_BUILT_MODULE_STEM:=$(7) | 
 | LOCAL_MODULE_SUFFIX:=$(suffix $(7)) | 
 | LOCAL_PRIVILEGED_MODULE:=$(8) | 
 | LOCAL_PROPRIETARY_MODULE:=$(9) | 
 | LOCAL_MODULE_TARGET_ARCH:=$(10) | 
 | LOCAL_REPLACE_PREBUILT_APK_INSTALLED:=$(11) | 
 | LOCAL_CERTIFICATE:=PRESIGNED | 
 | include $(BUILD_PREBUILT) | 
 |  | 
 | # The source prebuilts are extracted in the rule of _pdk_fusion_stamp. | 
 | # Use a touch rule to establish the dependency. | 
 | $(3) $(11) : $(_pdk_fusion_stamp) | 
 | 	$(hide) if [ ! -f $$@ ]; then \ | 
 | 	  echo 'Error: $$@ does not exist. Check your platform.zip.' 1>&2; \ | 
 | 	  exit 1; \ | 
 | 	fi | 
 | 	$(hide) touch $$@ | 
 | endef | 
 |  | 
 | # We don't have a LOCAL_PATH for the auto-generated modules, so let it be the $(BUILD_SYSTEM). | 
 | LOCAL_PATH := $(BUILD_SYSTEM) | 
 |  | 
 | ##### Java libraries. | 
 | # Only set up rules for modules that aren't built from source. | 
 | pdk_prebuilt_libraries := $(foreach l,$(PDK.DEXPREOPT.JAVA_LIBRARIES),\ | 
 |   $(if $(MODULE.TARGET.JAVA_LIBRARIES.$(l)),,$(l))) | 
 |  | 
 | $(foreach l,$(pdk_prebuilt_libraries), $(eval \ | 
 |   $(call prebuilt-pdk-java-module,\ | 
 |     $(l),\ | 
 |     JAVA_LIBRARIES,\ | 
 |     $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(l).SRC),\ | 
 |     $(PDK.DEXPREOPT.$(l).DEX_PREOPT),\ | 
 |     $(PDK.DEXPREOPT.$(l).MULTILIB),\ | 
 |     $(PDK.DEXPREOPT.$(l).DEX_PREOPT_FLAGS),\ | 
 |     javalib.jar,\ | 
 |     ))) | 
 |  | 
 | ###### Apps. | 
 | pdk_prebuilt_apps := $(foreach a,$(PDK.DEXPREOPT.APPS),\ | 
 |   $(if $(MODULE.TARGET.APPS.$(a)),,$(a))) | 
 |  | 
 | $(foreach a,$(pdk_prebuilt_apps), $(eval \ | 
 |   $(call prebuilt-pdk-java-module,\ | 
 |     $(a),\ | 
 |     APPS,\ | 
 |     $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).SRC),\ | 
 |     $(PDK.DEXPREOPT.$(a).DEX_PREOPT),\ | 
 |     $(PDK.DEXPREOPT.$(a).MULTILIB),\ | 
 |     $(PDK.DEXPREOPT.$(a).DEX_PREOPT_FLAGS),\ | 
 |     package.apk,\ | 
 |     $(PDK.DEXPREOPT.$(a).PRIVILEGED_MODULE),\ | 
 |     $(PDK.DEXPREOPT.$(a).PROPRIETARY_MODULE),\ | 
 |     $(PDK.DEXPREOPT.$(a).TARGET_ARCH),\ | 
 |     $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).STRIPPED_SRC),\ | 
 |     ))) |