DriverOptions.cpp revision c635710bcbb9598acd5a14647ba7ca28bee89a68
13fdcc6fb12d7cf38d2a3111736f80f0dd55447b4Nick Lewycky//===--- DriverOptions.cpp - Driver Options Table -------------------------===//
227e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar//
327e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar//                     The LLVM Compiler Infrastructure
427e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar//
527e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar// This file is distributed under the University of Illinois Open Source
627e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar// License. See LICENSE.TXT for details.
727e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar//
827e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar//===----------------------------------------------------------------------===//
927e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
1027e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar#include "clang/Driver/Options.h"
1127e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar#include "clang/Driver/OptTable.h"
1227e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar#include "clang/Driver/Option.h"
1327e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
1427e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarusing namespace clang::driver;
1527e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarusing namespace clang::driver::options;
1627e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
17c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer#define PREFIX(NAME, VALUE) const char *const NAME[] = VALUE;
18c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \
19c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer               HELPTEXT, METAVAR)
20c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer#include "clang/Driver/Options.inc"
21c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer#undef OPTION
22c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer#undef PREFIX
23c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer
2468f7a2426227476bcfa33ada70b708c82419dfdcNuno Lopesstatic const OptTable::Info InfoTable[] = {
25c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer#define PREFIX(NAME, VALUE)
26c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, FLAGS, PARAM, \
2727e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar               HELPTEXT, METAVAR)   \
28c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer  { PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, PARAM, \
29c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer    FLAGS, OPT_##GROUP, OPT_##ALIAS },
3064bdce3f02091b0a4e1528d690495970c1249803Daniel Dunbar#include "clang/Driver/Options.inc"
3127e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar};
3227e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
3327e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarnamespace {
3427e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
3527e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarclass DriverOptTable : public OptTable {
3627e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarpublic:
3727e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar  DriverOptTable()
3827e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar    : OptTable(InfoTable, sizeof(InfoTable) / sizeof(InfoTable[0])) {}
3927e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar};
4027e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
4127e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar}
4227e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
4327e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel DunbarOptTable *clang::driver::createDriverOptTable() {
4427e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar  return new DriverOptTable();
4527e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar}
46