Loading core/config.mk +1 −2 Original line number Diff line number Diff line Loading @@ -1235,8 +1235,7 @@ endef # These goals don't need to collect and include Android.mks/CleanSpec.mks # in the source tree. dont_bother_goals := out \ product-graph dump-products dont_bother_goals := out product-graph # Make ANDROID Soong config variables visible to Android.mk files, for # consistency with those defined in BoardConfig.mk files. Loading core/main.mk +8 −12 Original line number Diff line number Diff line Loading @@ -1235,18 +1235,14 @@ endef # See the select-bitness-of-required-modules definition. # $(1): product makefile define _product-var $(call get-product-var,$(1),$(2)) endef define product-installed-files $(eval _pif_modules := \ $(call _product-var,$(1),PRODUCT_PACKAGES) \ $(if $(filter eng,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_ENG)) \ $(if $(filter debug,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_DEBUG)) \ $(if $(filter tests,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_TESTS)) \ $(if $(filter asan,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_DEBUG_ASAN)) \ $(if $(filter java_coverage,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_DEBUG_JAVA_COVERAGE)) \ $(call get-product-var,$(1),PRODUCT_PACKAGES) \ $(if $(filter eng,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_ENG)) \ $(if $(filter debug,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_DEBUG)) \ $(if $(filter tests,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_TESTS)) \ $(if $(filter asan,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_DEBUG_ASAN)) \ $(if $(filter java_coverage,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_DEBUG_JAVA_COVERAGE)) \ $(call auto-included-modules) \ ) \ $(eval ### Filter out the overridden packages and executables before doing expansion) \ Loading @@ -1257,13 +1253,13 @@ define product-installed-files $(call expand-required-modules,_pif_modules,$(_pif_modules),$(_pif_overrides)) \ $(filter-out $(HOST_OUT_ROOT)/%,$(call module-installed-files, $(_pif_modules))) \ $(call resolve-product-relative-paths,\ $(foreach cf,$(call _product-var,$(1),PRODUCT_COPY_FILES),$(call word-colon,2,$(cf)))) $(foreach cf,$(call get-product-var,$(1),PRODUCT_COPY_FILES),$(call word-colon,2,$(cf)))) endef # Similar to product-installed-files above, but handles PRODUCT_HOST_PACKAGES instead # This does support the :32 / :64 syntax, but does not support module overrides. define host-installed-files $(eval _hif_modules := $(call _product-var,$(1),PRODUCT_HOST_PACKAGES)) \ $(eval _hif_modules := $(call get-product-var,$(1),PRODUCT_HOST_PACKAGES)) \ $(eval ### Split host vs host cross modules) \ $(eval _hcif_modules := $(filter host_cross_%,$(_hif_modules))) \ $(eval _hif_modules := $(filter-out host_cross_%,$(_hif_modules))) \ Loading core/ninja_config.mk +0 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ PARSE_TIME_MAKE_GOALS := \ cts \ custom_images \ dicttool_aosp \ dump-products \ eng \ oem_image \ online-system-api-sdk-docs \ Loading core/product-graph.mk +19 −34 Original line number Diff line number Diff line Loading @@ -15,12 +15,12 @@ # # the sort also acts as a strip to remove the single space entries that creep in because of the evals define gather-all-products define gather-all-makefiles-for-current-product $(eval _all_products_visited := )\ $(sort $(call all-products-inner, $(PRODUCTS))) $(sort $(call gather-all-makefiles-for-current-product-inner,$(INTERNAL_PRODUCT))) endef define all-products-inner define gather-all-makefiles-for-current-product-inner $(foreach p,$(1),\ $(if $(filter $(p),$(_all_products_visited)),, \ $(p) \ Loading @@ -30,30 +30,12 @@ define all-products-inner ) endef this_makefile := build/make/core/product-graph.mk products_graph := $(OUT_DIR)/products.dot ifeq ($(strip $(ANDROID_PRODUCT_GRAPH)),) products_list := $(INTERNAL_PRODUCT) else ifeq ($(strip $(ANDROID_PRODUCT_GRAPH)),--all) products_list := --all else products_list := $(foreach prod,$(ANDROID_PRODUCT_GRAPH),$(call resolve-short-product-name,$(prod))) endif endif all_products := $(call gather-all-products) open_parethesis := ( close_parenthesis := ) node_color_target := orange node_color_common := beige node_color_vendor := lavenderblush node_color_default := white define node-color $(if $(filter $(1),$(PRIVATE_PRODUCTS_FILTER)),\ $(if $(filter $(1),$(PRIVATE_TOP_LEVEL_MAKEFILE)),\ $(node_color_target),\ $(if $(filter build/make/target/product/%,$(1)),\ $(node_color_common),\ Loading @@ -62,30 +44,33 @@ $(if $(filter $(1),$(PRIVATE_PRODUCTS_FILTER)),\ ) endef open_parethesis := ( close_parenthesis := ) # Emit properties of a product node to a file. # $(1) the product # $(2) the output file define emit-product-node-props $(hide) echo \"$(1)\" [ \ label=\"$(dir $(1))\\n$(notdir $(1))\\n\\n$(subst $(close_parenthesis),,$(subst $(open_parethesis),,$(call get-product-var,$(1),PRODUCT_MODEL)))\\n$(call get-product-var,$(1),PRODUCT_DEVICE)\" \ label=\"$(dir $(1))\\n$(notdir $(1))$(if $(filter $(1),$(PRIVATE_TOP_LEVEL_MAKEFILE)),$(subst $(open_parethesis),,$(subst $(close_parenthesis),,\\n\\n$(PRODUCT_MODEL)\\n$(PRODUCT_DEVICE))))\" \ style=\"filled\" fillcolor=\"$(strip $(call node-color,$(1)))\" \ colorscheme=\"svg\" fontcolor=\"darkblue\" \ ] >> $(2) endef $(products_graph): PRIVATE_PRODUCTS := $(all_products) $(products_graph): PRIVATE_PRODUCTS_FILTER := $(products_list) products_graph := $(OUT_DIR)/products.dot $(products_graph): $(this_makefile) @echo Product graph DOT: $@ for $(PRIVATE_PRODUCTS_FILTER) $(hide) echo 'digraph {' > $@.in $(hide) echo 'graph [ ratio=.5 ];' >> $@.in $(hide) $(foreach p,$(PRIVATE_PRODUCTS), \ $(foreach d,$(PRODUCTS.$(strip $(p)).INHERITS_FROM), echo \"$(d)\" -\> \"$(p)\" >> $@.in;)) $(foreach p,$(PRIVATE_PRODUCTS),$(call emit-product-node-props,$(p),$@.in)) $(hide) echo '}' >> $@.in $(hide) build/make/tools/filter-product-graph.py $(PRIVATE_PRODUCTS_FILTER) < $@.in > $@ $(products_graph): PRIVATE_ALL_MAKEFILES_FOR_THIS_PRODUCT := $(call gather-all-makefiles-for-current-product) $(products_graph): PRIVATE_TOP_LEVEL_MAKEFILE := $(INTERNAL_PRODUCT) $(products_graph): @echo Product graph DOT: $@ for $(PRIVATE_TOP_LEVEL_MAKEFILE) $(hide) echo 'digraph {' > $@ $(hide) echo 'graph [ ratio=.5 ];' >> $@ $(hide) $(foreach p,$(PRIVATE_ALL_MAKEFILES_FOR_THIS_PRODUCT), \ $(foreach d,$(PRODUCTS.$(strip $(p)).INHERITS_FROM), echo \"$(d)\" -\> \"$(p)\" >> $@;)) $(foreach p,$(PRIVATE_ALL_MAKEFILES_FOR_THIS_PRODUCT),$(call emit-product-node-props,$(p),$@)) $(hide) echo '}' >> $@ .PHONY: product-graph product-graph: $(products_graph) Loading core/product.mk +9 −66 Original line number Diff line number Diff line Loading @@ -377,17 +377,6 @@ _product_single_value_vars += PRODUCT_MODULE_BUILD_FROM_SOURCE .KATI_READONLY := _product_single_value_vars _product_list_vars _product_var_list :=$= $(_product_single_value_vars) $(_product_list_vars) define dump-product $(warning ==== $(1) ====)\ $(foreach v,$(_product_var_list),\ $(warning PRODUCTS.$(1).$(v) := $(call get-product-var,$(1),$(v))))\ $(warning --------) endef define dump-products $(foreach p,$(PRODUCTS),$(call dump-product,$(p))) endef # # Functions for including product makefiles # Loading Loading @@ -464,64 +453,18 @@ endef # # Does various consistency checks on all of the known products. # Does various consistency checks on the current product. # Takes no parameters, so $(call ) is not necessary. # define check-all-products define check-current-product $(if ,, \ $(eval _cap_names :=) \ $(foreach p,$(PRODUCTS), \ $(eval pn := $(strip $(PRODUCTS.$(p).PRODUCT_NAME))) \ $(if $(pn),,$(error $(p): PRODUCT_NAME must be defined.)) \ $(if $(filter $(pn),$(_cap_names)), \ $(error $(p): PRODUCT_NAME must be unique; "$(pn)" already used by $(strip \ $(foreach \ pp,$(PRODUCTS), $(if $(filter $(pn),$(PRODUCTS.$(pp).PRODUCT_NAME)), \ $(pp) \ ))) \ ) \ ) \ $(eval _cap_names += $(pn)) \ $(if $(call is-c-identifier,$(pn)),, \ $(error $(p): PRODUCT_NAME must be a valid C identifier, not "$(pn)") \ ) \ $(eval pb := $(strip $(PRODUCTS.$(p).PRODUCT_BRAND))) \ $(if $(pb),,$(error $(p): PRODUCT_BRAND must be defined.)) \ $(foreach cf,$(strip $(PRODUCTS.$(p).PRODUCT_COPY_FILES)), \ $(if $(call is-c-identifier,$(PRODUCT_NAME)),, \ $(error $(INTERNAL_PRODUCT): PRODUCT_NAME must be a valid C identifier, not "$(pn)")) \ $(if $(PRODUCT_BRAND),, \ $(error $(INTERNAL_PRODUCT): PRODUCT_BRAND must be defined.)) \ $(foreach cf,$(strip $(PRODUCT_COPY_FILES)), \ $(if $(filter 2 3,$(words $(subst :,$(space),$(cf)))),, \ $(error $(p): malformed COPY_FILE "$(cf)") \ ) \ ) \ ) \ ) endef # # Returns the product makefile path for the product with the provided name # # $(1): short product name like "generic" # define _resolve-short-product-name $(eval pn := $(strip $(1))) $(eval p := \ $(foreach p,$(PRODUCTS), \ $(if $(filter $(pn),$(PRODUCTS.$(p).PRODUCT_NAME)), \ $(p) \ )) \ ) $(eval p := $(sort $(p))) $(if $(filter 1,$(words $(p))), \ $(p), \ $(if $(filter 0,$(words $(p))), \ $(error No matches for product "$(pn)"), \ $(error Product "$(pn)" ambiguous: matches $(p)) \ ) \ ) endef define resolve-short-product-name $(strip $(call _resolve-short-product-name,$(1))) $(error $(p): malformed COPY_FILE "$(cf)")))) endef # BoardConfig variables that are also inherited in product mks. Should ideally Loading Loading
core/config.mk +1 −2 Original line number Diff line number Diff line Loading @@ -1235,8 +1235,7 @@ endef # These goals don't need to collect and include Android.mks/CleanSpec.mks # in the source tree. dont_bother_goals := out \ product-graph dump-products dont_bother_goals := out product-graph # Make ANDROID Soong config variables visible to Android.mk files, for # consistency with those defined in BoardConfig.mk files. Loading
core/main.mk +8 −12 Original line number Diff line number Diff line Loading @@ -1235,18 +1235,14 @@ endef # See the select-bitness-of-required-modules definition. # $(1): product makefile define _product-var $(call get-product-var,$(1),$(2)) endef define product-installed-files $(eval _pif_modules := \ $(call _product-var,$(1),PRODUCT_PACKAGES) \ $(if $(filter eng,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_ENG)) \ $(if $(filter debug,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_DEBUG)) \ $(if $(filter tests,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_TESTS)) \ $(if $(filter asan,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_DEBUG_ASAN)) \ $(if $(filter java_coverage,$(tags_to_install)),$(call _product-var,$(1),PRODUCT_PACKAGES_DEBUG_JAVA_COVERAGE)) \ $(call get-product-var,$(1),PRODUCT_PACKAGES) \ $(if $(filter eng,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_ENG)) \ $(if $(filter debug,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_DEBUG)) \ $(if $(filter tests,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_TESTS)) \ $(if $(filter asan,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_DEBUG_ASAN)) \ $(if $(filter java_coverage,$(tags_to_install)),$(call get-product-var,$(1),PRODUCT_PACKAGES_DEBUG_JAVA_COVERAGE)) \ $(call auto-included-modules) \ ) \ $(eval ### Filter out the overridden packages and executables before doing expansion) \ Loading @@ -1257,13 +1253,13 @@ define product-installed-files $(call expand-required-modules,_pif_modules,$(_pif_modules),$(_pif_overrides)) \ $(filter-out $(HOST_OUT_ROOT)/%,$(call module-installed-files, $(_pif_modules))) \ $(call resolve-product-relative-paths,\ $(foreach cf,$(call _product-var,$(1),PRODUCT_COPY_FILES),$(call word-colon,2,$(cf)))) $(foreach cf,$(call get-product-var,$(1),PRODUCT_COPY_FILES),$(call word-colon,2,$(cf)))) endef # Similar to product-installed-files above, but handles PRODUCT_HOST_PACKAGES instead # This does support the :32 / :64 syntax, but does not support module overrides. define host-installed-files $(eval _hif_modules := $(call _product-var,$(1),PRODUCT_HOST_PACKAGES)) \ $(eval _hif_modules := $(call get-product-var,$(1),PRODUCT_HOST_PACKAGES)) \ $(eval ### Split host vs host cross modules) \ $(eval _hcif_modules := $(filter host_cross_%,$(_hif_modules))) \ $(eval _hif_modules := $(filter-out host_cross_%,$(_hif_modules))) \ Loading
core/ninja_config.mk +0 −1 Original line number Diff line number Diff line Loading @@ -25,7 +25,6 @@ PARSE_TIME_MAKE_GOALS := \ cts \ custom_images \ dicttool_aosp \ dump-products \ eng \ oem_image \ online-system-api-sdk-docs \ Loading
core/product-graph.mk +19 −34 Original line number Diff line number Diff line Loading @@ -15,12 +15,12 @@ # # the sort also acts as a strip to remove the single space entries that creep in because of the evals define gather-all-products define gather-all-makefiles-for-current-product $(eval _all_products_visited := )\ $(sort $(call all-products-inner, $(PRODUCTS))) $(sort $(call gather-all-makefiles-for-current-product-inner,$(INTERNAL_PRODUCT))) endef define all-products-inner define gather-all-makefiles-for-current-product-inner $(foreach p,$(1),\ $(if $(filter $(p),$(_all_products_visited)),, \ $(p) \ Loading @@ -30,30 +30,12 @@ define all-products-inner ) endef this_makefile := build/make/core/product-graph.mk products_graph := $(OUT_DIR)/products.dot ifeq ($(strip $(ANDROID_PRODUCT_GRAPH)),) products_list := $(INTERNAL_PRODUCT) else ifeq ($(strip $(ANDROID_PRODUCT_GRAPH)),--all) products_list := --all else products_list := $(foreach prod,$(ANDROID_PRODUCT_GRAPH),$(call resolve-short-product-name,$(prod))) endif endif all_products := $(call gather-all-products) open_parethesis := ( close_parenthesis := ) node_color_target := orange node_color_common := beige node_color_vendor := lavenderblush node_color_default := white define node-color $(if $(filter $(1),$(PRIVATE_PRODUCTS_FILTER)),\ $(if $(filter $(1),$(PRIVATE_TOP_LEVEL_MAKEFILE)),\ $(node_color_target),\ $(if $(filter build/make/target/product/%,$(1)),\ $(node_color_common),\ Loading @@ -62,30 +44,33 @@ $(if $(filter $(1),$(PRIVATE_PRODUCTS_FILTER)),\ ) endef open_parethesis := ( close_parenthesis := ) # Emit properties of a product node to a file. # $(1) the product # $(2) the output file define emit-product-node-props $(hide) echo \"$(1)\" [ \ label=\"$(dir $(1))\\n$(notdir $(1))\\n\\n$(subst $(close_parenthesis),,$(subst $(open_parethesis),,$(call get-product-var,$(1),PRODUCT_MODEL)))\\n$(call get-product-var,$(1),PRODUCT_DEVICE)\" \ label=\"$(dir $(1))\\n$(notdir $(1))$(if $(filter $(1),$(PRIVATE_TOP_LEVEL_MAKEFILE)),$(subst $(open_parethesis),,$(subst $(close_parenthesis),,\\n\\n$(PRODUCT_MODEL)\\n$(PRODUCT_DEVICE))))\" \ style=\"filled\" fillcolor=\"$(strip $(call node-color,$(1)))\" \ colorscheme=\"svg\" fontcolor=\"darkblue\" \ ] >> $(2) endef $(products_graph): PRIVATE_PRODUCTS := $(all_products) $(products_graph): PRIVATE_PRODUCTS_FILTER := $(products_list) products_graph := $(OUT_DIR)/products.dot $(products_graph): $(this_makefile) @echo Product graph DOT: $@ for $(PRIVATE_PRODUCTS_FILTER) $(hide) echo 'digraph {' > $@.in $(hide) echo 'graph [ ratio=.5 ];' >> $@.in $(hide) $(foreach p,$(PRIVATE_PRODUCTS), \ $(foreach d,$(PRODUCTS.$(strip $(p)).INHERITS_FROM), echo \"$(d)\" -\> \"$(p)\" >> $@.in;)) $(foreach p,$(PRIVATE_PRODUCTS),$(call emit-product-node-props,$(p),$@.in)) $(hide) echo '}' >> $@.in $(hide) build/make/tools/filter-product-graph.py $(PRIVATE_PRODUCTS_FILTER) < $@.in > $@ $(products_graph): PRIVATE_ALL_MAKEFILES_FOR_THIS_PRODUCT := $(call gather-all-makefiles-for-current-product) $(products_graph): PRIVATE_TOP_LEVEL_MAKEFILE := $(INTERNAL_PRODUCT) $(products_graph): @echo Product graph DOT: $@ for $(PRIVATE_TOP_LEVEL_MAKEFILE) $(hide) echo 'digraph {' > $@ $(hide) echo 'graph [ ratio=.5 ];' >> $@ $(hide) $(foreach p,$(PRIVATE_ALL_MAKEFILES_FOR_THIS_PRODUCT), \ $(foreach d,$(PRODUCTS.$(strip $(p)).INHERITS_FROM), echo \"$(d)\" -\> \"$(p)\" >> $@;)) $(foreach p,$(PRIVATE_ALL_MAKEFILES_FOR_THIS_PRODUCT),$(call emit-product-node-props,$(p),$@)) $(hide) echo '}' >> $@ .PHONY: product-graph product-graph: $(products_graph) Loading
core/product.mk +9 −66 Original line number Diff line number Diff line Loading @@ -377,17 +377,6 @@ _product_single_value_vars += PRODUCT_MODULE_BUILD_FROM_SOURCE .KATI_READONLY := _product_single_value_vars _product_list_vars _product_var_list :=$= $(_product_single_value_vars) $(_product_list_vars) define dump-product $(warning ==== $(1) ====)\ $(foreach v,$(_product_var_list),\ $(warning PRODUCTS.$(1).$(v) := $(call get-product-var,$(1),$(v))))\ $(warning --------) endef define dump-products $(foreach p,$(PRODUCTS),$(call dump-product,$(p))) endef # # Functions for including product makefiles # Loading Loading @@ -464,64 +453,18 @@ endef # # Does various consistency checks on all of the known products. # Does various consistency checks on the current product. # Takes no parameters, so $(call ) is not necessary. # define check-all-products define check-current-product $(if ,, \ $(eval _cap_names :=) \ $(foreach p,$(PRODUCTS), \ $(eval pn := $(strip $(PRODUCTS.$(p).PRODUCT_NAME))) \ $(if $(pn),,$(error $(p): PRODUCT_NAME must be defined.)) \ $(if $(filter $(pn),$(_cap_names)), \ $(error $(p): PRODUCT_NAME must be unique; "$(pn)" already used by $(strip \ $(foreach \ pp,$(PRODUCTS), $(if $(filter $(pn),$(PRODUCTS.$(pp).PRODUCT_NAME)), \ $(pp) \ ))) \ ) \ ) \ $(eval _cap_names += $(pn)) \ $(if $(call is-c-identifier,$(pn)),, \ $(error $(p): PRODUCT_NAME must be a valid C identifier, not "$(pn)") \ ) \ $(eval pb := $(strip $(PRODUCTS.$(p).PRODUCT_BRAND))) \ $(if $(pb),,$(error $(p): PRODUCT_BRAND must be defined.)) \ $(foreach cf,$(strip $(PRODUCTS.$(p).PRODUCT_COPY_FILES)), \ $(if $(call is-c-identifier,$(PRODUCT_NAME)),, \ $(error $(INTERNAL_PRODUCT): PRODUCT_NAME must be a valid C identifier, not "$(pn)")) \ $(if $(PRODUCT_BRAND),, \ $(error $(INTERNAL_PRODUCT): PRODUCT_BRAND must be defined.)) \ $(foreach cf,$(strip $(PRODUCT_COPY_FILES)), \ $(if $(filter 2 3,$(words $(subst :,$(space),$(cf)))),, \ $(error $(p): malformed COPY_FILE "$(cf)") \ ) \ ) \ ) \ ) endef # # Returns the product makefile path for the product with the provided name # # $(1): short product name like "generic" # define _resolve-short-product-name $(eval pn := $(strip $(1))) $(eval p := \ $(foreach p,$(PRODUCTS), \ $(if $(filter $(pn),$(PRODUCTS.$(p).PRODUCT_NAME)), \ $(p) \ )) \ ) $(eval p := $(sort $(p))) $(if $(filter 1,$(words $(p))), \ $(p), \ $(if $(filter 0,$(words $(p))), \ $(error No matches for product "$(pn)"), \ $(error Product "$(pn)" ambiguous: matches $(p)) \ ) \ ) endef define resolve-short-product-name $(strip $(call _resolve-short-product-name,$(1))) $(error $(p): malformed COPY_FILE "$(cf)")))) endef # BoardConfig variables that are also inherited in product mks. Should ideally Loading