1*82d56013Sjoerginclude "llvm/Option/OptParser.td" 2*82d56013Sjoerg 3*82d56013Sjoergmulticlass Long<string name, string help> { 4*82d56013Sjoerg def NAME: Separate<["--"], name>; 5*82d56013Sjoerg def NAME # _eq: Joined<["--"], name # "=">, Alias<!cast<Separate>(NAME)>, 6*82d56013Sjoerg HelpText<help>; 7*82d56013Sjoerg} 8*82d56013Sjoerg 9*82d56013Sjoergmulticlass LongAlias<string name, Option orig> { 10*82d56013Sjoerg def NAME: Separate<["--"], name>, Alias<orig>; 11*82d56013Sjoerg def NAME # _eq: Joined<["--"], name # "=">, Alias<orig>; 12*82d56013Sjoerg} 13*82d56013Sjoerg 14*82d56013Sjoergmulticlass LongShort<string short, string long, string help> { 15*82d56013Sjoerg def NAME: Separate<["--"], long>; 16*82d56013Sjoerg def NAME # _eq: Joined<["--"], long # "=">, Alias<!cast<Separate>(NAME)>, 17*82d56013Sjoerg HelpText<help>; 18*82d56013Sjoerg def NAME # _short: JoinedOrSeparate<["-"], short>, Alias<!cast<Separate>(NAME)>; 19*82d56013Sjoerg} 20*82d56013Sjoerg 21*82d56013Sjoergmulticlass F<string short, string long, string help> { 22*82d56013Sjoerg def NAME: Flag<["-"], short>; 23*82d56013Sjoerg def NAME # _long: Flag<["--"], long>, Alias<!cast<Flag>(NAME)>, 24*82d56013Sjoerg HelpText<help>; 25*82d56013Sjoerg} 26*82d56013Sjoerg 27*82d56013Sjoergdefm input : LongShort<"i", "input", "Input file">; 28*82d56013Sjoerg 29*82d56013Sjoergdefm output : LongShort<"o", "output", "Output file">; 30*82d56013Sjoerg 31*82d56013Sjoergdefm input_format : LongShort<"J", "input-format", "Input format">; 32*82d56013Sjoerg 33*82d56013Sjoergdefm output_format : LongShort<"O", "output-format", "Output format">; 34*82d56013Sjoerg 35*82d56013Sjoergdefm preprocessor : Long<"preprocessor", "Custom preprocessor command">; 36*82d56013Sjoergdefm preprocessor_arg : Long<"preprocessor-arg", "Preprocessor command argument">; 37*82d56013Sjoerg 38*82d56013Sjoergdefm target : LongShort<"F", "target", "Target BFD format name">; 39*82d56013Sjoerg 40*82d56013Sjoergdefm include_dir : LongShort<"I", "include-dir", "Include directory">; 41*82d56013Sjoergdefm include_alias : LongAlias<"include", include_dir>; 42*82d56013Sjoerg 43*82d56013Sjoergdefm define : LongShort<"D", "define", "Define to pass to the preprocessor">; 44*82d56013Sjoerg 45*82d56013Sjoergdefm undef : LongShort<"U", "undefine", "Undefine to pass to the preprocessor">; 46*82d56013Sjoerg 47*82d56013Sjoergdefm codepage : LongShort<"c", "codepage", "Default codepage to use">; 48*82d56013Sjoerg 49*82d56013Sjoergdefm language : LongShort<"l", "language", "Default language to use (0x0-0xffff)">; 50*82d56013Sjoerg 51*82d56013Sjoergdefm verbose : F<"v", "verbose", "Enable verbose output">; 52*82d56013Sjoergdefm version : F<"V", "version", "Display version">; 53*82d56013Sjoerg 54*82d56013Sjoergdefm help : F<"h", "help", "Display this message and exit">; 55*82d56013Sjoerg 56*82d56013Sjoerg// Print (but do not run) the commands to run for preprocessing 57*82d56013Sjoergdef _HASH_HASH_HASH : Flag<["-"], "###">; 58*82d56013Sjoerg 59*82d56013Sjoergdef no_preprocess : Flag<["--"], "no-preprocess">; 60*82d56013Sjoerg 61*82d56013Sjoerg// Unimplemented options for compatibility 62*82d56013Sjoergdef use_temp_file: Flag<["--"], "use-temp-file">; 63