diff options
author | Jan Svoboda <jan_svoboda@apple.com> | 2023-08-04 11:19:09 -0700 |
---|---|---|
committer | Jan Svoboda <jan_svoboda@apple.com> | 2023-08-04 13:57:13 -0700 |
commit | 3f092f37b7362447cbb13f5502dae4bdd5762afd (patch) | |
tree | 9dc8c612f223fddbb3b4e029e86ae7a2a1cbd1f0 /llvm/tools/llvm-objcopy | |
parent | e6b2e1b88248c1f5b34fde4e51aaeb99f849b580 (diff) | |
download | llvm-3f092f37b7362447cbb13f5502dae4bdd5762afd.zip llvm-3f092f37b7362447cbb13f5502dae4bdd5762afd.tar.gz llvm-3f092f37b7362447cbb13f5502dae4bdd5762afd.tar.bz2 |
[llvm] Extract common `OptTable` bits into macros
All command-line tools using `llvm::opt` create an enum of option IDs and a table of `OptTable::Info` object. Most of the tools use the same ID (`OPT_##ID`), kind (`Option::KIND##Class`), group ID (`OPT_##GROUP`) and alias ID (`OPT_##ALIAS`). This patch extracts that common code into canonical macros. This results in fewer changes when tweaking the `OPTION` macros emitted by the TableGen backend.
Reviewed By: MaskRay
Differential Revision: https://reviews.llvm.org/D157028
Diffstat (limited to 'llvm/tools/llvm-objcopy')
-rw-r--r-- | llvm/tools/llvm-objcopy/ObjcopyOptions.cpp | 65 |
1 files changed, 13 insertions, 52 deletions
diff --git a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp index 2e0c3ca..02b7790 100644 --- a/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp +++ b/llvm/tools/llvm-objcopy/ObjcopyOptions.cpp @@ -30,9 +30,7 @@ using namespace llvm::objcopy; namespace { enum ObjcopyID { OBJCOPY_INVALID = 0, // This is not an option ID. -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - OBJCOPY_##ID, +#define OPTION(...) LLVM_MAKE_OPT_ID_WITH_ID_PREFIX(OBJCOPY_, __VA_ARGS__), #include "ObjcopyOpts.inc" #undef OPTION }; @@ -46,12 +44,8 @@ namespace objcopy_opt { #undef PREFIX static constexpr opt::OptTable::Info ObjcopyInfoTable[] = { -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - {PREFIX, NAME, HELPTEXT, \ - METAVAR, OBJCOPY_##ID, opt::Option::KIND##Class, \ - PARAM, FLAGS, OBJCOPY_##GROUP, \ - OBJCOPY_##ALIAS, ALIASARGS, VALUES}, +#define OPTION(...) \ + LLVM_CONSTRUCT_OPT_INFO_WITH_ID_PREFIX(OBJCOPY_, __VA_ARGS__), #include "ObjcopyOpts.inc" #undef OPTION }; @@ -66,9 +60,8 @@ public: enum InstallNameToolID { INSTALL_NAME_TOOL_INVALID = 0, // This is not an option ID. -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - INSTALL_NAME_TOOL_##ID, +#define OPTION(...) \ + LLVM_MAKE_OPT_ID_WITH_ID_PREFIX(INSTALL_NAME_TOOL_, __VA_ARGS__), #include "InstallNameToolOpts.inc" #undef OPTION }; @@ -83,20 +76,8 @@ namespace install_name_tool { #undef PREFIX static constexpr opt::OptTable::Info InstallNameToolInfoTable[] = { -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - {PREFIX, \ - NAME, \ - HELPTEXT, \ - METAVAR, \ - INSTALL_NAME_TOOL_##ID, \ - opt::Option::KIND##Class, \ - PARAM, \ - FLAGS, \ - INSTALL_NAME_TOOL_##GROUP, \ - INSTALL_NAME_TOOL_##ALIAS, \ - ALIASARGS, \ - VALUES}, +#define OPTION(...) \ + LLVM_CONSTRUCT_OPT_INFO_WITH_ID_PREFIX(INSTALL_NAME_TOOL_, __VA_ARGS__), #include "InstallNameToolOpts.inc" #undef OPTION }; @@ -110,9 +91,8 @@ public: enum BitcodeStripID { BITCODE_STRIP_INVALID = 0, // This is not an option ID. -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - BITCODE_STRIP_##ID, +#define OPTION(...) \ + LLVM_MAKE_OPT_ID_WITH_ID_PREFIX(BITCODE_STRIP_, __VA_ARGS__), #include "BitcodeStripOpts.inc" #undef OPTION }; @@ -127,20 +107,8 @@ namespace bitcode_strip { #undef PREFIX static constexpr opt::OptTable::Info BitcodeStripInfoTable[] = { -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - {PREFIX, \ - NAME, \ - HELPTEXT, \ - METAVAR, \ - BITCODE_STRIP_##ID, \ - opt::Option::KIND##Class, \ - PARAM, \ - FLAGS, \ - BITCODE_STRIP_##GROUP, \ - BITCODE_STRIP_##ALIAS, \ - ALIASARGS, \ - VALUES}, +#define OPTION(...) \ + LLVM_CONSTRUCT_OPT_INFO_WITH_ID_PREFIX(BITCODE_STRIP_, __VA_ARGS__), #include "BitcodeStripOpts.inc" #undef OPTION }; @@ -154,9 +122,7 @@ public: enum StripID { STRIP_INVALID = 0, // This is not an option ID. -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - STRIP_##ID, +#define OPTION(...) LLVM_MAKE_OPT_ID_WITH_ID_PREFIX(STRIP_, __VA_ARGS__), #include "StripOpts.inc" #undef OPTION }; @@ -170,12 +136,7 @@ namespace strip { #undef PREFIX static constexpr opt::OptTable::Info StripInfoTable[] = { -#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ - HELPTEXT, METAVAR, VALUES) \ - {PREFIX, NAME, HELPTEXT, \ - METAVAR, STRIP_##ID, opt::Option::KIND##Class, \ - PARAM, FLAGS, STRIP_##GROUP, \ - STRIP_##ALIAS, ALIASARGS, VALUES}, +#define OPTION(...) LLVM_CONSTRUCT_OPT_INFO_WITH_ID_PREFIX(STRIP_, __VA_ARGS__), #include "StripOpts.inc" #undef OPTION }; |