From a7b5e219bb5365b19f01c554b72c29cdde0e1244 Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Wed, 15 Apr 2009 16:34:29 +0000 Subject: [PATCH] Driver: Add --help-hidden llvm-svn: 69171 --- clang/include/clang/Driver/Driver.h | 6 ++-- clang/include/clang/Driver/Options.def | 1 + clang/lib/Driver/Driver.cpp | 41 ++++++++++++++++++++++++-- 3 files changed, 43 insertions(+), 5 deletions(-) diff --git a/clang/include/clang/Driver/Driver.h b/clang/include/clang/Driver/Driver.h index 8c6c9f33fcec..71069b149826 100644 --- a/clang/include/clang/Driver/Driver.h +++ b/clang/include/clang/Driver/Driver.h @@ -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; diff --git a/clang/include/clang/Driver/Options.def b/clang/include/clang/Driver/Options.def index 1083794414f7..ce6e14a22c3b 100644 --- a/clang/include/clang/Driver/Options.def +++ b/clang/include/clang/Driver/Options.def @@ -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) diff --git a/clang/lib/Driver/Driver.cpp b/clang/lib/Driver/Driver.cpp index 8768629625da..da590f2bca08 100644 --- a/clang/lib/Driver/Driver.cpp +++ b/clang/lib/Driver/Driver.cpp @@ -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; } -- GitLab