GraphWriter: support the XDG open utility
authorAlp Toker <alp@nuanti.com>
Wed, 4 Jun 2014 03:57:44 +0000 (03:57 +0000)
committerAlp Toker <alp@nuanti.com>
Wed, 4 Jun 2014 03:57:44 +0000 (03:57 +0000)
This runs a suitable viewer on Unix desktop environments specified by
Freedesktop.org (GNOME, KDE, Linux distributions etc.)

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210147 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Support/GraphWriter.cpp

index 1521475a8b8613456e0d0627c8bf4704e1130035..a7bb4f26a58887a79332eb18651cdd4cd08a3b4e 100644 (file)
@@ -164,12 +164,14 @@ bool llvm::DisplayGraph(StringRef FilenameRef, bool wait,
     return ExecGraphViewer(ViewerPath, args, Filename, wait, ErrMsg);
   }
 
-  enum PSViewerKind { PSV_None, PSV_OSXOpen, PSV_Ghostview };
+  enum PSViewerKind { PSV_None, PSV_OSXOpen, PSV_XDGOpen, PSV_Ghostview };
   PSViewerKind PSViewer = PSV_None;
 #ifdef __APPLE__
-  if (S.TryFindProgram("open", ViewerPath))
+  if (!PSViewer && S.TryFindProgram("open", ViewerPath))
     PSViewer = PSV_OSXOpen;
 #endif
+  if (!PSViewer && S.TryFindProgram("xdg-open", ViewerPath))
+    PSViewer = PSV_XDGOpen;
   if (!PSViewer && S.TryFindProgram("gv", ViewerPath))
     PSViewer = PSV_Ghostview;
 
@@ -202,6 +204,10 @@ bool llvm::DisplayGraph(StringRef FilenameRef, bool wait,
       args.push_back("-W");
       args.push_back(PSFilename.c_str());
       break;
+    case PSV_XDGOpen:
+      wait = false;
+      args.push_back(PSFilename.c_str());
+      break;
     case PSV_Ghostview:
       args.push_back("--spartan");
       args.push_back(PSFilename.c_str());