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