Reverted clang-check to fully supported CommandLine Library use-case: global
static variables.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@162391 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/clang-check/ClangCheck.cpp b/tools/clang-check/ClangCheck.cpp
index 9e58077..c02c23d 100644
--- a/tools/clang-check/ClangCheck.cpp
+++ b/tools/clang-check/ClangCheck.cpp
@@ -1,4 +1,4 @@
-//===- tools/clang-check/ClangCheck.cpp - Clang check tool ----------------===//
+//===--- tools/clang-check/ClangCheck.cpp - Clang check tool --------------===//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -16,20 +16,20 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "llvm/Support/CommandLine.h"
 #include "clang/AST/ASTConsumer.h"
 #include "clang/Driver/OptTable.h"
 #include "clang/Driver/Options.h"
 #include "clang/Frontend/ASTConsumers.h"
-#include "clang/Frontend/FrontendActions.h"
-#include "clang/Tooling/CommandLineClangTool.h"
+#include "clang/Tooling/CommonOptionsParser.h"
 #include "clang/Tooling/Tooling.h"
+#include "llvm/Support/CommandLine.h"
 
 using namespace clang::driver;
 using namespace clang::tooling;
 using namespace llvm;
 
-static const char *MoreHelpText =
+static cl::extrahelp CommonHelp(CommonHelpMessage);
+static cl::extrahelp MoreHelp(
     "\tFor example, to run clang-check on all files in a subtree of the\n"
     "\tsource tree, use:\n"
     "\n"
@@ -41,26 +41,26 @@
     "\n"
     "\tNote, that path/in/subtree and current directory should follow the\n"
     "\trules described above.\n"
-    "\n";
+    "\n"
+);
+
+static OwningPtr<OptTable> Options(createDriverOptTable());
+static cl::opt<bool> ASTDump(
+    "ast-dump",
+    cl::desc(Options->getOptionHelpText(options::OPT_ast_dump)));
+static cl::opt<bool> ASTList(
+    "ast-list",
+    cl::desc(Options->getOptionHelpText(options::OPT_ast_list)));
+static cl::opt<bool> ASTPrint(
+    "ast-print",
+    cl::desc(Options->getOptionHelpText(options::OPT_ast_print)));
+static cl::opt<std::string> ASTDumpFilter(
+    "ast-dump-filter",
+    cl::desc(Options->getOptionHelpText(options::OPT_ast_dump_filter)));
 
 namespace {
 class ActionFactory {
 public:
-  ActionFactory()
-    : Options(createDriverOptTable()),
-      ASTDump(
-        "ast-dump",
-        cl::desc(Options->getOptionHelpText(options::OPT_ast_dump))),
-      ASTList(
-        "ast-list",
-        cl::desc(Options->getOptionHelpText(options::OPT_ast_list))),
-      ASTPrint(
-        "ast-print",
-        cl::desc(Options->getOptionHelpText(options::OPT_ast_print))),
-      ASTDumpFilter(
-        "ast-dump-filter",
-        cl::desc(Options->getOptionHelpText(options::OPT_ast_dump_filter))) {}
-
   clang::ASTConsumer *newASTConsumer() {
     if (ASTList)
       return clang::CreateASTDeclNodeLister();
@@ -70,19 +70,13 @@
       return clang::CreateASTPrinter(&llvm::outs(), ASTDumpFilter);
     return new clang::ASTConsumer();
   }
-private:
-  OwningPtr<OptTable> Options;
-  cl::opt<bool> ASTDump;
-  cl::opt<bool> ASTList;
-  cl::opt<bool> ASTPrint;
-  cl::opt<std::string> ASTDumpFilter;
 };
 }
 
 int main(int argc, const char **argv) {
   ActionFactory Factory;
-  CommandLineClangTool Tool;
-  cl::extrahelp MoreHelp(MoreHelpText);
-  Tool.initialize(argc, argv);
+  CommonOptionsParser OptionsParser(argc, argv);
+  ClangTool Tool(OptionsParser.GetCompilations(),
+                 OptionsParser.GetSourcePathList());
   return Tool.run(newFrontendActionFactory(&Factory));
 }