9b7c1e4393
The PDK unzip logic does not place all the files in the same directory it would place a zipfile, but instead inside a directory of the same name: a/b/platform.zip!pdk.mk turns into: a/b/platform/pdk.mk So fix the PDK_FUISON_PLATFORM_DIR autodetection to take this into account. Also don't create touch rules for the pre-extracted java files. Bug: 118776469 Test: try building the PDK with PDK_FUSION_PLATFORM_ZIP set, and files extracted Change-Id: Ib27d12aba773a5e6bd41fcbe8945a0bc31b8c281
86 lines
2.8 KiB
Makefile
86 lines
2.8 KiB
Makefile
# Auto-generate module defitions from platform.zip.
|
|
# We use these rules to rebuild .odex files of the .jar/.apk inside the platform.zip.
|
|
#
|
|
|
|
ifdef PDK_FUSION_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)
|
|
endif
|
|
|
|
ifdef PDK_FUSION_PLATFORM_DIR
|
|
pdk_dexpreopt_config_mk := $(PDK_FUSION_PLATFORM_DIR)/pdk_dexpreopt_config.mk
|
|
endif
|
|
|
|
-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.
|
|
ifndef PDK_FUSION_PLATFORM_DIR
|
|
$(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 $$@
|
|
endif
|
|
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),\
|
|
)))
|