[llvm] 728a7de - Revert "[llvm-debuginfod][NFC] Switch to OptTable"

Alex Brachet via llvm-commits llvm-commits at lists.llvm.org
Mon May 29 09:31:24 PDT 2023


Author: Alex Brachet
Date: 2023-05-29T16:31:04Z
New Revision: 728a7de88a780709c81476dd8e9287c09a0d1bcf

URL: https://github.com/llvm/llvm-project/commit/728a7de88a780709c81476dd8e9287c09a0d1bcf
DIFF: https://github.com/llvm/llvm-project/commit/728a7de88a780709c81476dd8e9287c09a0d1bcf.diff

LOG: Revert "[llvm-debuginfod][NFC] Switch to OptTable"

This reverts commit 1610627d2b42c0daf8cc20649c50ddad222f001b.

Added: 
    

Modified: 
    llvm/tools/llvm-debuginfod/CMakeLists.txt
    llvm/tools/llvm-debuginfod/llvm-debuginfod.cpp
    llvm/utils/gn/secondary/llvm/tools/llvm-debuginfod/BUILD.gn

Removed: 
    llvm/tools/llvm-debuginfod/Opts.td


################################################################################
diff  --git a/llvm/tools/llvm-debuginfod/CMakeLists.txt b/llvm/tools/llvm-debuginfod/CMakeLists.txt
index d32c6826d7687..72f2c19848489 100644
--- a/llvm/tools/llvm-debuginfod/CMakeLists.txt
+++ b/llvm/tools/llvm-debuginfod/CMakeLists.txt
@@ -1,16 +1,8 @@
 set(LLVM_LINK_COMPONENTS
-  Option
   Support
   )
-set(LLVM_TARGET_DEFINITIONS Opts.td)
-tablegen(LLVM Opts.inc -gen-opt-parser-defs)
-add_public_tablegen_target(DebugInfodOptsTableGen)
-
 add_llvm_tool(llvm-debuginfod
   llvm-debuginfod.cpp
-
-  DEPENDS
-  DebugInfodOptsTableGen
   )
 target_link_libraries(llvm-debuginfod PRIVATE LLVMDebuginfod)
 if(LLVM_INSTALL_BINUTILS_SYMLINKS)

diff  --git a/llvm/tools/llvm-debuginfod/Opts.td b/llvm/tools/llvm-debuginfod/Opts.td
deleted file mode 100644
index 1de241a3fc2a1..0000000000000
--- a/llvm/tools/llvm-debuginfod/Opts.td
+++ /dev/null
@@ -1,20 +0,0 @@
-include "llvm/Option/OptParser.td"
-
-class F<string name, string help> : Flag<["-"], name>, HelpText<help>;
-class FF<string name, string help>: Flag<["--"], name>, HelpText<help>;
-class S<string name, string meta, string help>: Separate<["-"], name>, HelpText<help>, MetaVarName<meta>;
-
-def help : FF<"help", "Display available options">;
-def : F<"h", "Alias for --help">, Alias<help>;
-def max_concurrency :
-   S<"c", "<ulong>", "Maximum number of files to scan concurrently. "
-                     "If 0, use the hardware concurrency.">;
-def host_interface : S<"i", "<string>", "Host interface to bind to.">;
-def min_interval :
-    S<"m", "<number>", "Minimum number of seconds to wait before an on-demand update can be"
-                       "triggered by a request for a buildid which is not in the collection.">;
-def port : S<"p", "<uint>", "Port to listen on. Set to 0 to bind to any available port.">;
-def scan_interval :
-    S<"t", "<int>", "Number of seconds to wait between subsequent "
-                    "automated scans of the filesystem.">;
-def verbose_logging : F<"v", "Enable verbose logging.">;

