blob: 369ecbbbedb01709cc765892612b45067e4d2321 [file] [log] [blame]
Ying Wangfbc5b9f2016-03-11 10:32:01 -08001# 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##### Java libraries.
43# Only set up rules for modules that aren't built from source.
44pdk_prebuilt_libraries := $(foreach l,$(PDK.DEXPREOPT.JAVA_LIBRARIES),\
45 $(if $(MODULE.TARGET.JAVA_LIBRARIES.$(l)),,$(l)))
46
47$(foreach l,$(pdk_prebuilt_libraries), $(eval \
48 $(call prebuilt-pdk-java-module,\
49 $(l),\
50 JAVA_LIBRARIES,\
51 $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(l).SRC),\
52 $(PDK.DEXPREOPT.$(l).DEX_PREOPT),\
53 $(PDK.DEXPREOPT.$(l).MULTILIB),\
54 $(PDK.DEXPREOPT.$(l).DEX_PREOPT_FLAGS),\
55 javalib.jar,\
56 )))
57
58###### Apps.
59pdk_prebuilt_apps := $(foreach a,$(PDK.DEXPREOPT.APPS),\
60 $(if $(MODULE.TARGET.APPS.$(a)),,$(a)))
61
62$(foreach a,$(pdk_prebuilt_apps), $(eval \
63 $(call prebuilt-pdk-java-module,\
64 $(a),\
65 APPS,\
66 $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).SRC),\
67 $(PDK.DEXPREOPT.$(a).DEX_PREOPT),\
68 $(PDK.DEXPREOPT.$(a).MULTILIB),\
69 $(PDK.DEXPREOPT.$(a).DEX_PREOPT_FLAGS),\
70 package.apk,\
71 $(PDK.DEXPREOPT.$(a).PRIVILEGED_MODULE),\
72 $(PDK.DEXPREOPT.$(a).PROPRIETARY_MODULE),\
73 $(PDK.DEXPREOPT.$(a).TARGET_ARCH),\
74 $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).STRIPPED_SRC),\
75 )))