From 0663f685c220d825f4f163533e3bdd1f5765fb94 Mon Sep 17 00:00:00 2001 From: Dan Willemsen Date: Tue, 6 Mar 2018 14:07:21 -0800 Subject: [PATCH] Support a pre-extracted PDK zip Pre-extracting the zip files are more sustainable for git, so that objects can be shared if unchanged, rather than the 900MB zip file changing on every build. This also has the advantage that we could put an Android.bp file inside the PDK, and Soong would just pick it up. Bug: 68767391 Test: Build mini_arm64 PDK with platform.zip Test: Build mini_arm64 PDK with extracted zip file Change-Id: I16db030a731aea55b69c1d6e2260dbd70b167544 --- core/Makefile | 15 ++-- core/config.mk | 69 +++++++++++----- core/main.mk | 4 +- core/pdk_config.mk | 159 +++++++++++++++++++++---------------- core/pdk_fusion_modules.mk | 6 ++ 5 files changed, 158 insertions(+), 95 deletions(-) diff --git a/core/Makefile b/core/Makefile index 19e69ac23..10ca65be2 100644 --- a/core/Makefile +++ b/core/Makefile @@ -1457,7 +1457,8 @@ INTERNAL_SYSTEMIMAGE_FILES := $(filter $(TARGET_OUT)/%, \ $(ALL_GENERATED_SOURCES) \ $(ALL_DEFAULT_INSTALLED_MODULES) \ $(PDK_FUSION_SYSIMG_FILES) \ - $(RECOVERY_RESOURCE_ZIP)) + $(RECOVERY_RESOURCE_ZIP)) \ + $(PDK_FUSION_SYMLINK_STAMP) FULL_SYSTEMIMAGE_DEPS := $(INTERNAL_SYSTEMIMAGE_FILES) $(INTERNAL_USERIMAGES_DEPS) @@ -1694,7 +1695,8 @@ ifneq ($(PDK_PLATFORM_ZIP_PRODUCT_BINARIES),) endif @# Add dex-preopt files and config. $(if $(PRIVATE_DEX_FILES),$(hide) cd $(OUT_DIR) && zip -qryX $(patsubst $(OUT_DIR)/%,%,$@ $(PRIVATE_DEX_FILES))) - $(hide) zip -qryXj $@ $(PRIVATE_ODEX_CONFIG) + $(hide) touch $(PRODUCT_OUT)/pdk.mk + $(hide) zip -qryXj $@ $(PRIVATE_ODEX_CONFIG) $(PRODUCT_OUT)/pdk.mk .PHONY: platform platform: $(INSTALLED_PLATFORM_ZIP) @@ -1901,7 +1903,8 @@ ifdef BOARD_USES_SYSTEM_OTHER INTERNAL_SYSTEMOTHERIMAGE_FILES := \ $(filter $(TARGET_OUT_SYSTEM_OTHER)/%,\ $(ALL_DEFAULT_INSTALLED_MODULES)\ - $(ALL_PDK_FUSION_FILES)) + $(ALL_PDK_FUSION_FILES)) \ + $(PDK_FUSION_SYMLINK_STAMP) INSTALLED_FILES_FILE_SYSTEMOTHER := $(PRODUCT_OUT)/installed-files-system-other.txt $(INSTALLED_FILES_FILE_SYSTEMOTHER) : $(INTERNAL_SYSTEMOTHERIMAGE_FILES) $(FILESLIST) @@ -1948,7 +1951,8 @@ ifdef BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE INTERNAL_VENDORIMAGE_FILES := \ $(filter $(TARGET_OUT_VENDOR)/%,\ $(ALL_DEFAULT_INSTALLED_MODULES)\ - $(ALL_PDK_FUSION_FILES)) + $(ALL_PDK_FUSION_FILES)) \ + $(PDK_FUSION_SYMLINK_STAMP) # platform.zip depends on $(INTERNAL_VENDORIMAGE_FILES). $(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_VENDORIMAGE_FILES) @@ -1999,7 +2003,8 @@ ifdef BOARD_PRODUCTIMAGE_FILE_SYSTEM_TYPE INTERNAL_PRODUCTIMAGE_FILES := \ $(filter $(TARGET_OUT_PRODUCT)/%,\ $(ALL_DEFAULT_INSTALLED_MODULES)\ - $(ALL_PDK_FUSION_FILES)) + $(ALL_PDK_FUSION_FILES)) \ + $(PDK_FUSION_SYMLINK_STAMP) # platform.zip depends on $(INTERNAL_PRODUCTIMAGE_FILES). $(INSTALLED_PLATFORM_ZIP) : $(INTERNAL_PRODUCTIMAGE_FILES) diff --git a/core/config.mk b/core/config.mk index 744862313..fbd4696f6 100644 --- a/core/config.mk +++ b/core/config.mk @@ -439,9 +439,9 @@ pdk fusion: $(DEFAULT_GOAL) # What to build: # pdk fusion if: -# 1) PDK_FUSION_PLATFORM_ZIP is passed in from the environment +# 1) PDK_FUSION_PLATFORM_ZIP / PDK_FUSION_PLATFORM_DIR is passed in from the environment # or -# 2) the platform.zip exists in the default location +# 2) the platform.zip / pdk.mk exists in the default location # or # 3) fusion is a command line build goal, # PDK_FUSION_PLATFORM_ZIP is needed anyway, then do we need the 'fusion' goal? @@ -450,27 +450,44 @@ pdk fusion: $(DEFAULT_GOAL) # or # 2) TARGET_BUILD_PDK is passed in from the environment -# if PDK_FUSION_PLATFORM_ZIP is specified, do not override. -ifndef PDK_FUSION_PLATFORM_ZIP -# Most PDK project paths should be using vendor/pdk/TARGET_DEVICE -# but some legacy ones (e.g. mini_armv7a_neon generic PDK) were setup -# with vendor/pdk/TARGET_PRODUCT. -_pdk_fusion_default_platform_zip = $(strip \ - $(wildcard vendor/pdk/$(TARGET_DEVICE)/$(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)/platform/platform.zip) \ - $(wildcard vendor/pdk/$(TARGET_DEVICE)/$(patsubst aosp_%,full_%,$(TARGET_PRODUCT))-$(TARGET_BUILD_VARIANT)/platform/platform.zip) \ - $(wildcard vendor/pdk/$(TARGET_PRODUCT)/$(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)/platform/platform.zip) \ - $(wildcard vendor/pdk/$(TARGET_PRODUCT)/$(patsubst aosp_%,full_%,$(TARGET_PRODUCT))-$(TARGET_BUILD_VARIANT)/platform/platform.zip)) -ifneq (,$(_pdk_fusion_default_platform_zip)) -PDK_FUSION_PLATFORM_ZIP := $(word 1, $(_pdk_fusion_default_platform_zip)) -TARGET_BUILD_PDK := true -endif # _pdk_fusion_default_platform_zip -endif # !PDK_FUSION_PLATFORM_ZIP +# if PDK_FUSION_PLATFORM_ZIP or PDK_FUSION_PLATFORM_DIR is specified, do not override. +ifeq (,$(strip $(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR))) + # Most PDK project paths should be using vendor/pdk/TARGET_DEVICE + # but some legacy ones (e.g. mini_armv7a_neon generic PDK) were setup + # with vendor/pdk/TARGET_PRODUCT. + # Others are set up with vendor/pdk/TARGET_DEVICE/TARGET_DEVICE-userdebug + _pdk_fusion_search_paths := \ + vendor/pdk/$(TARGET_DEVICE)/$(TARGET_DEVICE)-$(TARGET_BUILD_VARIANT)/platform \ + vendor/pdk/$(TARGET_DEVICE)/$(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)/platform \ + vendor/pdk/$(TARGET_DEVICE)/$(patsubst aosp_%,full_%,$(TARGET_PRODUCT))-$(TARGET_BUILD_VARIANT)/platform \ + vendor/pdk/$(TARGET_PRODUCT)/$(TARGET_PRODUCT)-$(TARGET_BUILD_VARIANT)/platform \ + vendor/pdk/$(TARGET_PRODUCT)/$(patsubst aosp_%,full_%,$(TARGET_PRODUCT))-$(TARGET_BUILD_VARIANT)/platform + + _pdk_fusion_default_platform_zip := $(strip $(foreach p,$(_pdk_fusion_search_paths),$(wildcard $(p)/platform.zip))) + ifneq (,$(_pdk_fusion_default_platform_zip)) + PDK_FUSION_PLATFORM_ZIP := $(word 1, $(_pdk_fusion_default_platform_zip)) + _pdk_fusion_default_platform_zip := + else + _pdk_fusion_default_platform_mk := $(strip $(foreach p,$(_pdk_fusion_search_paths),$(wildcard $(p)/pdk.mk))) + ifneq (,$(_pdk_fusion_default_platform_mk)) + PDK_FUSION_PLATFORM_DIR := $(dir $(word 1,$(_pdk_fusion_default_platform_mk))) + _pdk_fusion_default_platform_mk := + endif + endif # _pdk_fusion_default_platform_zip + _pdk_fusion_search_paths := +endif # !PDK_FUSION_PLATFORM_ZIP && !PDK_FUSION_PLATFORM_DIR + +ifneq (,$(PDK_FUSION_PLATFORM_ZIP)) + ifneq (,$(PDK_FUSION_PLATFORM_DIR)) + $(error Only one of PDK_FUSION_PLATFORM_ZIP or PDK_FUSION_PLATFORM_DIR may be specified) + endif +endif ifneq (,$(filter pdk fusion, $(MAKECMDGOALS))) TARGET_BUILD_PDK := true ifneq (,$(filter fusion, $(MAKECMDGOALS))) -ifndef PDK_FUSION_PLATFORM_ZIP - $(error Specify PDK_FUSION_PLATFORM_ZIP to do a PDK fusion.) +ifeq (,$(strip $(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR))) + $(error Specify PDK_FUSION_PLATFORM_ZIP or PDK_FUSION_PLATFORM_DIR to do a PDK fusion.) endif endif # fusion endif # pdk or fusion @@ -478,7 +495,19 @@ endif # pdk or fusion ifdef PDK_FUSION_PLATFORM_ZIP TARGET_BUILD_PDK := true ifeq (,$(wildcard $(PDK_FUSION_PLATFORM_ZIP))) - $(error Cannot find file $(PDK_FUSION_PLATFORM_ZIP).) + ifneq (,$(wildcard $(dir $(PDK_FUSION_PLATFORM_ZIP))/pdk.mk)) + PDK_FUSION_PLATFORM_DIR := $(dir $(PDK_FUSION_PLATFORM_ZIP)) + PDK_FUSION_PLATFORM_ZIP := + else + $(error Cannot find file $(PDK_FUSION_PLATFORM_ZIP).) + endif +endif +endif + +ifdef PDK_FUSION_PLATFORM_DIR +TARGET_BUILD_PDK := true +ifeq (,$(wildcard $(PDK_FUSION_PLATFORM_DIR)/pdk.mk)) + $(error Cannot find file $(PDK_FUSION_PLATFORM_DIR)/pdk.mk.) endif endif diff --git a/core/main.mk b/core/main.mk index 0317a8980..da88613d7 100644 --- a/core/main.mk +++ b/core/main.mk @@ -447,10 +447,10 @@ subdir_makefiles_total := $(words $(subdir_makefiles)) $(foreach mk,$(subdir_makefiles),$(info [$(call inc_and_print,subdir_makefiles_inc)/$(subdir_makefiles_total)] including $(mk) ...)$(eval include $(mk))) -ifdef PDK_FUSION_PLATFORM_ZIP +ifneq (,$(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR)) # Bring in the PDK platform.zip modules. include $(BUILD_SYSTEM)/pdk_fusion_modules.mk -endif # PDK_FUSION_PLATFORM_ZIP +endif # PDK_FUSION_PLATFORM_ZIP || PDK_FUSION_PLATFORM_DIR droid_targets : blueprint_tools diff --git a/core/pdk_config.mk b/core/pdk_config.mk index f29c3dc0a..9fe6d4745 100644 --- a/core/pdk_config.mk +++ b/core/pdk_config.mk @@ -7,7 +7,7 @@ PDK_PLATFORM_JAVA_ZIP_JAVA_HOST_LIB_DIR := \ host/common/obj/JAVA_LIBRARIES/hosttestlib_intermediates PDK_PLATFORM_JAVA_ZIP_CONTENTS := -ifneq (,$(filter platform-java, $(MAKECMDGOALS))$(PDK_FUSION_PLATFORM_ZIP)) +ifneq (,$(filter platform-java, $(MAKECMDGOALS))$(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR)) # additional items to add to platform.zip for platform-java build # For these dirs, add classes.jar and javalib.jar from the dir to platform.zip # all paths under out dir @@ -49,34 +49,55 @@ PDK_PLATFORM_JAVA_ZIP_CONTENTS += $(foreach lib_dir,$(PDK_PLATFORM_JAVA_ZIP_JAVA $(lib_dir)/classes.dex.toc ) # check and override java support level -ifneq ($(TARGET_BUILD_PDK)$(PDK_FUSION_PLATFORM_ZIP),) -ifneq ($(wildcard external/proguard),) -TARGET_BUILD_JAVA_SUPPORT_LEVEL := sdk -else # no proguard -TARGET_BUILD_JAVA_SUPPORT_LEVEL := -endif -# platform supprot is set after checking platform.zip +ifneq ($(TARGET_BUILD_PDK)$(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR),) + ifneq ($(wildcard external/proguard),) + TARGET_BUILD_JAVA_SUPPORT_LEVEL := sdk + else # no proguard + TARGET_BUILD_JAVA_SUPPORT_LEVEL := + endif + # platform support is set after checking platform.zip endif # PDK +ifneq (,$(PDK_FUSION_PLATFORM_DIR)$(PDK_FUSION_PLATFORM_ZIP)) + +_pdk_fusion_intermediates := +_pdk_fusion_stamp := +_pdk_fusion_file_list := +_pdk_fusion_java_file_list := +PDK_FUSION_SYMLINK_STAMP := + +ifdef PDK_FUSION_PLATFORM_DIR + _pdk_fusion_intermediates := $(PDK_FUSION_PLATFORM_DIR) + _pdk_fusion_file_list := $(sort \ + $(shell cd $(PDK_FUSION_PLATFORM_DIR); find * -type f)) + _pdk_fusion_java_file_list := $(filter target/common/%,$(_pdk_fusion_file_list)) + _pdk_fusion_file_list := $(filter-out target/common/%,$(_pdk_fusion_file_list)) + + PDK_FUSION_SYMLINK_STAMP := $(call intermediates-dir-for, PACKAGING, pdk_fusion)/pdk_symlinks.stamp + + symlink_list := $(sort \ + $(shell cd $(PDK_FUSION_PLATFORM_DIR); find * -type l)) +$(PDK_FUSION_SYMLINK_STAMP): PRIVATE_SYMLINKS := $(foreach s,$(symlink_list),\ + $(s):$(shell readlink $(PDK_FUSION_PLATFORM_DIR)/$(s))) +$(PDK_FUSION_SYMLINK_STAMP): + $(foreach s,$(PRIVATE_SYMLINKS),\ + mkdir -p $(PRODUCT_OUT)/$(dir $(call word-colon,1,$(s))) && \ + ln -sf $(call word-colon,2,$(s)) $(PRODUCT_OUT)/$(call word-colon,1,$(s)) &&) true + touch $@ + + symlink_list := +endif # PDK_FUSION_PLATFORM_DIR + ifdef PDK_FUSION_PLATFORM_ZIP -_pdk_fusion_intermediates := $(call intermediates-dir-for, PACKAGING, pdk_fusion) -_pdk_fusion_stamp := $(_pdk_fusion_intermediates)/pdk_fusion.stamp + _pdk_fusion_intermediates := $(call intermediates-dir-for, PACKAGING, pdk_fusion) + _pdk_fusion_stamp := $(_pdk_fusion_intermediates)/pdk_fusion.stamp -_pdk_fusion_file_list := $(shell unzip -Z -1 $(PDK_FUSION_PLATFORM_ZIP) \ - '*[^/]' -x 'target/common/*' 2>/dev/null) -_pdk_fusion_java_file_list := \ - $(shell unzip -Z -1 $(PDK_FUSION_PLATFORM_ZIP) 'target/common/*' 2>/dev/null) -_pdk_fusion_files := $(addprefix $(_pdk_fusion_intermediates)/,\ - $(_pdk_fusion_file_list) $(_pdk_fusion_java_file_list)) - -ifneq ($(_pdk_fusion_java_file_list),) -# This represents whether java build can use platform API or not -# This should not be used in Android.mk -TARGET_BUILD_PDK_JAVA_PLATFORM := true -ifneq ($(TARGET_BUILD_JAVA_SUPPORT_LEVEL),) -TARGET_BUILD_JAVA_SUPPORT_LEVEL := platform -endif -endif + _pdk_fusion_file_list := $(shell unzip -Z -1 $(PDK_FUSION_PLATFORM_ZIP) \ + '*[^/]' -x 'target/common/*' 2>/dev/null) + _pdk_fusion_java_file_list := \ + $(shell unzip -Z -1 $(PDK_FUSION_PLATFORM_ZIP) 'target/common/*' 2>/dev/null) + _pdk_fusion_files := $(addprefix $(_pdk_fusion_intermediates)/,\ + $(_pdk_fusion_file_list) $(_pdk_fusion_java_file_list)) $(_pdk_fusion_stamp) : $(PDK_FUSION_PLATFORM_ZIP) @echo "Unzip $(dir $@) <- $<" @@ -85,9 +106,17 @@ $(_pdk_fusion_stamp) : $(PDK_FUSION_PLATFORM_ZIP) $(call split-long-arguments,-touch,$(_pdk_fusion_files)) $(hide) touch $@ - $(_pdk_fusion_files) : $(_pdk_fusion_stamp) +endif # PDK_FUSION_PLATFORM_ZIP +ifneq ($(_pdk_fusion_java_file_list),) + # This represents whether java build can use platform API or not + # This should not be used in Android.mk + TARGET_BUILD_PDK_JAVA_PLATFORM := true + ifneq ($(TARGET_BUILD_JAVA_SUPPORT_LEVEL),) + TARGET_BUILD_JAVA_SUPPORT_LEVEL := platform + endif +endif # Implicit pattern rules to copy the fusion files to the system image directory. # Note that if there is already explicit rule in the build system to generate a file, @@ -105,63 +134,57 @@ $(HOST_COMMON_OUT_ROOT)/% : $(_pdk_fusion_intermediates)/host/common/% $(_pdk_fu $(hide) cp -fpPR $< $@ ifeq (true,$(TARGET_BUILD_PDK_JAVA_PLATFORM)) + PDK_FUSION_OUT_DIR := $(OUT_DIR) -PDK_FUSION_OUT_DIR := $(OUT_DIR) + define JAVA_dependency_template + $(call add-dependency,$(PDK_FUSION_OUT_DIR)/$(strip $(1)),\ + $(foreach d,$(filter $(2),$(_pdk_fusion_java_file_list)),$(PDK_FUSION_OUT_DIR)/$(d))) + endef -define JAVA_dependency_template -$(call add-dependency,$(PDK_FUSION_OUT_DIR)/$(strip $(1)),\ - $(foreach d,$(filter $(2),$(_pdk_fusion_java_file_list)),$(PDK_FUSION_OUT_DIR)/$(d))) -endef + # needs explicit dependency as package-export.apk is not explicitly pulled + $(eval $(call JAVA_dependency_template,\ + target/common/obj/APPS/framework-res_intermediates/src/R.stamp,\ + target/common/obj/APPS/framework-res_intermediates/package-export.apk)) -# needs explicit dependency as package-export.apk is not explicitly pulled -$(eval $(call JAVA_dependency_template,\ -target/common/obj/APPS/framework-res_intermediates/src/R.stamp,\ -target/common/obj/APPS/framework-res_intermediates/package-export.apk)) - -# javalib.jar should pull classes.jar as classes.jar is not explicitly pulled. -$(foreach lib_dir,$(PDK_PLATFORM_JAVA_ZIP_JAVA_TARGET_LIB_DIR),\ -$(eval $(call JAVA_dependency_template,$(lib_dir)/javalib.jar,\ -$(lib_dir)/classes.jar))) + # javalib.jar should pull classes.jar as classes.jar is not explicitly pulled. + $(foreach lib_dir,$(PDK_PLATFORM_JAVA_ZIP_JAVA_TARGET_LIB_DIR),\ + $(eval $(call JAVA_dependency_template,$(lib_dir)/javalib.jar,\ + $(lib_dir)/classes.jar))) # implicit rules for all other target files $(TARGET_COMMON_OUT_ROOT)/% : $(_pdk_fusion_intermediates)/target/common/% $(_pdk_fusion_stamp) @mkdir -p $(dir $@) $(hide) cp -fpPR $< $@ -endif +endif # TARGET_BUILD_PDK_JAVA_PLATFORM ALL_PDK_FUSION_FILES := $(addprefix $(PRODUCT_OUT)/, $(_pdk_fusion_file_list)) -endif # PDK_FUSION_PLATFORM_ZIP +endif # PDK_FUSION_PLATFORM_ZIP || PDK_FUSION_PLATFORM_DIR ifeq ($(TARGET_BUILD_PDK),true) -$(info PDK TARGET_BUILD_JAVA_SUPPORT_LEVEL $(TARGET_BUILD_JAVA_SUPPORT_LEVEL)) -ifeq ($(TARGET_BUILD_PDK_JAVA_PLATFORM),) - -# SDK used for Java build under PDK -PDK_BUILD_SDK_VERSION := $(lastword $(TARGET_AVAILABLE_SDK_VERSIONS)) -$(info PDK Build uses SDK $(PDK_BUILD_SDK_VERSION)) - -else # PDK_JAVA - -$(info PDK Build uses the current platform API) - -endif # PDK_JAVA - + $(info PDK TARGET_BUILD_JAVA_SUPPORT_LEVEL $(TARGET_BUILD_JAVA_SUPPORT_LEVEL)) + ifeq ($(TARGET_BUILD_PDK_JAVA_PLATFORM),) + # SDK used for Java build under PDK + PDK_BUILD_SDK_VERSION := $(lastword $(TARGET_AVAILABLE_SDK_VERSIONS)) + $(info PDK Build uses SDK $(PDK_BUILD_SDK_VERSION)) + else # PDK_JAVA + $(info PDK Build uses the current platform API) + endif # PDK_JAVA endif # BUILD_PDK ifneq (,$(filter platform platform-java, $(MAKECMDGOALS))$(filter true,$(TARGET_BUILD_PDK))) -# files under $(PRODUCT_OUT)/symbols to help debugging. -# Source not included to PDK due to dependency issue, so provide symbols instead. + # files under $(PRODUCT_OUT)/symbols to help debugging. + # Source not included to PDK due to dependency issue, so provide symbols instead. -# We may not be building all of them. -# The platform.zip just silently ignores the nonexistent ones. -PDK_SYMBOL_FILES_LIST := \ - system/bin/app_process32 \ - system/bin/app_process64 + # We may not be building all of them. + # The platform.zip just silently ignores the nonexistent ones. + PDK_SYMBOL_FILES_LIST := \ + system/bin/app_process32 \ + system/bin/app_process64 -ifdef PDK_FUSION_PLATFORM_ZIP -# symbols should be explicitly pulled for fusion build -$(foreach f,$(filter $(PDK_SYMBOL_FILES_LIST), $(_pdk_fusion_file_list)),\ - $(eval $(call add-dependency,$(PRODUCT_OUT)/$(f),$(PRODUCT_OUT)/symbols/$(f)))) -endif # PLATFORM_ZIP -endif # platform.zip build or PDK + ifneq (,$(PDK_FUSION_PLATFORM_ZIP)$(PDK_FUSION_PLATFORM_DIR)) + # symbols should be explicitly pulled for fusion build + $(foreach f,$(filter $(PDK_SYMBOL_FILES_LIST), $(_pdk_fusion_file_list)),\ + $(eval $(call add-dependency,$(PRODUCT_OUT)/$(f),$(PRODUCT_OUT)/symbols/$(f)))) + endif # PLATFORM_ZIP || PLATFORM_DIR +endif # platform.zip/dir build or PDK diff --git a/core/pdk_fusion_modules.mk b/core/pdk_fusion_modules.mk index 0c03f37cc..9aabd0f15 100644 --- a/core/pdk_fusion_modules.mk +++ b/core/pdk_fusion_modules.mk @@ -2,10 +2,16 @@ # 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)