]> granicus.if.org Git - clang/commitdiff
Driver: Add --help-hidden
authorDaniel Dunbar <daniel@zuster.org>
Wed, 15 Apr 2009 16:34:29 +0000 (16:34 +0000)
committerDaniel Dunbar <daniel@zuster.org>
Wed, 15 Apr 2009 16:34:29 +0000 (16:34 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@69171 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Driver/Driver.h
include/clang/Driver/Options.def
lib/Driver/Driver.cpp

index 8c6c9f33fcec35e181e93b1081fb63a24ddff635..71069b149826d2b6657ba32aab53e133c73c78b5 100644 (file)
@@ -163,8 +163,10 @@ public:
   /// PrintActions - Print the list of actions.
   void PrintActions(const Compilation &C) const;
 
-  /// PrintOptions - Print the help text.
-  void PrintHelp() const;
+  /// PrintHelp - Print the help text.
+  ///
+  /// \param ShowHidden - Show hidden options.
+  void PrintHelp(bool ShowHidden) const;
 
   /// PrintOptions - Print the list of arguments.
   void PrintOptions(const ArgList &Args) const;
index 1083794414f7f5249132e5f9e9672eebbd5efd0c..ce6e14a22c3bc4ded4f770d685605ea52faa7bc1 100644 (file)
@@ -161,6 +161,7 @@ OPTION("--for-linker=", _for_linker_EQ, Joined, INVALID, Xlinker, "liS", 0, 0, 0
 OPTION("--for-linker", _for_linker, Separate, INVALID, Xlinker, "li", 0, 0, 0)
 OPTION("--force-link=", _force_link_EQ, Joined, INVALID, u, "S", 0, 0, 0)
 OPTION("--force-link", _force_link, Separate, INVALID, u, "", 0, 0, 0)
+OPTION("--help-hidden", _help_hidden, Flag, INVALID, INVALID, "", 0, 0, 0)
 OPTION("--help", _help, Flag, INVALID, INVALID, "", 0, 
        "Display available options", 0)
 OPTION("--imacros=", _imacros_EQ, Joined, INVALID, imacros, "S", 0, 0, 0)
index 8768629625dafab516026dc943c0294288a53a5f..da590f2bca080b331cf369ec4ca7a3111593a423 100644 (file)
@@ -253,7 +253,7 @@ static std::string getOptionHelpName(const OptTable &Opts, options::ID Id) {
   return Name;
 }
 
-void Driver::PrintHelp() const {
+void Driver::PrintHelp(bool ShowHidden) const {
   llvm::raw_ostream &OS = llvm::outs();
 
   OS << "OVERVIEW: clang \"gcc-compatible\" driver\n";
@@ -272,9 +272,43 @@ void Driver::PrintHelp() const {
                                           Text));
   }
 
+  if (ShowHidden) {
+    OptionHelp.push_back(std::make_pair("\nDRIVER OPTIONS:",""));
+    OptionHelp.push_back(std::make_pair("-ccc-cxx",
+                                        "Act as a C++ driver"));
+    OptionHelp.push_back(std::make_pair("-ccc-gcc-name",
+                                        "Name for native GCC compiler"));
+    OptionHelp.push_back(std::make_pair("-ccc-clang-cxx",
+                                        "Use the clang compiler for C++"));
+    OptionHelp.push_back(std::make_pair("-ccc-no-clang",
+                                        "Never use the clang compiler"));
+    OptionHelp.push_back(std::make_pair("-ccc-no-clang-cpp",
+                                        "Never use the clang preprocessor"));
+    OptionHelp.push_back(std::make_pair("-ccc-clang-archs",
+                                        "Comma separate list of architectures "
+                                        "to use the clang compiler for"));
+
+    OptionHelp.push_back(std::make_pair("\nDEBUG/DEVELOPMENT OPTIONS:",""));
+    OptionHelp.push_back(std::make_pair("-ccc-host-triple",
+                                        "Simulate running on the given target"));
+    OptionHelp.push_back(std::make_pair("-ccc-print-options",
+                                        "Dump parsed command line arguments"));
+    OptionHelp.push_back(std::make_pair("-ccc-print-phases",
+                                        "Dump list of actions to perform"));
+    OptionHelp.push_back(std::make_pair("-ccc-print-bindings",
+                                        "Show bindings of tools to actions"));
+    OptionHelp.push_back(std::make_pair("CCC_ADD_ARGS",
+                               "(ENVIRONMENT VARIABLE) Comma separated list of "
+                               "arguments to prepend to the command line"));
+  }
+
   // Find the maximum option length. 
   unsigned OptionFieldWidth = 0;
   for (unsigned i = 0, e = OptionHelp.size(); i != e; ++i) {
+    // Skip titles.
+    if (!OptionHelp[i].second)
+      continue;
+
     // Limit the amount of padding we are willing to give up for
     // alignment.
     unsigned Length = OptionHelp[i].first.size();
@@ -329,8 +363,9 @@ bool Driver::HandleImmediateArgs(const Compilation &C) {
     return false;
   }
 
-  if (C.getArgs().hasArg(options::OPT__help)) {
-    PrintHelp();
+  if (C.getArgs().hasArg(options::OPT__help) || 
+      C.getArgs().hasArg(options::OPT__help_hidden)) {
+    PrintHelp(C.getArgs().hasArg(options::OPT__help_hidden));
     return false;
   }