1# Auto-generate module defitions from platform.zip. 2# We use these rules to rebuild .odex files of the .jar/.apk inside the platform.zip. 3# 4 5pdk_dexpreopt_config_mk := $(TARGET_OUT_INTERMEDIATES)/pdk_dexpreopt_config.mk 6 7$(shell rm -f $(pdk_dexpreopt_config_mk) && mkdir -p $(dir $(pdk_dexpreopt_config_mk)) && \ 8 unzip -qo $(PDK_FUSION_PLATFORM_ZIP) -d $(dir $(pdk_dexpreopt_config_mk)) pdk_dexpreopt_config.mk 2>/dev/null) 9 10-include $(pdk_dexpreopt_config_mk) 11 12# Define a PDK prebuilt module that comes from platform.zip. 13# Must be called with $(eval) 14define prebuilt-pdk-java-module 15include $(CLEAR_VARS) 16LOCAL_MODULE:=$(1) 17LOCAL_MODULE_CLASS:=$(2) 18# Use LOCAL_PREBUILT_MODULE_FILE instead of LOCAL_SRC_FILES so we don't need to deal with LOCAL_PATH. 19LOCAL_PREBUILT_MODULE_FILE:=$(3) 20LOCAL_DEX_PREOPT:=$(4) 21LOCAL_MULTILIB:=$(5) 22LOCAL_DEX_PREOPT_FLAGS:=$(6) 23LOCAL_BUILT_MODULE_STEM:=$(7) 24LOCAL_MODULE_SUFFIX:=$(suffix $(7)) 25LOCAL_PRIVILEGED_MODULE:=$(8) 26LOCAL_PROPRIETARY_MODULE:=$(9) 27LOCAL_MODULE_TARGET_ARCH:=$(10) 28LOCAL_REPLACE_PREBUILT_APK_INSTALLED:=$(11) 29LOCAL_CERTIFICATE:=PRESIGNED 30include $(BUILD_PREBUILT) 31 32# The source prebuilts are extracted in the rule of _pdk_fusion_stamp. 33# Use a touch rule to establish the dependency. 34$(3) $(11) : $(_pdk_fusion_stamp) 35 $(hide) if [ ! -f $$@ ]; then \ 36 echo 'Error: $$@ does not exist. Check your platform.zip.' 1>&2; \ 37 exit 1; \ 38 fi 39 $(hide) touch $$@ 40endef 41 42# We don't have a LOCAL_PATH for the auto-generated modules, so let it be the $(BUILD_SYSTEM). 43LOCAL_PATH := $(BUILD_SYSTEM) 44 45##### Java libraries. 46# Only set up rules for modules that aren't built from source. 47pdk_prebuilt_libraries := $(foreach l,$(PDK.DEXPREOPT.JAVA_LIBRARIES),\ 48 $(if $(MODULE.TARGET.JAVA_LIBRARIES.$(l)),,$(l))) 49 50$(foreach l,$(pdk_prebuilt_libraries), $(eval \ 51 $(call prebuilt-pdk-java-module,\ 52 $(l),\ 53 JAVA_LIBRARIES,\ 54 $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(l).SRC),\ 55 $(PDK.DEXPREOPT.$(l).DEX_PREOPT),\ 56 $(PDK.DEXPREOPT.$(l).MULTILIB),\ 57 $(PDK.DEXPREOPT.$(l).DEX_PREOPT_FLAGS),\ 58 javalib.jar,\ 59 ))) 60 61###### Apps. 62pdk_prebuilt_apps := $(foreach a,$(PDK.DEXPREOPT.APPS),\ 63 $(if $(MODULE.TARGET.APPS.$(a)),,$(a))) 64 65$(foreach a,$(pdk_prebuilt_apps), $(eval \ 66 $(call prebuilt-pdk-java-module,\ 67 $(a),\ 68 APPS,\ 69 $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).SRC),\ 70 $(PDK.DEXPREOPT.$(a).DEX_PREOPT),\ 71 $(PDK.DEXPREOPT.$(a).MULTILIB),\ 72 $(PDK.DEXPREOPT.$(a).DEX_PREOPT_FLAGS),\ 73 package.apk,\ 74 $(PDK.DEXPREOPT.$(a).PRIVILEGED_MODULE),\ 75 $(PDK.DEXPREOPT.$(a).PROPRIETARY_MODULE),\ 76 $(PDK.DEXPREOPT.$(a).TARGET_ARCH),\ 77 $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).STRIPPED_SRC),\ 78 ))) 79