13a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang# Auto-generate module defitions from platform.zip.
23a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang# We use these rules to rebuild .odex files of the .jar/.apk inside the platform.zip.
33a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang#
43a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang
53a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wangpdk_dexpreopt_config_mk := $(TARGET_OUT_INTERMEDIATES)/pdk_dexpreopt_config.mk
63a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang
73a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang$(shell rm -f $(pdk_dexpreopt_config_mk) && mkdir -p $(dir $(pdk_dexpreopt_config_mk)) && \
83a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang        unzip -qo $(PDK_FUSION_PLATFORM_ZIP) -d $(dir $(pdk_dexpreopt_config_mk)) pdk_dexpreopt_config.mk 2>/dev/null)
93a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang
103a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang-include $(pdk_dexpreopt_config_mk)
113a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang
123a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang# Define a PDK prebuilt module that comes from platform.zip.
133a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang# Must be called with $(eval)
143a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wangdefine prebuilt-pdk-java-module
153a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wanginclude $(CLEAR_VARS)
163a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_MODULE:=$(1)
173a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_MODULE_CLASS:=$(2)
183a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang# Use LOCAL_PREBUILT_MODULE_FILE instead of LOCAL_SRC_FILES so we don't need to deal with LOCAL_PATH.
193a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_PREBUILT_MODULE_FILE:=$(3)
203a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_DEX_PREOPT:=$(4)
213a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_MULTILIB:=$(5)
223a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_DEX_PREOPT_FLAGS:=$(6)
233a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_BUILT_MODULE_STEM:=$(7)
243a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_MODULE_SUFFIX:=$(suffix $(7))
253a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_PRIVILEGED_MODULE:=$(8)
2605a2b931e963299563c312af0884f4fddc5fa4f6Dan WillemsenLOCAL_VENDOR_MODULE:=$(9)
273a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_MODULE_TARGET_ARCH:=$(10)
283a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_REPLACE_PREBUILT_APK_INSTALLED:=$(11)
293a61eeb6cb588b9a206bd80814183bcc0263cd13Ying WangLOCAL_CERTIFICATE:=PRESIGNED
303a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wanginclude $(BUILD_PREBUILT)
313a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang
323a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang# The source prebuilts are extracted in the rule of _pdk_fusion_stamp.
333a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang# Use a touch rule to establish the dependency.
343a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang$(3) $(11) : $(_pdk_fusion_stamp)
353a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang	$(hide) if [ ! -f $$@ ]; then \
363a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang	  echo 'Error: $$@ does not exist. Check your platform.zip.' 1>&2; \
373a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang	  exit 1; \
383a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang	fi
393a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang	$(hide) touch $$@
403a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wangendef
413a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang
42efaf5efd06ce0caf739ce48690f2384b37a791d5Ying Wang# We don't have a LOCAL_PATH for the auto-generated modules, so let it be the $(BUILD_SYSTEM).
43efaf5efd06ce0caf739ce48690f2384b37a791d5Ying WangLOCAL_PATH := $(BUILD_SYSTEM)
44efaf5efd06ce0caf739ce48690f2384b37a791d5Ying Wang
453a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang##### Java libraries.
463a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang# Only set up rules for modules that aren't built from source.
473a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wangpdk_prebuilt_libraries := $(foreach l,$(PDK.DEXPREOPT.JAVA_LIBRARIES),\
483a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang  $(if $(MODULE.TARGET.JAVA_LIBRARIES.$(l)),,$(l)))
493a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang
503a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang$(foreach l,$(pdk_prebuilt_libraries), $(eval \
513a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang  $(call prebuilt-pdk-java-module,\
523a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(l),\
533a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    JAVA_LIBRARIES,\
543a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(l).SRC),\
553a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(PDK.DEXPREOPT.$(l).DEX_PREOPT),\
563a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(PDK.DEXPREOPT.$(l).MULTILIB),\
573a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(PDK.DEXPREOPT.$(l).DEX_PREOPT_FLAGS),\
583a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    javalib.jar,\
593a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    )))
603a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang
613a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang###### Apps.
623a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wangpdk_prebuilt_apps := $(foreach a,$(PDK.DEXPREOPT.APPS),\
633a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang  $(if $(MODULE.TARGET.APPS.$(a)),,$(a)))
643a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang
653a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang$(foreach a,$(pdk_prebuilt_apps), $(eval \
663a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang  $(call prebuilt-pdk-java-module,\
673a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(a),\
683a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    APPS,\
693a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).SRC),\
703a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(PDK.DEXPREOPT.$(a).DEX_PREOPT),\
713a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(PDK.DEXPREOPT.$(a).MULTILIB),\
723a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(PDK.DEXPREOPT.$(a).DEX_PREOPT_FLAGS),\
733a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    package.apk,\
743a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(PDK.DEXPREOPT.$(a).PRIVILEGED_MODULE),\
7505a2b931e963299563c312af0884f4fddc5fa4f6Dan Willemsen    $(PDK.DEXPREOPT.$(a).VENDOR_MODULE),\
763a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(PDK.DEXPREOPT.$(a).TARGET_ARCH),\
773a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).STRIPPED_SRC),\
783a61eeb6cb588b9a206bd80814183bcc0263cd13Ying Wang    )))
79