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"
11b960232518a1cd79c5f64ab5ef54c88e34660191Craig Topper#include "llvm/ADT/STLExtras.h"
12b1e25a1bc03292dc538d336573e0be1490223171Reid Kleckner#include "llvm/Option/OptTable.h"
13b1e25a1bc03292dc538d336573e0be1490223171Reid Kleckner#include "llvm/Option/Option.h"
1427e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
1527e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarusing namespace clang::driver;
1627e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarusing namespace clang::driver::options;
17b1e25a1bc03292dc538d336573e0be1490223171Reid Klecknerusing namespace llvm::opt;
1827e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
19b17a2c119877b47cb3fb68c76a91dfe4d8cc6199Hans Wennborg#define PREFIX(NAME, VALUE) static const char *const NAME[] = VALUE;
20c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer#include "clang/Driver/Options.inc"
21c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer#undef PREFIX
22c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer
2368f7a2426227476bcfa33ada70b708c82419dfdcNuno Lopesstatic const OptTable::Info InfoTable[] = {
24438292860a49f6998dff4db0b9ff04bcc0d5ae33Hans Wennborg#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
2527e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar               HELPTEXT, METAVAR)   \
26c635710bcbb9598acd5a14647ba7ca28bee89a68Michael J. Spencer  { PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, PARAM, \
27438292860a49f6998dff4db0b9ff04bcc0d5ae33Hans Wennborg    FLAGS, OPT_##GROUP, OPT_##ALIAS, ALIASARGS },
2864bdce3f02091b0a4e1528d690495970c1249803Daniel Dunbar#include "clang/Driver/Options.inc"
29b17a2c119877b47cb3fb68c76a91dfe4d8cc6199Hans Wennborg#undef OPTION
3027e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar};
3127e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
3227e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarnamespace {
3327e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
3427e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarclass DriverOptTable : public OptTable {
3527e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbarpublic:
3627e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar  DriverOptTable()
37b960232518a1cd79c5f64ab5ef54c88e34660191Craig Topper    : OptTable(InfoTable, llvm::array_lengthof(InfoTable)) {}
3827e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar};
3927e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
4027e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar}
4127e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar
4227e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel DunbarOptTable *clang::driver::createDriverOptTable() {
4327e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar  return new DriverOptTable();
4427e738d0d3f781672a5999d2a9e2827b00a97d0cDaniel Dunbar}
45