diff  --git a/llvm/tools/llvm-debuginfod/llvm-debuginfod.cpp b/llvm/tools/llvm-debuginfod/llvm-debuginfod.cpp
index 7edc78e7f3f2a..c64d4dbb3155f 100644
--- a/llvm/tools/llvm-debuginfod/llvm-debuginfod.cpp
+++ b/llvm/tools/llvm-debuginfod/llvm-debuginfod.cpp
@@ -15,120 +15,60 @@
 ///
 //===----------------------------------------------------------------------===//
 
-#include "llvm/ADT/StringRef.h"
 #include "llvm/Debuginfod/Debuginfod.h"
 #include "llvm/Debuginfod/HTTPClient.h"
-#include "llvm/Option/ArgList.h"
-#include "llvm/Option/Option.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/InitLLVM.h"
 #include "llvm/Support/ThreadPool.h"
 
 using namespace llvm;
 
-// Command-line option boilerplate.
-namespace {
-enum ID {
-  OPT_INVALID = 0, // This is not an option ID.
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
-  OPT_##ID,
-#include "Opts.inc"
-#undef OPTION
-};
-
-#define PREFIX(NAME, VALUE)                                                    \
-  static constexpr StringLiteral NAME##_init[] = VALUE;                        \
-  static constexpr ArrayRef<StringLiteral> NAME(NAME##_init,                   \
-                                                std::size(NAME##_init) - 1);
-#include "Opts.inc"
-#undef PREFIX
-
-static constexpr opt::OptTable::Info InfoTable[] = {
-#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM,  \
-               HELPTEXT, METAVAR, VALUES)                                      \
-  {                                                                            \
-      PREFIX,      NAME,      HELPTEXT,                                        \
-      METAVAR,     OPT_##ID,  opt::Option::KIND##Class,                        \
-      PARAM,       FLAGS,     OPT_##GROUP,                                     \
-      OPT_##ALIAS, ALIASARGS, VALUES},
-#include "Opts.inc"
-#undef OPTION
-};
-
-class DebuginfodOptTable : public opt::GenericOptTable {
-public:
-  DebuginfodOptTable() : GenericOptTable(InfoTable) {}
-};
-} // end anonymous namespace
-
-// Options
-static unsigned Port;
-static std::string HostInterface;
-static int ScanInterval;
-static double MinInterval;
-static size_t MaxConcurrency;
-static bool VerboseLogging;
-static std::vector<std::string> ScanPaths;
+cl::OptionCategory DebuginfodCategory("llvm-debuginfod Options");
+
+static cl::list<std::string> ScanPaths(cl::Positional,
+                                       cl::desc("<Directories to scan>"),
+                                       cl::cat(DebuginfodCategory));
+
+static cl::opt<unsigned>
+    Port("p", cl::init(0),
+         cl::desc("Port to listen on. Set to 0 to bind to any available port."),
+         cl::cat(DebuginfodCategory));
+
+static cl::opt<std::string>
+    HostInterface("i", cl::init("0.0.0.0"),
+                  cl::desc("Host interface to bind to."),
+                  cl::cat(DebuginfodCategory));
+
+static cl::opt<int>
+    ScanInterval("t", cl::init(300),
+                 cl::desc("Number of seconds to wait between subsequent "
+                          "automated scans of the filesystem."),
+                 cl::cat(DebuginfodCategory));
+
+static cl::opt<double> MinInterval(
+    "m", cl::init(10),
+    cl::desc(
+        "Minimum number of seconds to wait before an on-demand update can be "
+        "triggered by a request for a buildid which is not in the collection."),
+    cl::cat(DebuginfodCategory));
+
+static cl::opt<size_t>
+    MaxConcurrency("c", cl::init(0),
+                   cl::desc("Maximum number of files to scan concurrently. If "
+                            "0, use the hardware concurrency."),
+                   cl::cat(DebuginfodCategory));
+
+static cl::opt<bool> VerboseLogging("v", cl::init(false),
+                                    cl::desc("Enable verbose logging."),
+                                    cl::cat(DebuginfodCategory));
 
 ExitOnError ExitOnErr;
 
-template <typename T>
-static void parseIntArg(const opt::InputArgList &Args, int ID, T &Value,
-                        T Default) {
-  if (const opt::Arg *A = Args.getLastArg(ID)) {
-    StringRef V(A->getValue());
-    if (!llvm::to_integer(V, Value, 0)) {
-      errs() << A->getSpelling() + ": expected an integer, but got '" + V + "'";
-      exit(1);
-    }
-  } else {
-    Value = Default;
-  }
-}
-
-static void parseArgs(int argc, char **argv) {
-  DebuginfodOptTable Tbl;
-  llvm::StringRef ToolName = argv[0];
-  llvm::BumpPtrAllocator A;
-  llvm::StringSaver Saver{A};
-  opt::InputArgList Args =
-      Tbl.parseArgs(argc, argv, OPT_UNKNOWN, Saver, [&](StringRef Msg) {
-        llvm::errs() << Msg << '\n';
-        std::exit(1);
-      });
-
-  if (Args.hasArg(OPT_help)) {
-    Tbl.printHelp(llvm::outs(),
-                  "llvm-debuginfod [options] <Directories to scan>",
-                  ToolName.str().c_str());
-    std::exit(0);
-  }
-
-  VerboseLogging = Args.hasArg(OPT_verbose_logging);
-  ScanPaths = Args.getAllArgValues(OPT_INPUT);
-
-  parseIntArg(Args, OPT_port, Port, 0u);
-  parseIntArg(Args, OPT_scan_interval, ScanInterval, 300);
-  parseIntArg(Args, OPT_max_concurrency, MaxConcurrency, 0ul);
-
-  if (const opt::Arg *A = Args.getLastArg(OPT_min_interval)) {
-    StringRef V(A->getValue());
-    if (!llvm::to_float(V, MinInterval)) {
-      errs() << A->getSpelling() + ": expected a number, but got '" + V + "'";
-      exit(1);
-    }
-  } else {
-    MinInterval = 10.0;
-  }
-
-  HostInterface = Args.getLastArgValue(OPT_host_interface, "0.0.0.0");
-}
-
 int main(int argc, char **argv) {
   InitLLVM X(argc, argv);
   HTTPClient::initialize();
-  parseArgs(argc, argv);
+  cl::HideUnrelatedOptions({&DebuginfodCategory});
+  cl::ParseCommandLineOptions(argc, argv);
 
   SmallVector<StringRef, 1> Paths;
   for (const std::string &Path : ScanPaths)

diff  --git a/llvm/utils/gn/secondary/llvm/tools/llvm-debuginfod/BUILD.gn b/llvm/utils/gn/secondary/llvm/tools/llvm-debuginfod/BUILD.gn
index 236124f351bf7..c8ee330a867cb 100644
--- a/llvm/utils/gn/secondary/llvm/tools/llvm-debuginfod/BUILD.gn
+++ b/llvm/utils/gn/secondary/llvm/tools/llvm-debuginfod/BUILD.gn
@@ -1,12 +1,6 @@
 import("//llvm/tools/binutils_symlinks.gni")
-import("//llvm/utils/TableGen/tablegen.gni")
 import("//llvm/utils/gn/build/symlink_or_copy.gni")
 
-tablegen("Opts") {
-  visibility = [ ":llvm-debuginfod" ]
-  args = [ "-gen-opt-parser-defs" ]
-}
-
 if (llvm_install_binutils_symlinks) {
   symlink_or_copy("debuginfod") {
     deps = [ ":llvm-debuginfod" ]
@@ -25,9 +19,7 @@ group("symlinks") {
 
 executable("llvm-debuginfod") {
   deps = [
-    ":Opts",
     "//llvm/lib/Debuginfod",
-    "//llvm/lib/Option",
     "//llvm/lib/Support",
   ]
   sources = [ "llvm-debuginfod.cpp" ]


        


More information about the llvm-commits mailing list