/// in your path.
void viewGraph();
- /// writeGraph - Write a compilation-graph.dot file.
- void writeGraph();
+ /// writeGraph - Write Graphviz .dot source file to the current direcotry.
+ void writeGraph(const std::string& OutputFilename);
// GraphTraits support.
friend NodesIterator GraphBegin(CompilationGraph*);
Plugins.PopulateCompilationGraph(graph);
if (CheckGraph) {
- return graph.Check();
+ int ret = graph.Check();
+ if (!ret)
+ std::cerr << "check-graph: no errors found.\n";
+
+ return ret;
}
if (ViewGraph) {
}
if (WriteGraph) {
- graph.writeGraph();
+ graph.writeGraph(OutputFilename.empty()
+ ? std::string("compilation-graph.dot")
+ : OutputFilename);
return 0;
}
// Check for cycles.
ret += this->CheckCycles();
- if (!ret)
- std::cerr << "check-graph: no errors found.\n";
-
return ret;
}
}
-void CompilationGraph::writeGraph() {
- std::ofstream O("compilation-graph.dot");
+void CompilationGraph::writeGraph(const std::string& OutputFilename) {
+ std::ofstream O(OutputFilename.c_str());
if (O.good()) {
- std::cerr << "Writing 'compilation-graph.dot' file...";
+ std::cerr << "Writing '"<< OutputFilename << "' file...";
llvm::WriteGraph(O, this);
std::cerr << "done.\n";
O.close();
}
else {
- throw std::runtime_error("Error opening file 'compilation-graph.dot'"
- " for writing!");
+ throw std::runtime_error("Error opening file '" + OutputFilename
+ + "' for writing!");
}
}