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
Merged-In: I16db030a731aea55b69c1d6e2260dbd70b167544
(cherry picked from commit 0663f685c2
)
This commit is contained in:
@@ -1458,7 +1458,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)
|
||||
|
||||
@@ -1695,7 +1696,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)
|
||||
@@ -1902,7 +1904,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)
|
||||
@@ -1949,7 +1952,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)
|
||||
@@ -2000,7 +2004,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)
|
||||
|
@@ -448,9 +448,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?
|
||||
@@ -459,27 +459,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
|
||||
# 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.
|
||||
_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))
|
||||
# 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))
|
||||
TARGET_BUILD_PDK := true
|
||||
_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
|
||||
endif # !PDK_FUSION_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
|
||||
@@ -487,9 +504,21 @@ endif # pdk or fusion
|
||||
ifdef PDK_FUSION_PLATFORM_ZIP
|
||||
TARGET_BUILD_PDK := true
|
||||
ifeq (,$(wildcard $(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
|
||||
|
||||
BUILD_PLATFORM_ZIP := $(filter platform platform-java,$(MAKECMDGOALS))
|
||||
|
||||
|
@@ -449,10 +449,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
|
||||
|
||||
|
@@ -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
|
||||
@@ -48,15 +48,45 @@ 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 ($(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 supprot is set after checking platform.zip
|
||||
# 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
|
||||
@@ -68,6 +98,16 @@ _pdk_fusion_java_file_list := \
|
||||
_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 $@) <- $<"
|
||||
$(hide) rm -rf $(dir $@) && mkdir -p $(dir $@)
|
||||
$(hide) unzip -qo $< -d $(dir $@)
|
||||
$(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
|
||||
@@ -77,17 +117,6 @@ TARGET_BUILD_JAVA_SUPPORT_LEVEL := platform
|
||||
endif
|
||||
endif
|
||||
|
||||
$(_pdk_fusion_stamp) : $(PDK_FUSION_PLATFORM_ZIP)
|
||||
@echo "Unzip $(dir $@) <- $<"
|
||||
$(hide) rm -rf $(dir $@) && mkdir -p $(dir $@)
|
||||
$(hide) unzip -qo $< -d $(dir $@)
|
||||
$(call split-long-arguments,-touch,$(_pdk_fusion_files))
|
||||
$(hide) touch $@
|
||||
|
||||
|
||||
$(_pdk_fusion_files) : $(_pdk_fusion_stamp)
|
||||
|
||||
|
||||
# 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,
|
||||
# the pattern rule will be just ignored by make.
|
||||
@@ -104,7 +133,6 @@ $(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)
|
||||
|
||||
define JAVA_dependency_template
|
||||
@@ -126,26 +154,21 @@ $(lib_dir)/classes.jar)))
|
||||
$(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
|
||||
|
||||
endif # BUILD_PDK
|
||||
|
||||
ifneq (,$(filter platform platform-java, $(MAKECMDGOALS))$(filter true,$(TARGET_BUILD_PDK)))
|
||||
@@ -158,9 +181,9 @@ PDK_SYMBOL_FILES_LIST := \
|
||||
system/bin/app_process32 \
|
||||
system/bin/app_process64
|
||||
|
||||
ifdef PDK_FUSION_PLATFORM_ZIP
|
||||
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
|
||||
endif # platform.zip build or PDK
|
||||
endif # PLATFORM_ZIP || PLATFORM_DIR
|
||||
endif # platform.zip/dir build or PDK
|
||||
|
@@ -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)
|
||||
|
||||
|
Reference in New Issue
Block a user