Graphviz Logo

Graphviz - Graph Visualization Software

Ninja Build System

Ninja, a small, fast build system, can output graphviz dependency graphs.

This is Ninja’s dependency graph when building Ninja itself, auto-generated by running

$ ninja -t graph [mytarget]

See the Ninja manual for details.

[Input .gv File] [SVG] [Raster Image] [Open in Playground]

digraph ninja {
rankdir="LR"
node [fontsize=10, shape=box, height=0.25]
edge [fontsize=10]
"0x7fe58d50f070" [label="all"]
"0x7fe58d50eeb0" [label="phony", shape=ellipse]
"0x7fe58d50eeb0" -> "0x7fe58d50f070"
"0x7fe58d5092d0" -> "0x7fe58d50eeb0" [arrowhead=none]
"0x7fe58d50b640" -> "0x7fe58d50eeb0" [arrowhead=none]
"0x7fe58d50bc10" -> "0x7fe58d50eeb0" [arrowhead=none]
"0x7fe58d508820" -> "0x7fe58d50eeb0" [arrowhead=none]
"0x7fe58d50c0a0" -> "0x7fe58d50eeb0" [arrowhead=none]
"0x7fe58d50c470" -> "0x7fe58d50eeb0" [arrowhead=none]
"0x7fe58d50c880" -> "0x7fe58d50eeb0" [arrowhead=none]
"0x7fe58d50cc10" -> "0x7fe58d50eeb0" [arrowhead=none]
"0x7fe58d5092d0" [label="ninja"]
"0x7fe58d509260" [label="link", shape=ellipse]
"0x7fe58d509260" -> "0x7fe58d5092d0"
"0x7fe58d508ef0" -> "0x7fe58d509260" [arrowhead=none]
"0x7fe58d508f80" -> "0x7fe58d509260" [arrowhead=none]
"0x7fe58d508ef0" [label="build/ninja.o"]
"0x7fe58d508c50" -> "0x7fe58d508ef0" [label=" cxx"]
"0x7fe58d508c50" [label="src/ninja.cc"]
"0x7fe58d508f80" [label="build/libninja.a"]
"0x7fe58d508e00" [label="ar", shape=ellipse]
"0x7fe58d508e00" -> "0x7fe58d508f80"
"0x7fe58d505cb0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d505e40" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d506020" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d5061e0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d5063d0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d5065e0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d5067a0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d506a00" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d506b60" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d506d40" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d506ee0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d507160" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d507320" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d5074e0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d5076a0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d507950" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d507ad0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d507ce0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d507ea0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d508000" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d5081c0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d508400" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d5085a0" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d507080" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d508b10" -> "0x7fe58d508e00" [arrowhead=none]
"0x7fe58d505cb0" [label="build/browse.o"]
"0x7fe58d505910" [label="cxx", shape=ellipse]
"0x7fe58d505910" -> "0x7fe58d505cb0"
"0x7fe58d505d10" -> "0x7fe58d505910" [arrowhead=none]
"0x7fe58d505a40" -> "0x7fe58d505910" [arrowhead=none style=dotted]
"0x7fe58d505d10" [label="src/browse.cc"]
"0x7fe58d505a40" [label="build/browse_py.h"]
"0x7fe58d5059d0" [label="inline", shape=ellipse]
"0x7fe58d5059d0" -> "0x7fe58d505a40"
"0x7fe58d505aa0" -> "0x7fe58d5059d0" [arrowhead=none]
"0x7fe58d505b40" -> "0x7fe58d5059d0" [arrowhead=none]
"0x7fe58d505aa0" [label="src/browse.py"]
"0x7fe58d505b40" [label="src/inline.sh"]
"0x7fe58d505e40" [label="build/build.o"]
"0x7fe58d505f00" -> "0x7fe58d505e40" [label=" cxx"]
"0x7fe58d505f00" [label="src/build.cc"]
"0x7fe58d506020" [label="build/build_log.o"]
"0x7fe58d5060c0" -> "0x7fe58d506020" [label=" cxx"]
"0x7fe58d5060c0" [label="src/build_log.cc"]
"0x7fe58d5061e0" [label="build/clean.o"]
"0x7fe58d506280" -> "0x7fe58d5061e0" [label=" cxx"]
"0x7fe58d506280" [label="src/clean.cc"]
"0x7fe58d5063d0" [label="build/clparser.o"]
"0x7fe58d505ea0" -> "0x7fe58d5063d0" [label=" cxx"]
"0x7fe58d505ea0" [label="src/clparser.cc"]
"0x7fe58d5065e0" [label="build/debug_flags.o"]
"0x7fe58d506680" -> "0x7fe58d5065e0" [label=" cxx"]
"0x7fe58d506680" [label="src/debug_flags.cc"]
"0x7fe58d5067a0" [label="build/depfile_parser.o"]
"0x7fe58d506870" -> "0x7fe58d5067a0" [label=" cxx"]
"0x7fe58d506870" [label="src/depfile_parser.cc"]
"0x7fe58d506a00" [label="build/deps_log.o"]
"0x7fe58d506a60" -> "0x7fe58d506a00" [label=" cxx"]
"0x7fe58d506a60" [label="src/deps_log.cc"]
"0x7fe58d506b60" [label="build/disk_interface.o"]
"0x7fe58d506c30" -> "0x7fe58d506b60" [label=" cxx"]
"0x7fe58d506c30" [label="src/disk_interface.cc"]
"0x7fe58d506d40" [label="build/dyndep.o"]
"0x7fe58d506dd0" -> "0x7fe58d506d40" [label=" cxx"]
"0x7fe58d506dd0" [label="src/dyndep.cc"]
"0x7fe58d506ee0" [label="build/dyndep_parser.o"]
"0x7fe58d5070f0" -> "0x7fe58d506ee0" [label=" cxx"]
"0x7fe58d5070f0" [label="src/dyndep_parser.cc"]
"0x7fe58d507160" [label="build/edit_distance.o"]
"0x7fe58d507200" -> "0x7fe58d507160" [label=" cxx"]
"0x7fe58d507200" [label="src/edit_distance.cc"]
"0x7fe58d507320" [label="build/eval_env.o"]
"0x7fe58d5073c0" -> "0x7fe58d507320" [label=" cxx"]
"0x7fe58d5073c0" [label="src/eval_env.cc"]
"0x7fe58d5074e0" [label="build/graph.o"]
"0x7fe58d507580" -> "0x7fe58d5074e0" [label=" cxx"]
"0x7fe58d507580" [label="src/graph.cc"]
"0x7fe58d5076a0" [label="build/graphviz.o"]
"0x7fe58d507740" -> "0x7fe58d5076a0" [label=" cxx"]
"0x7fe58d507740" [label="src/graphviz.cc"]
"0x7fe58d507950" [label="build/lexer.o"]
"0x7fe58d5079c0" -> "0x7fe58d507950" [label=" cxx"]
"0x7fe58d5079c0" [label="src/lexer.cc"]
"0x7fe58d507ad0" [label="build/line_printer.o"]
"0x7fe58d507b40" -> "0x7fe58d507ad0" [label=" cxx"]
"0x7fe58d507b40" [label="src/line_printer.cc"]
"0x7fe58d507ce0" [label="build/manifest_parser.o"]
"0x7fe58d507d60" -> "0x7fe58d507ce0" [label=" cxx"]
"0x7fe58d507d60" [label="src/manifest_parser.cc"]
"0x7fe58d507ea0" [label="build/metrics.o"]
"0x7fe58d507f00" -> "0x7fe58d507ea0" [label=" cxx"]
"0x7fe58d507f00" [label="src/metrics.cc"]
"0x7fe58d508000" [label="build/parser.o"]
"0x7fe58d5080a0" -> "0x7fe58d508000" [label=" cxx"]
"0x7fe58d5080a0" [label="src/parser.cc"]
"0x7fe58d5081c0" [label="build/state.o"]
"0x7fe58d508260" -> "0x7fe58d5081c0" [label=" cxx"]
"0x7fe58d508260" [label="src/state.cc"]
"0x7fe58d508400" [label="build/string_piece_util.o"]
"0x7fe58d508480" -> "0x7fe58d508400" [label=" cxx"]
"0x7fe58d508480" [label="src/string_piece_util.cc"]
"0x7fe58d5085a0" [label="build/util.o"]
"0x7fe58d506f70" -> "0x7fe58d5085a0" [label=" cxx"]
"0x7fe58d506f70" [label="src/util.cc"]
"0x7fe58d507080" [label="build/version.o"]
"0x7fe58d508970" -> "0x7fe58d507080" [label=" cxx"]
"0x7fe58d508970" [label="src/version.cc"]
"0x7fe58d508b10" [label="build/subprocess-posix.o"]
"0x7fe58d508b90" -> "0x7fe58d508b10" [label=" cxx"]
"0x7fe58d508b90" [label="src/subprocess-posix.cc"]
"0x7fe58d50b640" [label="ninja_test"]
"0x7fe58d50b5c0" [label="link", shape=ellipse]
"0x7fe58d50b5c0" -> "0x7fe58d50b640"
"0x7fe58d5093e0" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d509570" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d509710" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d507850" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d509c10" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d509df0" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d509fe0" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50a1b0" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50a3b0" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50a5b0" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50a710" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50a970" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50ab10" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50ac90" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50aef0" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50b0d0" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50b290" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d50b3f0" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d508f80" -> "0x7fe58d50b5c0" [arrowhead=none]
"0x7fe58d5093e0" [label="build/build_log_test.o"]
"0x7fe58d509470" -> "0x7fe58d5093e0" [label=" cxx"]
"0x7fe58d509470" [label="src/build_log_test.cc"]
"0x7fe58d509570" [label="build/build_test.o"]
"0x7fe58d509600" -> "0x7fe58d509570" [label=" cxx"]
"0x7fe58d509600" [label="src/build_test.cc"]
"0x7fe58d509710" [label="build/clean_test.o"]
"0x7fe58d5097b0" -> "0x7fe58d509710" [label=" cxx"]
"0x7fe58d5097b0" [label="src/clean_test.cc"]
"0x7fe58d507850" [label="build/clparser_test.o"]
"0x7fe58d5078f0" -> "0x7fe58d507850" [label=" cxx"]
"0x7fe58d5078f0" [label="src/clparser_test.cc"]
"0x7fe58d509c10" [label="build/depfile_parser_test.o"]
"0x7fe58d509c90" -> "0x7fe58d509c10" [label=" cxx"]
"0x7fe58d509c90" [label="src/depfile_parser_test.cc"]
"0x7fe58d509df0" [label="build/deps_log_test.o"]
"0x7fe58d509e50" -> "0x7fe58d509df0" [label=" cxx"]
"0x7fe58d509e50" [label="src/deps_log_test.cc"]
"0x7fe58d509fe0" [label="build/dyndep_parser_test.o"]
"0x7fe58d50a040" -> "0x7fe58d509fe0" [label=" cxx"]
"0x7fe58d50a040" [label="src/dyndep_parser_test.cc"]
"0x7fe58d50a1b0" [label="build/disk_interface_test.o"]
"0x7fe58d50a250" -> "0x7fe58d50a1b0" [label=" cxx"]
"0x7fe58d50a250" [label="src/disk_interface_test.cc"]
"0x7fe58d50a3b0" [label="build/edit_distance_test.o"]
"0x7fe58d50a450" -> "0x7fe58d50a3b0" [label=" cxx"]
"0x7fe58d50a450" [label="src/edit_distance_test.cc"]
"0x7fe58d50a5b0" [label="build/graph_test.o"]
"0x7fe58d50a610" -> "0x7fe58d50a5b0" [label=" cxx"]
"0x7fe58d50a610" [label="src/graph_test.cc"]
"0x7fe58d50a710" [label="build/lexer_test.o"]
"0x7fe58d50a7b0" -> "0x7fe58d50a710" [label=" cxx"]
"0x7fe58d50a7b0" [label="src/lexer_test.cc"]
"0x7fe58d50a970" [label="build/manifest_parser_test.o"]
"0x7fe58d50a9f0" -> "0x7fe58d50a970" [label=" cxx"]
"0x7fe58d50a9f0" [label="src/manifest_parser_test.cc"]
"0x7fe58d50ab10" [label="build/ninja_test.o"]
"0x7fe58d50ab70" -> "0x7fe58d50ab10" [label=" cxx"]
"0x7fe58d50ab70" [label="src/ninja_test.cc"]
"0x7fe58d50ac90" [label="build/state_test.o"]
"0x7fe58d50ad30" -> "0x7fe58d50ac90" [label=" cxx"]
"0x7fe58d50ad30" [label="src/state_test.cc"]
"0x7fe58d50aef0" [label="build/string_piece_util_test.o"]
"0x7fe58d50af70" -> "0x7fe58d50aef0" [label=" cxx"]
"0x7fe58d50af70" [label="src/string_piece_util_test.cc"]
"0x7fe58d50b0d0" [label="build/subprocess_test.o"]
"0x7fe58d50b150" -> "0x7fe58d50b0d0" [label=" cxx"]
"0x7fe58d50b150" [label="src/subprocess_test.cc"]
"0x7fe58d50b290" [label="build/test.o"]
"0x7fe58d50b2f0" -> "0x7fe58d50b290" [label=" cxx"]
"0x7fe58d50b2f0" [label="src/test.cc"]
"0x7fe58d50b3f0" [label="build/util_test.o"]
"0x7fe58d50b490" -> "0x7fe58d50b3f0" [label=" cxx"]
"0x7fe58d50b490" [label="src/util_test.cc"]
"0x7fe58d50bc10" [label="build_log_perftest"]
"0x7fe58d50bba0" [label="link", shape=ellipse]
"0x7fe58d50bba0" -> "0x7fe58d50bc10"
"0x7fe58d50b990" -> "0x7fe58d50bba0" [arrowhead=none]
"0x7fe58d508f80" -> "0x7fe58d50bba0" [arrowhead=none]
"0x7fe58d50b990" [label="build/build_log_perftest.o"]
"0x7fe58d50ba20" -> "0x7fe58d50b990" [label=" cxx"]
"0x7fe58d50ba20" [label="src/build_log_perftest.cc"]
"0x7fe58d508820" [label="canon_perftest"]
"0x7fe58d5087b0" [label="link", shape=ellipse]
"0x7fe58d5087b0" -> "0x7fe58d508820"
"0x7fe58d50bd20" -> "0x7fe58d5087b0" [arrowhead=none]
"0x7fe58d508f80" -> "0x7fe58d5087b0" [arrowhead=none]
"0x7fe58d50bd20" [label="build/canon_perftest.o"]
"0x7fe58d508660" -> "0x7fe58d50bd20" [label=" cxx"]
"0x7fe58d508660" [label="src/canon_perftest.cc"]
"0x7fe58d50c0a0" [label="depfile_parser_perftest"]
"0x7fe58d50c030" [label="link", shape=ellipse]
"0x7fe58d50c030" -> "0x7fe58d50c0a0"
"0x7fe58d50bdf0" -> "0x7fe58d50c030" [arrowhead=none]
"0x7fe58d508f80" -> "0x7fe58d50c030" [arrowhead=none]
"0x7fe58d50bdf0" [label="build/depfile_parser_perftest.o"]
"0x7fe58d50be70" -> "0x7fe58d50bdf0" [label=" cxx"]
"0x7fe58d50be70" [label="src/depfile_parser_perftest.cc"]
"0x7fe58d50c470" [label="hash_collision_bench"]
"0x7fe58d50c400" [label="link", shape=ellipse]
"0x7fe58d50c400" -> "0x7fe58d50c470"
"0x7fe58d50c270" -> "0x7fe58d50c400" [arrowhead=none]
"0x7fe58d508f80" -> "0x7fe58d50c400" [arrowhead=none]
"0x7fe58d50c270" [label="build/hash_collision_bench.o"]
"0x7fe58d50c2d0" -> "0x7fe58d50c270" [label=" cxx"]
"0x7fe58d50c2d0" [label="src/hash_collision_bench.cc"]
"0x7fe58d50c880" [label="manifest_parser_perftest"]
"0x7fe58d50c810" [label="link", shape=ellipse]
"0x7fe58d50c810" -> "0x7fe58d50c880"
"0x7fe58d50c5e0" -> "0x7fe58d50c810" [arrowhead=none]
"0x7fe58d508f80" -> "0x7fe58d50c810" [arrowhead=none]
"0x7fe58d50c5e0" [label="build/manifest_parser_perftest.o"]
"0x7fe58d50c670" -> "0x7fe58d50c5e0" [label=" cxx"]
"0x7fe58d50c670" [label="src/manifest_parser_perftest.cc"]
"0x7fe58d50cc10" [label="clparser_perftest"]
"0x7fe58d50cba0" [label="link", shape=ellipse]
"0x7fe58d50cba0" -> "0x7fe58d50cc10"
"0x7fe58d50c9c0" -> "0x7fe58d50cba0" [arrowhead=none]
"0x7fe58d508f80" -> "0x7fe58d50cba0" [arrowhead=none]
"0x7fe58d50c9c0" [label="build/clparser_perftest.o"]
"0x7fe58d50ca20" -> "0x7fe58d50c9c0" [label=" cxx"]
"0x7fe58d50ca20" [label="src/clparser_perftest.cc"]
}