1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | #include "clang/Driver/Options.h" |
10 | #include "llvm/ADT/STLExtras.h" |
11 | #include "llvm/Option/OptTable.h" |
12 | #include "llvm/Option/Option.h" |
13 | #include <cassert> |
14 | |
15 | using namespace clang::driver; |
16 | using namespace clang::driver::options; |
17 | using namespace llvm::opt; |
18 | |
19 | #define PREFIX(NAME, VALUE) static const char *const NAME[] = VALUE; |
20 | #include "clang/Driver/Options.inc" |
21 | #undef PREFIX |
22 | |
23 | static const OptTable::Info InfoTable[] = { |
24 | #define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \ |
25 | HELPTEXT, METAVAR, VALUES) \ |
26 | {PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, \ |
27 | PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS, ALIASARGS, VALUES}, |
28 | #include "clang/Driver/Options.inc" |
29 | #undef OPTION |
30 | }; |
31 | |
32 | namespace { |
33 | |
34 | class DriverOptTable : public OptTable { |
35 | public: |
36 | DriverOptTable() |
37 | : OptTable(InfoTable) {} |
38 | }; |
39 | |
40 | } |
41 | |
42 | std::unique_ptr<OptTable> clang::driver::createDriverOptTable() { |
43 | auto Result = llvm::make_unique<DriverOptTable>(); |
44 | |
45 | |
46 | |
47 | OptTable &Opt = *Result; |
48 | #define OPTTABLE_ARG_INIT |
49 | #include "clang/Driver/Options.inc" |
50 | #undef OPTTABLE_ARG_INIT |
51 | return std::move(Result); |
52 | } |
53 | |