diff options
author | David Greene <greened@obbligato.org> | 2009-07-09 17:06:18 +0000 |
---|---|---|
committer | David Greene <greened@obbligato.org> | 2009-07-09 17:06:18 +0000 |
commit | 4417b4c80b8587f036b2dbf4657127d14407017c (patch) | |
tree | b9d0e31101cccd1bee33e15f4bec437cbe4aa7b9 /llvm/lib/Support/GraphWriter.cpp | |
parent | 5df1bced6981f971e0e7dd4494d6db6820941f07 (diff) | |
download | llvm-4417b4c80b8587f036b2dbf4657127d14407017c.zip llvm-4417b4c80b8587f036b2dbf4657127d14407017c.tar.gz llvm-4417b4c80b8587f036b2dbf4657127d14407017c.tar.bz2 |
Add support for other GraphViz display tools. This can help
with very large graphs, where dot isn't necessarily the
most visually pleasing way of looking at the graph.
llvm-svn: 75144
Diffstat (limited to 'llvm/lib/Support/GraphWriter.cpp')
-rw-r--r-- | llvm/lib/Support/GraphWriter.cpp | 54 |
1 files changed, 48 insertions, 6 deletions
diff --git a/llvm/lib/Support/GraphWriter.cpp b/llvm/lib/Support/GraphWriter.cpp index 8045886..d0be7a18 100644 --- a/llvm/lib/Support/GraphWriter.cpp +++ b/llvm/lib/Support/GraphWriter.cpp @@ -18,7 +18,8 @@ #include "llvm/Config/config.h" using namespace llvm; -void llvm::DisplayGraph(const sys::Path &Filename, bool wait) { +void llvm::DisplayGraph(const sys::Path &Filename, bool wait, + GraphProgram::Name program) { std::string ErrMsg; #if HAVE_GRAPHVIZ sys::Path Graphviz(LLVM_PATH_GRAPHVIZ); @@ -35,15 +36,56 @@ void llvm::DisplayGraph(const sys::Path &Filename, bool wait) { else { Filename.eraseFromDisk(); } - -#elif (HAVE_GV && (HAVE_DOT || HAVE_FDP)) + +#elif (HAVE_GV && (HAVE_DOT || HAVE_FDP || HAVE_NEATO || \ + HAVE_TWOPI || HAVE_CIRCO)) sys::Path PSFilename = Filename; PSFilename.appendSuffix("ps"); + sys::Path prog; + + // Set default grapher +#if HAVE_CIRCO + prog = sys::Path(LLVM_PATH_CIRCO); +#endif +#if HAVE_TWOPI + prog = sys::Path(LLVM_PATH_TWOPI); +#endif +#if HAVE_NEATO + prog = sys::Path(LLVM_PATH_NEATO); +#endif #if HAVE_FDP - sys::Path prog(LLVM_PATH_FDP); -#else - sys::Path prog(LLVM_PATH_DOT); + prog = sys::Path(LLVM_PATH_FDP); +#endif +#if HAVE_DOT + prog = sys::Path(LLVM_PATH_DOT); +#endif + + // Find which program the user wants +#if HAVE_DOT + if (program == GraphProgram::DOT) { + prog = sys::Path(LLVM_PATH_DOT); + } +#endif +#if (HAVE_FDP) + if (program == GraphProgram::FDP) { + prog = sys::Path(LLVM_PATH_FDP); + } +#endif +#if (HAVE_NEATO) + if (program == GraphProgram::NEATO) { + prog = sys::Path(LLVM_PATH_NEATO); + } +#endif +#if (HAVE_TWOPI) + if (program == GraphProgram::TWOPI) { + prog = sys::Path(LLVM_PATH_TWOPI); + } +#endif +#if (HAVE_CIRCO) + if (program == GraphProgram::CIRCO) { + prog = sys::Path(LLVM_PATH_CIRCO); + } #endif std::vector<const char*> args; |