[llvm-commits] [llvm] r74482 - in /llvm/trunk: include/llvm/CompilerDriver/Main.inc lib/CompilerDriver/Main.cpp

Mikhail Glushenkov foldr at codedgers.com
Mon Jun 29 17:15:24 PDT 2009


Author: foldr
Date: Mon Jun 29 19:15:24 2009
New Revision: 74482

URL: http://llvm.org/viewvc/llvm-project?rev=74482&view=rev
Log:
Move the driver entry point out of Main.inc.

Added:
    llvm/trunk/lib/CompilerDriver/Main.cpp
      - copied, changed from r74473, llvm/trunk/include/llvm/CompilerDriver/Main.inc
Modified:
    llvm/trunk/include/llvm/CompilerDriver/Main.inc

Modified: llvm/trunk/include/llvm/CompilerDriver/Main.inc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/CompilerDriver/Main.inc?rev=74482&r1=74481&r2=74482&view=diff

==============================================================================
--- llvm/trunk/include/llvm/CompilerDriver/Main.inc (original)
+++ llvm/trunk/include/llvm/CompilerDriver/Main.inc Mon Jun 29 19:15:24 2009
@@ -12,121 +12,22 @@
 //  supported please refer to the tools' manual page or run the tool
 //  with the --help option.
 //
+//  This file provides the default entry point for the driver executable.
+//
 //===----------------------------------------------------------------------===//
 
 #ifndef LLVM_INCLUDE_COMPILER_DRIVER_MAIN_INC
 #define LLVM_INCLUDE_COMPILER_DRIVER_MAIN_INC
 
-#include "llvm/CompilerDriver/BuiltinOptions.h"
-#include "llvm/CompilerDriver/CompilationGraph.h"
-#include "llvm/CompilerDriver/Error.h"
 #include "llvm/CompilerDriver/ForceLinkage.h"
-#include "llvm/CompilerDriver/Plugin.h"
-
-#include "llvm/System/Path.h"
-
-#include <iostream>
-#include <stdexcept>
-#include <string>
-
-namespace cl = llvm::cl;
-namespace sys = llvm::sys;
-using namespace llvmc;
-
-namespace {
-
-  sys::Path getTempDir() {
-    sys::Path tempDir;
-
-    // GCC 4.5-style -save-temps handling.
-    if (SaveTemps == SaveTempsEnum::Unset) {
-      tempDir = sys::Path::GetTemporaryDirectory();
-    }
-    else if (SaveTemps == SaveTempsEnum::Obj && !OutputFilename.empty()) {
-      tempDir = OutputFilename;
-
-      if (!tempDir.exists()) {
-        std::string ErrMsg;
-        if (tempDir.createDirectoryOnDisk(true, &ErrMsg))
-          throw std::runtime_error(ErrMsg);
-      }
-    }
-    // else if (SaveTemps == Cwd) -> use current dir (leave tempDir empty)
-
-    return tempDir;
-  }
-
-  /// BuildTargets - A small wrapper for CompilationGraph::Build.
-  int BuildTargets(CompilationGraph& graph, const LanguageMap& langMap) {
-    int ret;
-    const sys::Path& tempDir = getTempDir();
 
-    try {
-      ret = graph.Build(tempDir, langMap);
-    }
-    catch(...) {
-      if (SaveTemps == SaveTempsEnum::Unset)
-        tempDir.eraseFromDisk(true);
-      throw;
-    }
-
-    if (SaveTemps == SaveTempsEnum::Unset)
-      tempDir.eraseFromDisk(true);
-    return ret;
-  }
+namespace llvmc {
+  int Main(int argc, char** argv);
 }
 
 int main(int argc, char** argv) {
-  try {
-    ForceLinkage();
-
-    LanguageMap langMap;
-    CompilationGraph graph;
-
-    cl::ParseCommandLineOptions
-      (argc, argv, "LLVM Compiler Driver (Work In Progress)", true);
-
-    PluginLoader Plugins;
-    Plugins.PopulateLanguageMap(langMap);
-    Plugins.PopulateCompilationGraph(graph);
-
-    if (CheckGraph) {
-      int ret = graph.Check();
-      if (!ret)
-        std::cerr << "check-graph: no errors found.\n";
-
-      return ret;
-    }
-
-    if (ViewGraph) {
-      graph.viewGraph();
-      if (!WriteGraph)
-        return 0;
-    }
-
-    if (WriteGraph) {
-      graph.writeGraph(OutputFilename.empty()
-                       ? std::string("compilation-graph.dot")
-                       : OutputFilename);
-      return 0;
-    }
-
-    if (InputFilenames.empty()) {
-      throw std::runtime_error("no input files");
-    }
-
-    return BuildTargets(graph, langMap);
-  }
-  catch(llvmc::error_code& ec) {
-    return ec.code();
-  }
-  catch(const std::exception& ex) {
-    std::cerr << argv[0] << ": " << ex.what() << '\n';
-  }
-  catch(...) {
-    std::cerr << argv[0] << ": unknown error!\n";
-  }
-  return 1;
+  llvmc::ForceLinkage();
+  return llvmc::Main(argc, argv);
 }
 
 #endif // LLVM_INCLUDE_COMPILER_DRIVER_MAIN_INC

Copied: llvm/trunk/lib/CompilerDriver/Main.cpp (from r74473, llvm/trunk/include/llvm/CompilerDriver/Main.inc)
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CompilerDriver/Main.cpp?p2=llvm/trunk/lib/CompilerDriver/Main.cpp&p1=llvm/trunk/include/llvm/CompilerDriver/Main.inc&r1=74473&r2=74482&rev=74482&view=diff

==============================================================================
--- llvm/trunk/include/llvm/CompilerDriver/Main.inc (original)
+++ llvm/trunk/lib/CompilerDriver/Main.cpp Mon Jun 29 19:15:24 2009
@@ -1,4 +1,4 @@
-//===--- Main.inc - The LLVM Compiler Driver --------------------*- C++ -*-===//
+//===--- Main.cpp - The LLVM Compiler Driver --------------------*- C++ -*-===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -7,20 +7,13 @@
 //
 //===----------------------------------------------------------------------===//
 //
-//  This tool provides a single point of access to the LLVM
-//  compilation tools.  It has many options. To discover the options
-//  supported please refer to the tools' manual page or run the tool
-//  with the --help option.
+//  llvmc::Main function - driver entry point.
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_INCLUDE_COMPILER_DRIVER_MAIN_INC
-#define LLVM_INCLUDE_COMPILER_DRIVER_MAIN_INC
-
 #include "llvm/CompilerDriver/BuiltinOptions.h"
 #include "llvm/CompilerDriver/CompilationGraph.h"
 #include "llvm/CompilerDriver/Error.h"
-#include "llvm/CompilerDriver/ForceLinkage.h"
 #include "llvm/CompilerDriver/Plugin.h"
 
 #include "llvm/System/Path.h"
@@ -76,10 +69,10 @@
   }
 }
 
-int main(int argc, char** argv) {
-  try {
-    ForceLinkage();
+namespace llvmc {
 
+int Main(int argc, char** argv) {
+  try {
     LanguageMap langMap;
     CompilationGraph graph;
 
@@ -129,4 +122,4 @@
   return 1;
 }
 
-#endif // LLVM_INCLUDE_COMPILER_DRIVER_MAIN_INC
+} // end namespace llvmc





More information about the llvm-commits mailing list