blob: 235acf9378989dbf6a4146cc0d1bcdb5fd2e4c9e [file] [log] [blame]
Ying Wang3a61eeb2016-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
Dan Willemsen0663f682018-03-06 14:07:21 -08005ifdef PDK_FUSION_PLATFORM_ZIP
Ying Wang3a61eeb2016-03-11 10:32:01 -08006pdk_dexpreopt_config_mk := $(TARGET_OUT_INTERMEDIATES)/pdk_dexpreopt_config.mk
7
8$(shell rm -f $(pdk_dexpreopt_config_mk) && mkdir -p $(dir $(pdk_dexpreopt_config_mk)) && \
9 unzip -qo $(PDK_FUSION_PLATFORM_ZIP) -d $(dir $(pdk_dexpreopt_config_mk)) pdk_dexpreopt_config.mk 2>/dev/null)
Dan Willemsen0663f682018-03-06 14:07:21 -080010endif
11
12ifdef PDK_FUSION_PLATFORM_DIR
13pdk_dexpreopt_config_mk := $(PDK_FUSION_PLATFORM_DIR)/pdk_dexpreopt_config.mk
14endif
Ying Wang3a61eeb2016-03-11 10:32:01 -080015
16-include $(pdk_dexpreopt_config_mk)
17
18# Define a PDK prebuilt module that comes from platform.zip.
19# Must be called with $(eval)
20define prebuilt-pdk-java-module
21include $(CLEAR_VARS)
22LOCAL_MODULE:=$(1)
23LOCAL_MODULE_CLASS:=$(2)
24# Use LOCAL_PREBUILT_MODULE_FILE instead of LOCAL_SRC_FILES so we don't need to deal with LOCAL_PATH.
25LOCAL_PREBUILT_MODULE_FILE:=$(3)
26LOCAL_DEX_PREOPT:=$(4)
27LOCAL_MULTILIB:=$(5)
28LOCAL_DEX_PREOPT_FLAGS:=$(6)
29LOCAL_BUILT_MODULE_STEM:=$(7)
30LOCAL_MODULE_SUFFIX:=$(suffix $(7))
31LOCAL_PRIVILEGED_MODULE:=$(8)
Dan Willemsen05a2b932017-03-20 18:31:17 -070032LOCAL_VENDOR_MODULE:=$(9)
Ying Wang3a61eeb2016-03-11 10:32:01 -080033LOCAL_MODULE_TARGET_ARCH:=$(10)
34LOCAL_REPLACE_PREBUILT_APK_INSTALLED:=$(11)
35LOCAL_CERTIFICATE:=PRESIGNED
36include $(BUILD_PREBUILT)
37
38# The source prebuilts are extracted in the rule of _pdk_fusion_stamp.
39# Use a touch rule to establish the dependency.
Dan Willemsen9b7c1e42018-11-05 10:40:45 -080040ifndef PDK_FUSION_PLATFORM_DIR
Ying Wang3a61eeb2016-03-11 10:32:01 -080041$(3) $(11) : $(_pdk_fusion_stamp)
42 $(hide) if [ ! -f $$@ ]; then \
43 echo 'Error: $$@ does not exist. Check your platform.zip.' 1>&2; \
44 exit 1; \
45 fi
46 $(hide) touch $$@
Dan Willemsen9b7c1e42018-11-05 10:40:45 -080047endif
Ying Wang3a61eeb2016-03-11 10:32:01 -080048endef
49
Ying Wangefaf5ef2016-03-24 17:24:38 -070050# We don't have a LOCAL_PATH for the auto-generated modules, so let it be the $(BUILD_SYSTEM).
51LOCAL_PATH := $(BUILD_SYSTEM)
52
Ying Wang3a61eeb2016-03-11 10:32:01 -080053##### Java libraries.
54# Only set up rules for modules that aren't built from source.
55pdk_prebuilt_libraries := $(foreach l,$(PDK.DEXPREOPT.JAVA_LIBRARIES),\
56 $(if $(MODULE.TARGET.JAVA_LIBRARIES.$(l)),,$(l)))
57
58$(foreach l,$(pdk_prebuilt_libraries), $(eval \
59 $(call prebuilt-pdk-java-module,\
60 $(l),\
61 JAVA_LIBRARIES,\
62 $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(l).SRC),\
63 $(PDK.DEXPREOPT.$(l).DEX_PREOPT),\
64 $(PDK.DEXPREOPT.$(l).MULTILIB),\
65 $(PDK.DEXPREOPT.$(l).DEX_PREOPT_FLAGS),\
66 javalib.jar,\
67 )))
68
69###### Apps.
70pdk_prebuilt_apps := $(foreach a,$(PDK.DEXPREOPT.APPS),\
71 $(if $(MODULE.TARGET.APPS.$(a)),,$(a)))
72
73$(foreach a,$(pdk_prebuilt_apps), $(eval \
74 $(call prebuilt-pdk-java-module,\
75 $(a),\
76 APPS,\
77 $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).SRC),\
78 $(PDK.DEXPREOPT.$(a).DEX_PREOPT),\
79 $(PDK.DEXPREOPT.$(a).MULTILIB),\
80 $(PDK.DEXPREOPT.$(a).DEX_PREOPT_FLAGS),\
81 package.apk,\
82 $(PDK.DEXPREOPT.$(a).PRIVILEGED_MODULE),\
Dan Willemsen05a2b932017-03-20 18:31:17 -070083 $(PDK.DEXPREOPT.$(a).VENDOR_MODULE),\
Ying Wang3a61eeb2016-03-11 10:32:01 -080084 $(PDK.DEXPREOPT.$(a).TARGET_ARCH),\
85 $(_pdk_fusion_intermediates)/$(PDK.DEXPREOPT.$(a).STRIPPED_SRC),\
86 )))