diff options
author | Ying Wang <wangying@google.com> | 2013-08-01 17:45:35 -0700 |
---|---|---|
committer | Ying Wang <wangying@google.com> | 2013-08-01 17:45:35 -0700 |
commit | 3670c8449a721a987f72c170a123830f0dfcbda5 (patch) | |
tree | 93e26bab2693ab625f24d62e3c1a499cd45d4493 | |
parent | 949c4eb07303dad42d52d8d607a3c01c3649e940 (diff) | |
download | build-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.mk | 38 |
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) - |