xref: /aosp_15_r20/external/clang/lib/Driver/DriverOptions.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li //===--- DriverOptions.cpp - Driver Options Table -------------------------===//
2*67e74705SXin Li //
3*67e74705SXin Li //                     The LLVM Compiler Infrastructure
4*67e74705SXin Li //
5*67e74705SXin Li // This file is distributed under the University of Illinois Open Source
6*67e74705SXin Li // License. See LICENSE.TXT for details.
7*67e74705SXin Li //
8*67e74705SXin Li //===----------------------------------------------------------------------===//
9*67e74705SXin Li 
10*67e74705SXin Li #include "clang/Driver/Options.h"
11*67e74705SXin Li #include "llvm/ADT/STLExtras.h"
12*67e74705SXin Li #include "llvm/Option/OptTable.h"
13*67e74705SXin Li #include "llvm/Option/Option.h"
14*67e74705SXin Li 
15*67e74705SXin Li using namespace clang::driver;
16*67e74705SXin Li using namespace clang::driver::options;
17*67e74705SXin Li using namespace llvm::opt;
18*67e74705SXin Li 
19*67e74705SXin Li #define PREFIX(NAME, VALUE) static const char *const NAME[] = VALUE;
20*67e74705SXin Li #include "clang/Driver/Options.inc"
21*67e74705SXin Li #undef PREFIX
22*67e74705SXin Li 
23*67e74705SXin Li static const OptTable::Info InfoTable[] = {
24*67e74705SXin Li #define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
25*67e74705SXin Li                HELPTEXT, METAVAR)   \
26*67e74705SXin Li   { PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, PARAM, \
27*67e74705SXin Li     FLAGS, OPT_##GROUP, OPT_##ALIAS, ALIASARGS },
28*67e74705SXin Li #include "clang/Driver/Options.inc"
29*67e74705SXin Li #undef OPTION
30*67e74705SXin Li };
31*67e74705SXin Li 
32*67e74705SXin Li namespace {
33*67e74705SXin Li 
34*67e74705SXin Li class DriverOptTable : public OptTable {
35*67e74705SXin Li public:
DriverOptTable()36*67e74705SXin Li   DriverOptTable()
37*67e74705SXin Li     : OptTable(InfoTable) {}
38*67e74705SXin Li };
39*67e74705SXin Li 
40*67e74705SXin Li }
41*67e74705SXin Li 
createDriverOptTable()42*67e74705SXin Li OptTable *clang::driver::createDriverOptTable() {
43*67e74705SXin Li   return new DriverOptTable();
44*67e74705SXin Li }
45