diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2015-05-27 18:44:32 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2015-05-27 18:44:32 +0000 | 
| commit | 5a5ac124e1efaf208671f01c46edb15f29ed2a0b (patch) | |
| tree | a6140557876943cdd800ee997c9317283394b22c /lib/Support/GraphWriter.cpp | |
| parent | f03b5bed27d0d2eafd68562ce14f8b5e3f1f0801 (diff) | |
Notes
Diffstat (limited to 'lib/Support/GraphWriter.cpp')
| -rw-r--r-- | lib/Support/GraphWriter.cpp | 28 | 
1 files changed, 26 insertions, 2 deletions
| diff --git a/lib/Support/GraphWriter.cpp b/lib/Support/GraphWriter.cpp index 054df528474e..97aedc88473a 100644 --- a/lib/Support/GraphWriter.cpp +++ b/lib/Support/GraphWriter.cpp @@ -15,7 +15,6 @@  #include "llvm/Config/config.h"  #include "llvm/Support/CommandLine.h"  #include "llvm/Support/FileSystem.h" -#include "llvm/Support/Path.h"  #include "llvm/Support/Program.h"  using namespace llvm; @@ -93,11 +92,12 @@ static bool ExecGraphViewer(StringRef ExecPath, std::vector<const char *> &args,      errs() << " done. \n";    } else {      sys::ExecuteNoWait(ExecPath, args.data(), nullptr, nullptr, 0, &ErrMsg); -    errs() << "Remember to erase graph file: " << Filename.str() << "\n"; +    errs() << "Remember to erase graph file: " << Filename << "\n";    }    return false;  } +namespace {  struct GraphSession {    std::string LogBuffer;    bool TryFindProgram(StringRef Names, std::string &ProgramPath) { @@ -114,6 +114,7 @@ struct GraphSession {      return false;    }  }; +} // namespace  static const char *getProgramName(GraphProgram::Name program) {    switch (program) { @@ -139,6 +140,29 @@ bool llvm::DisplayGraph(StringRef FilenameRef, bool wait,    std::string ViewerPath;    GraphSession S; +#ifdef __APPLE__ +  if (S.TryFindProgram("open", ViewerPath)) { +    std::vector<const char *> args; +    args.push_back(ViewerPath.c_str()); +    if (wait) +      args.push_back("-W"); +    args.push_back(Filename.c_str()); +    args.push_back(nullptr); +    errs() << "Trying 'open' program... "; +    if (!ExecGraphViewer(ViewerPath, args, Filename, wait, ErrMsg)) +      return false; +  } +#endif +  if (S.TryFindProgram("xdg-open", ViewerPath)) { +    std::vector<const char *> args; +    args.push_back(ViewerPath.c_str()); +    args.push_back(Filename.c_str()); +    args.push_back(nullptr); +    errs() << "Trying 'xdg-open' program... "; +    if (!ExecGraphViewer(ViewerPath, args, Filename, wait, ErrMsg)) +      return false; +  } +    // Graphviz    if (S.TryFindProgram("Graphviz", ViewerPath)) {      std::vector<const char *> args; | 
