| # 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_VENDOR_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).VENDOR_MODULE),\ |
| $(PDK.DEXPREOPT.$(a).TARGET_ARCH),\ |
| $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).STRIPPED_SRC),\ |
| ))) |