am 69a49f75
: Merge changes I21eb93f3,I0be5e272,I158b0d7e
* commit '69a49f75860b4849fd1c2fe68d97fa2243171131': Build only modules required by the current product. Load only the current product config makefile. Run clean steps in only given paths when using mm/mmm
This commit is contained in:
commit
01b2aaaa89
11 changed files with 81 additions and 31 deletions
|
@ -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))
|
||||
|
|
|
@ -78,6 +78,10 @@ else
|
|||
$(info Clean step: $(INTERNAL_CLEAN_STEP.$(step))) \
|
||||
$(shell $(INTERNAL_CLEAN_STEP.$(step))) \
|
||||
)
|
||||
# If we are running mm/mmm, we should copy over the other clean steps too.
|
||||
ifneq ($(ONE_SHOT_MAKEFILE),)
|
||||
INTERNAL_CLEAN_STEPS := $(strip $(CURRENT_CLEAN_STEPS) $(steps))
|
||||
endif
|
||||
steps :=
|
||||
endif
|
||||
CURRENT_CLEAN_BUILD_VERSION :=
|
||||
|
|
|
@ -63,7 +63,13 @@ INTERNAL_CLEAN_BUILD_VERSION := 6
|
|||
# NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
|
||||
# ************************************************
|
||||
|
||||
ifneq ($(ONE_SHOT_MAKEFILE),)
|
||||
cs_subdirs := $(dir $(ONE_SHOT_MAKEFILE))
|
||||
else
|
||||
cs_subdirs := .
|
||||
endif
|
||||
subdir_cleanspecs := \
|
||||
$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git . CleanSpec.mk)
|
||||
$(shell build/tools/findleaves.py --prune=out --prune=.repo --prune=.git $(cs_subdirs) CleanSpec.mk)
|
||||
include $(subdir_cleanspecs)
|
||||
cs_subdirs :=
|
||||
subdir_cleanspecs :=
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -710,7 +710,6 @@ $(ALL_C_CPP_ETC_OBJECTS): | all_copied_headers
|
|||
.PHONY: files
|
||||
files: prebuilt \
|
||||
$(modules_to_install) \
|
||||
$(modules_to_check) \
|
||||
$(INSTALLED_ANDROID_INFO_TXT_TARGET)
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
|
|
|
@ -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 a new issue