summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYing Wang <wangying@google.com>2013-08-01 17:45:35 -0700
committerYing Wang <wangying@google.com>2013-08-01 17:45:35 -0700
commit3670c8449a721a987f72c170a123830f0dfcbda5 (patch)
tree93e26bab2693ab625f24d62e3c1a499cd45d4493
parent949c4eb07303dad42d52d8d607a3c01c3649e940 (diff)
downloadbuild-3670c8449a721a987f72c170a123830f0dfcbda5.tar.gz
build-3670c8449a721a987f72c170a123830f0dfcbda5.tar.bz2
build-3670c8449a721a987f72c170a123830f0dfcbda5.zip
Split the product-graph build commands
1) As more product configuration files are added to the source tree, the command line has become too long. 2) Escape "(" and ")" that may may appear in PRODUCT_MODEL. Change-Id: I08f278dce434050f013498327c7cbf3592512460
-rw-r--r--core/tasks/product-graph.mk38
1 files changed, 22 insertions, 16 deletions
diff --git a/core/tasks/product-graph.mk b/core/tasks/product-graph.mk
index 1ccb20bf9..fcec27775 100644
--- a/core/tasks/product-graph.mk
+++ b/core/tasks/product-graph.mk
@@ -51,26 +51,33 @@ endif
really_all_products := $(call gather-all-products)
+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),,$(PRODUCTS.$(strip $(1)).PRODUCT_MODEL)))\\n$(PRODUCTS.$(strip $(1)).PRODUCT_DEVICE)\" \
+$(if $(filter $(1),$(PRIVATE_PRODUCTS_FILTER)), style=\"filled\" fillcolor=\"#FFFDB0\",) \
+fontcolor=\"darkblue\" href=\"products/$(1).html\" \
+] >> $(2)
+
+endef
+
$(products_graph): PRIVATE_PRODUCTS := $(really_all_products)
$(products_graph): PRIVATE_PRODUCTS_FILTER := $(products_list)
$(products_graph): $(this_makefile)
@echo Product graph DOT: $@ for $(PRIVATE_PRODUCTS_FILTER)
- $(hide) ( \
- echo 'digraph {'; \
- echo 'graph [ ratio=.5 ];'; \
- $(foreach p,$(PRIVATE_PRODUCTS), \
- $(foreach d,$(PRODUCTS.$(strip $(p)).INHERITS_FROM), echo \"$(d)\" -\> \"$(p)\";)) \
- $(foreach prod, $(PRIVATE_PRODUCTS), \
- echo \"$(prod)\" [ \
- label=\"$(dir $(prod))\\n$(notdir $(prod))\\n\\n$(PRODUCTS.$(strip $(prod)).PRODUCT_MODEL)\\n$(PRODUCTS.$(strip $(prod)).PRODUCT_DEVICE)\" \
- $(if $(filter $(prod),$(PRIVATE_PRODUCTS_FILTER)), style=\"filled\" fillcolor=\"#FFFDB0\",) \
- fontcolor=\"darkblue\" href=\"products/$(prod).html\" \
- ];) \
- echo '}' \
- ) \
- | ./build/tools/filter-product-graph.py $(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/tools/filter-product-graph.py $(PRIVATE_PRODUCTS_FILTER) < $@.in > $@
# Evaluates to the name of the product file
# $(1) product file
@@ -137,4 +144,3 @@ $(products_svg): $(products_graph) $(product_debug_files)
dot -Tsvg -Nshape=box -o $@ $<
product-graph: $(products_pdf) $(products_svg)
-