forked from openkylin/platform_build
Load only the current product config makefile.
To reduce the start time. With the change and previous change of doing clean step in only given paths, start time of mm/mmm is reduced from ~5s to about 1s; lunch time is reduced from ~40s to 3.5s. (cherry-pick of 157a5e1695593f935c3223430f4530e21f990378.) Bug: 7186768,7169854 Change-Id: I0be5e2721efa66a80f112acf8f95e177ebc2f65b
This commit is contained in:
parent
e113fb1d41
commit
0c4eb41885
|
@ -50,9 +50,6 @@ endif
|
|||
#$(shell rm -f tag-list.csv)
|
||||
#tag-list-first-time := false
|
||||
#endif
|
||||
#comma := ,
|
||||
#empty :=
|
||||
#space := $(empty) $(empty)
|
||||
#$(shell echo $(lastword $(filter-out config/% out/%,$(MAKEFILE_LIST))),$(LOCAL_MODULE),$(strip $(LOCAL_MODULE_CLASS)),$(subst $(space),$(comma),$(sort $(LOCAL_MODULE_TAGS))) >> tag-list.csv)
|
||||
|
||||
LOCAL_UNINSTALLABLE_MODULE := $(strip $(LOCAL_UNINSTALLABLE_MODULE))
|
||||
|
|
|
@ -14,6 +14,11 @@ else
|
|||
SHELL := /bin/bash
|
||||
endif
|
||||
|
||||
# Utility variables.
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
comma := ,
|
||||
|
||||
# Tell python not to spam the source tree with .pyc files. This
|
||||
# only has an effect on python 2.6 and above.
|
||||
export PYTHONDONTWRITEBYTECODE := 1
|
||||
|
|
|
@ -574,10 +574,6 @@ endef
|
|||
###########################################################
|
||||
## Convert "a b c" into "a:b:c"
|
||||
###########################################################
|
||||
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
|
||||
define normalize-path-list
|
||||
$(subst $(space),:,$(strip $(1)))
|
||||
endef
|
||||
|
|
|
@ -85,8 +85,6 @@ full_java_libs += $(addprefix $(LOCAL_PATH)/,$(LOCAL_STATIC_JAVA_LIBRARIES)) $(L
|
|||
full_java_lib_deps += $(addprefix $(LOCAL_PATH)/,$(LOCAL_STATIC_JAVA_LIBRARIES)) $(LOCAL_CLASSPATH)
|
||||
endif
|
||||
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
$(full_target): PRIVATE_CLASSPATH := $(subst $(space),:,$(full_java_libs))
|
||||
|
||||
endif # !LOCAL_IS_HOST_MODULE
|
||||
|
|
|
@ -94,8 +94,6 @@ endef
|
|||
# - Replace "|||" with spaces, breaking haystack back into
|
||||
# individual words.
|
||||
#
|
||||
empty :=
|
||||
space := $(empty) $(empty)
|
||||
define uniq-word
|
||||
$(strip \
|
||||
$(if $(filter-out 0 1,$(words $(filter $(2),$(1)))), \
|
||||
|
|
|
@ -16,7 +16,12 @@
|
|||
|
||||
#
|
||||
# Functions for including AndroidProducts.mk files
|
||||
#
|
||||
# PRODUCT_MAKEFILES is set up in AndroidProducts.mks.
|
||||
# Format of PRODUCT_MAKEFILES:
|
||||
# <product_name>:<path_to_the_product_makefile>
|
||||
# If the <product_name> is the same as the base file name (without dir
|
||||
# and the .mk suffix) of the product makefile, "<product_name>:" can be
|
||||
# omitted.
|
||||
|
||||
#
|
||||
# Returns the list of all AndroidProducts.mk files.
|
||||
|
|
|
@ -181,17 +181,54 @@ include $(BUILD_SYSTEM)/product.mk
|
|||
include $(BUILD_SYSTEM)/device.mk
|
||||
|
||||
ifneq ($(strip $(TARGET_BUILD_APPS)),)
|
||||
# An unbundled app build needs only the core product makefiles.
|
||||
$(call import-products,$(call get-product-makefiles,\
|
||||
$(SRC_TARGET_DIR)/product/AndroidProducts.mk))
|
||||
# An unbundled app build needs only the core product makefiles.
|
||||
all_product_configs := $(call get-product-makefiles,\
|
||||
$(SRC_TARGET_DIR)/product/AndroidProducts.mk)
|
||||
else
|
||||
# Read in all of the product definitions specified by the AndroidProducts.mk
|
||||
# files in the tree.
|
||||
#
|
||||
#TODO: when we start allowing direct pointers to product files,
|
||||
# guarantee that they're in this list.
|
||||
$(call import-products, $(get-all-product-makefiles))
|
||||
endif # TARGET_BUILD_APPS
|
||||
# Read in all of the product definitions specified by the AndroidProducts.mk
|
||||
# files in the tree.
|
||||
all_product_configs := $(get-all-product-makefiles)
|
||||
endif
|
||||
|
||||
# Find the product config makefile for the current product.
|
||||
# all_product_configs consists items like:
|
||||
# <product_name>:<path_to_the_product_makefile>
|
||||
# or just <path_to_the_product_makefile> in case the product name is the
|
||||
# same as the base filename of the product config makefile.
|
||||
current_product_makefile :=
|
||||
all_product_makefiles :=
|
||||
$(foreach f, $(all_product_configs),\
|
||||
$(eval _cpm_words := $(subst :,$(space),$(f)))\
|
||||
$(eval _cpm_word1 := $(word 1,$(_cpm_words)))\
|
||||
$(eval _cpm_word2 := $(word 2,$(_cpm_words)))\
|
||||
$(if $(_cpm_word2),\
|
||||
$(eval all_product_makefiles += $(_cpm_word2))\
|
||||
$(if $(filter $(TARGET_PRODUCT),$(_cpm_word1)),\
|
||||
$(eval current_product_makefile += $(_cpm_word2)),),\
|
||||
$(eval all_product_makefiles += $(f))\
|
||||
$(if $(filter $(TARGET_PRODUCT),$(basename $(notdir $(f)))),\
|
||||
$(eval current_product_makefile += $(f)),)))
|
||||
_cpm_words :=
|
||||
_cpm_word1 :=
|
||||
_cpm_word2 :=
|
||||
current_product_makefile := $(strip $(current_product_makefile))
|
||||
all_product_makefiles := $(strip $(all_product_makefiles))
|
||||
|
||||
ifneq (,$(filter product-graph dump-products, $(MAKECMDGOALS)))
|
||||
# Import all product makefiles.
|
||||
$(call import-products, $(all_product_makefiles))
|
||||
else
|
||||
# Import just the current product.
|
||||
ifndef current_product_makefile
|
||||
$(error Can not locate config makefile for product "$(TARGET_PRODUCT)")
|
||||
endif
|
||||
ifneq (1,$(words $(current_product_makefile)))
|
||||
$(error Product "$(TARGET_PRODUCT)" ambiguous: matches $(current_product_makefile))
|
||||
endif
|
||||
$(call import-products, $(current_product_makefile))
|
||||
endif # Import all or just the current product makefile
|
||||
|
||||
# Sanity check
|
||||
$(check-all-products)
|
||||
|
||||
ifneq ($(filter dump-products, $(MAKECMDGOALS)),)
|
||||
|
@ -199,17 +236,16 @@ $(dump-products)
|
|||
$(error done)
|
||||
endif
|
||||
|
||||
ifeq (a,b)
|
||||
$(info PRODUCTS -----------)
|
||||
$(foreach product, $(PRODUCTS), $(info $(PRODUCTS.$(product).PRODUCT_NAME)))# $(product)))
|
||||
$(error stop)
|
||||
endif
|
||||
|
||||
# Convert a short name like "sooner" into the path to the product
|
||||
# file defining that product.
|
||||
#
|
||||
INTERNAL_PRODUCT := $(call resolve-short-product-name, $(TARGET_PRODUCT))
|
||||
#$(error TARGET_PRODUCT $(TARGET_PRODUCT) --> $(INTERNAL_PRODUCT))
|
||||
ifneq ($(current_product_makefile),$(INTERNAL_PRODUCT))
|
||||
$(error PRODUCT_NAME inconsistent in $(current_product_makefile) and $(INTERNAL_PRODUCT))
|
||||
endif
|
||||
current_product_makefile :=
|
||||
all_product_makefiles :=
|
||||
all_product_configs :=
|
||||
|
||||
# Find the device that this product maps to.
|
||||
TARGET_DEVICE := $(PRODUCTS.$(INTERNAL_PRODUCT).PRODUCT_DEVICE)
|
||||
|
|
|
@ -18,6 +18,12 @@
|
|||
# This file should set PRODUCT_MAKEFILES to a list of product makefiles
|
||||
# to expose to the build system. LOCAL_DIR will already be set to
|
||||
# the directory containing this file.
|
||||
# PRODUCT_MAKEFILES is set up in AndroidProducts.mks.
|
||||
# Format of PRODUCT_MAKEFILES:
|
||||
# <product_name>:<path_to_the_product_makefile>
|
||||
# If the <product_name> is the same as the base file name (without dir
|
||||
# and the .mk suffix) of the product makefile, "<product_name>:" can be
|
||||
# omitted.
|
||||
#
|
||||
# This file may not rely on the value of any variable other than
|
||||
# LOCAL_DIR; do not use any conditionals, and do not look up the
|
||||
|
|
Loading…
Reference in New Issue