summaryrefslogtreecommitdiffstats
path: root/core/tasks/product-graph.mk
blob: 6442252bd05008b9e693ffa7d20f12277df7065c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#

products_pdf := $(OUT_DIR)/products.pdf
products_graph := $(products_pdf:%.pdf=%.dot)

$(products_graph):
	@echo Product graph DOT: $@
	$(hide) ( \
		echo 'digraph {'; \
		echo 'graph [ ratio=.5 ];'; \
		$(foreach p,$(ALL_PRODUCTS), \
			$(foreach d,$(PRODUCTS.$(strip $(p)).INHERITS_FROM), \
			echo \"$(d)\" -\> \"$(p)\";)) \
		$(foreach prod, \
			$(sort $(foreach p,$(ALL_PRODUCTS), \
				$(foreach d,$(PRODUCTS.$(strip $(p)).INHERITS_FROM), \
					$(d))) \
				$(foreach p,$(ALL_PRODUCTS),$(p))), \
			echo \"$(prod)\" [ label=\"$(dir $(prod))\\n$(notdir $(prod))\"];) \
		echo '}' \
	) > $@

# This rule doesn't include any nodes that don't inherit from
# anything or don't have anything inherit from them, to make the
# graph more readable.  To add that, add this line to the rule
# below:
#		$(foreach p,$(ALL_PRODUCTS), echo \"$(p)\";) \

$(products_pdf): $(products_graph)
	@echo Product graph PDF: $@
	dot -Tpdf -Nshape=box -o $@ $<

product-graph: $(products_pdf)