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