-#define CL_C_ONLY (1 << 0) /* Only C. */
-#define CL_OBJC_ONLY (1 << 1) /* Only ObjC. */
-#define CL_CXX_ONLY (1 << 2) /* Only C++. */
-#define CL_OBJCXX_ONLY (1 << 3) /* Only ObjC++. */
-#define CL_JOINED (1 << 4) /* If takes joined argument. */
-#define CL_SEPARATE (1 << 5) /* If takes a separate argument. */
-
-#define CL_ARG (CL_JOINED | CL_SEPARATE)
-#define CL_C (CL_C_ONLY | CL_OBJC_ONLY)
-#define CL_OBJC (CL_OBJC_ONLY | CL_OBJCXX_ONLY)
-#define CL_CXX (CL_CXX_ONLY | CL_OBJCXX_ONLY)
-#define CL_ALL (CL_C | CL_CXX)
-
-/* This is the list of all command line options, with the leading "-"
- removed. It must be sorted in ASCII collating order. All options
- beginning with "f" or "W" are implicitly assumed to take a "no-"
- form; this form should not be listed. The variable "on" is true if
- the positive form is given, otherwise it is false. If you don't
- want to allow a "no-" form, your handler should reject "on" being
- false by returning zero. See, for example, the handling of
- -ftabstop=.
-
- If the user gives an option to a front end that doesn't support it,
- an error is output, mentioning which front ends the option is valid
- for. If you don't want this, you must accept it for all front
- ends, and test for the front end in the option handler. See, for
- example, the handling of -Wno-strict-prototypes for C++.
-
- If you request an argument with CL_JOINED, CL_SEPARATE or their
- combination CL_ARG, it is stored in the variable "arg", which is
- guaranteed to be non-NULL and to not be an empty string. It points
- to the argument either within the argv[] vector or within one of
- that vector's strings, and so the text is permanent and copies need
- not be made. Be sure to add an error message in missing_arg() if
- the default is not appropriate. */
-
-#define COMMAND_LINE_OPTIONS \
- OPT("-help", CL_ALL, OPT__help) \
- OPT("-output-pch=", CL_ALL | CL_ARG, OPT__output_pch) \
- OPT("C", CL_ALL, OPT_C) \
- OPT("CC", CL_ALL, OPT_CC) \
- OPT("E", CL_ALL, OPT_E) \
- OPT("H", CL_ALL, OPT_H) \
- OPT("M", CL_ALL, OPT_M) \
- OPT("MD", CL_ALL | CL_SEPARATE, OPT_MD) \
- OPT("MF", CL_ALL | CL_ARG, OPT_MF) \
- OPT("MG", CL_ALL, OPT_MG) \
- OPT("MM", CL_ALL, OPT_MM) \
- OPT("MMD", CL_ALL | CL_SEPARATE, OPT_MMD) \
- OPT("MP", CL_ALL, OPT_MP) \
- OPT("MQ", CL_ALL | CL_ARG, OPT_MQ) \
- OPT("MT", CL_ALL | CL_ARG, OPT_MT) \
- OPT("P", CL_ALL, OPT_P) \
- OPT("Wabi", CL_CXX, OPT_Wabi) \
- OPT("Wall", CL_ALL, OPT_Wall) \
- OPT("Wbad-function-cast", CL_C, OPT_Wbad_function_cast) \
- OPT("Wcast-qual", CL_ALL, OPT_Wcast_qual) \
- OPT("Wchar-subscripts", CL_ALL, OPT_Wchar_subscripts) \
- OPT("Wcomment", CL_ALL, OPT_Wcomment) \
- OPT("Wcomments", CL_ALL, OPT_Wcomments) \
- OPT("Wconversion", CL_ALL, OPT_Wconversion) \
- OPT("Wctor-dtor-privacy", CL_CXX, OPT_Wctor_dtor_privacy) \
- OPT("Wdeprecated", CL_CXX, OPT_Wdeprecated) \
- OPT("Wdiv-by-zero", CL_C, OPT_Wdiv_by_zero) \
- OPT("Weffc++", CL_CXX, OPT_Weffcxx) \
- OPT("Wendif-labels", CL_ALL, OPT_Wendif_labels) \
- OPT("Werror", CL_ALL, OPT_Werror) \
- OPT("Werror-implicit-function-declaration", \
- CL_C, OPT_Werror_implicit_function_decl) \
- OPT("Wfloat-equal", CL_ALL, OPT_Wfloat_equal) \
- OPT("Wformat", CL_ALL, OPT_Wformat) \
- OPT("Wformat-extra-args", CL_ALL, OPT_Wformat_extra_args) \
- OPT("Wformat-nonliteral", CL_ALL, OPT_Wformat_nonliteral) \
- OPT("Wformat-security", CL_ALL, OPT_Wformat_security) \
- OPT("Wformat-y2k", CL_ALL, OPT_Wformat_y2k) \
- OPT("Wformat-zero-length", CL_C, OPT_Wformat_zero_length) \
- OPT("Wformat=", CL_ALL | CL_JOINED, OPT_Wformat_eq) \
- OPT("Wimplicit", CL_ALL, OPT_Wimplicit) \
- OPT("Wimplicit-function-declaration", CL_C, OPT_Wimplicit_function_decl) \
- OPT("Wimplicit-int", CL_C, OPT_Wimplicit_int) \
- OPT("Wimport", CL_ALL, OPT_Wimport) \
- OPT("Winvalid-pch", CL_ALL, OPT_Winvalid_pch) \
- OPT("Wlong-long", CL_ALL, OPT_Wlong_long) \
- OPT("Wmain", CL_C, OPT_Wmain) \
- OPT("Wmissing-braces", CL_ALL, OPT_Wmissing_braces) \
- OPT("Wmissing-declarations", CL_C, OPT_Wmissing_declarations) \
- OPT("Wmissing-format-attribute",CL_ALL, OPT_Wmissing_format_attribute) \
- OPT("Wmissing-prototypes", CL_ALL, OPT_Wmissing_prototypes) \
- OPT("Wmultichar", CL_ALL, OPT_Wmultichar) \
- OPT("Wnested-externs", CL_C, OPT_Wnested_externs) \
- OPT("Wnon-template-friend", CL_CXX, OPT_Wnon_template_friend) \
- OPT("Wnon-virtual-dtor", CL_CXX, OPT_Wnon_virtual_dtor) \
- OPT("Wnonnull", CL_C, OPT_Wnonnull) \
- OPT("Wold-style-cast", CL_CXX, OPT_Wold_style_cast) \
- OPT("Woverloaded-virtual", CL_CXX, OPT_Woverloaded_virtual) \
- OPT("Wparentheses", CL_ALL, OPT_Wparentheses) \
- OPT("Wpmf-conversions", CL_CXX, OPT_Wpmf_conversions) \
- OPT("Wpointer-arith", CL_ALL, OPT_Wpointer_arith) \
- OPT("Wprotocol", CL_OBJC, OPT_Wprotocol) \
- OPT("Wredundant-decls", CL_ALL, OPT_Wredundant_decls) \
- OPT("Wreorder", CL_CXX, OPT_Wreorder) \
- OPT("Wreturn-type", CL_ALL, OPT_Wreturn_type) \
- OPT("Wselector", CL_OBJC, OPT_Wselector) \
- OPT("Wsequence-point", CL_C, OPT_Wsequence_point) \
- OPT("Wsign-compare", CL_ALL, OPT_Wsign_compare) \
- OPT("Wsign-promo", CL_CXX, OPT_Wsign_promo) \
- OPT("Wstrict-prototypes", CL_ALL, OPT_Wstrict_prototypes) \
- OPT("Wsynth", CL_CXX, OPT_Wsynth) \
- OPT("Wsystem-headers", CL_ALL, OPT_Wsystem_headers) \
- OPT("Wtraditional", CL_C, OPT_Wtraditional) \
- OPT("Wtrigraphs", CL_ALL, OPT_Wtrigraphs) \
- OPT("Wundeclared-selector", CL_OBJC, OPT_Wundeclared_selector) \
- OPT("Wundef", CL_ALL, OPT_Wundef) \
- OPT("Wunknown-pragmas", CL_ALL, OPT_Wunknown_pragmas) \
- OPT("Wunused-macros", CL_ALL, OPT_Wunused_macros) \
- OPT("Wwrite-strings", CL_ALL, OPT_Wwrite_strings) \
- OPT("ansi", CL_ALL, OPT_ansi) \
- OPT("d", CL_ALL | CL_JOINED, OPT_d) \
- OPT("fabi-version=", CL_CXX | CL_JOINED, OPT_fabi_version) \
- OPT("faccess-control", CL_CXX, OPT_faccess_control) \
- OPT("fall-virtual", CL_CXX, OPT_fall_virtual) \
- OPT("falt-external-templates",CL_CXX, OPT_falt_external_templates) \
- OPT("fasm", CL_ALL, OPT_fasm) \
- OPT("fbuiltin", CL_ALL, OPT_fbuiltin) \
- OPT("fbuiltin-", CL_ALL | CL_JOINED, OPT_fbuiltin_) \
- OPT("fcheck-new", CL_CXX, OPT_fcheck_new) \
- OPT("fcond-mismatch", CL_ALL, OPT_fcond_mismatch) \
- OPT("fconserve-space", CL_CXX, OPT_fconserve_space) \
- OPT("fconst-strings", CL_CXX, OPT_fconst_strings) \
- OPT("fconstant-string-class=", CL_OBJC | CL_JOINED, \
- OPT_fconstant_string_class) \
- OPT("fdefault-inline", CL_CXX, OPT_fdefault_inline) \
- OPT("fdollars-in-identifiers",CL_ALL, OPT_fdollars_in_identifiers) \
- OPT("fdump-", CL_ALL | CL_JOINED, OPT_fdump) \
- OPT("felide-constructors", CL_CXX, OPT_felide_constructors) \
- OPT("fenforce-eh-specs", CL_CXX, OPT_fenforce_eh_specs) \
- OPT("fenum-int-equiv", CL_CXX, OPT_fenum_int_equiv) \
- OPT("fexternal-templates", CL_CXX, OPT_fexternal_templates) \
- OPT("ffixed-form", CL_C, OPT_ffixed_form) \
- OPT("ffixed-line-length-", CL_C | CL_JOINED, OPT_ffixed_line_length) \
- OPT("ffor-scope", CL_CXX, OPT_ffor_scope) \
- OPT("ffreestanding", CL_C, OPT_ffreestanding) \
- OPT("fgnu-keywords", CL_CXX, OPT_fgnu_keywords) \
- OPT("fgnu-runtime", CL_OBJC, OPT_fgnu_runtime) \
- OPT("fguiding-decls", CL_CXX, OPT_fguiding_decls) \
- OPT("fhandle-exceptions", CL_CXX, OPT_fhandle_exceptions) \
- OPT("fhonor-std", CL_CXX, OPT_fhonor_std) \
- OPT("fhosted", CL_C, OPT_fhosted) \
- OPT("fhuge-objects", CL_CXX, OPT_fhuge_objects) \
- OPT("fimplement-inlines", CL_CXX, OPT_fimplement_inlines) \
- OPT("fimplicit-inline-templates", CL_CXX, OPT_fimplicit_inline_templates) \
- OPT("fimplicit-templates", CL_CXX, OPT_fimplicit_templates) \
- OPT("flabels-ok", CL_CXX, OPT_flabels_ok) \
- OPT("fms-extensions", CL_ALL, OPT_fms_extensions) \
- OPT("fname-mangling-version-",CL_CXX | CL_JOINED, OPT_fname_mangling) \
- OPT("fnew-abi", CL_CXX, OPT_fnew_abi) \
- OPT("fnext-runtime", CL_OBJC, OPT_fnext_runtime) \
- OPT("fnonansi-builtins", CL_CXX, OPT_fnonansi_builtins) \
- OPT("fnonnull-objects", CL_CXX, OPT_fnonnull_objects) \
- OPT("foperator-names", CL_CXX, OPT_foperator_names) \
- OPT("foptional-diags", CL_CXX, OPT_foptional_diags) \
- OPT("fpch-deps", CL_ALL, OPT_fpch_deps) \
- OPT("fpermissive", CL_CXX, OPT_fpermissive) \
- OPT("fpreprocessed", CL_ALL, OPT_fpreprocessed) \
- OPT("frepo", CL_CXX, OPT_frepo) \
- OPT("frtti", CL_CXX, OPT_frtti) \
- OPT("fshort-double", CL_ALL, OPT_fshort_double) \
- OPT("fshort-enums", CL_ALL, OPT_fshort_enums) \
- OPT("fshort-wchar", CL_ALL, OPT_fshort_wchar) \
- OPT("fshow-column", CL_ALL, OPT_fshow_column) \
- OPT("fsigned-bitfields", CL_ALL, OPT_fsigned_bitfields) \
- OPT("fsigned-char", CL_ALL, OPT_fsigned_char) \
- OPT("fsquangle", CL_CXX, OPT_fsquangle) \
- OPT("fstats", CL_CXX, OPT_fstats) \
- OPT("fstrict-prototype", CL_CXX, OPT_fstrict_prototype) \
- OPT("ftabstop=", CL_ALL | CL_JOINED, OPT_ftabstop) \
- OPT("ftemplate-depth-", CL_CXX | CL_JOINED, OPT_ftemplate_depth) \
- OPT("fthis-is-variable", CL_CXX, OPT_fthis_is_variable) \
- OPT("funsigned-bitfields", CL_ALL, OPT_funsigned_bitfields) \
- OPT("funsigned-char", CL_ALL, OPT_funsigned_char) \
- OPT("fuse-cxa-atexit", CL_CXX, OPT_fuse_cxa_atexit) \
- OPT("fvtable-gc", CL_CXX, OPT_fvtable_gc) \
- OPT("fvtable-thunks", CL_CXX, OPT_fvtable_thunks) \
- OPT("fweak", CL_CXX, OPT_fweak) \
- OPT("fxref", CL_CXX, OPT_fxref) \
- OPT("gen-decls", CL_OBJC, OPT_gen_decls) \
- OPT("lang-asm", CL_C_ONLY, OPT_lang_asm) \
- OPT("lang-objc", CL_ALL, OPT_lang_objc) \
- OPT("nostdinc", CL_ALL, OPT_nostdinc) \
- OPT("nostdinc++", CL_ALL, OPT_nostdincplusplus) \
- OPT("o", CL_ALL | CL_ARG, OPT_o) \
- OPT("pedantic", CL_ALL, OPT_pedantic) \
- OPT("pedantic-errors", CL_ALL, OPT_pedantic_errors) \
- OPT("print-objc-runtime-info", CL_OBJC, OPT_print_objc_runtime_info) \
- OPT("remap", CL_ALL, OPT_remap) \
- OPT("std=c++98", CL_CXX, OPT_std_cplusplus98) \
- OPT("std=c89", CL_C, OPT_std_c89) \
- OPT("std=c99", CL_C, OPT_std_c99) \
- OPT("std=c9x", CL_C, OPT_std_c9x) \
- OPT("std=gnu++98", CL_CXX, OPT_std_gnuplusplus98) \
- OPT("std=gnu89", CL_C, OPT_std_gnu89) \
- OPT("std=gnu99", CL_C, OPT_std_gnu99) \
- OPT("std=gnu9x", CL_C, OPT_std_gnu9x) \
- OPT("std=iso9899:1990", CL_C, OPT_std_iso9899_1990) \
- OPT("std=iso9899:199409", CL_C, OPT_std_iso9899_199409) \
- OPT("std=iso9899:1999", CL_C, OPT_std_iso9899_1999) \
- OPT("std=iso9899:199x", CL_C, OPT_std_iso9899_199x) \
- OPT("traditional-cpp", CL_ALL, OPT_traditional_cpp) \
- OPT("trigraphs", CL_ALL, OPT_trigraphs) \
- OPT("undef", CL_ALL, OPT_undef) \
- OPT("v", CL_ALL, OPT_v) \
- OPT("w", CL_ALL, OPT_w)
-
-#define OPT(text, flags, code) code,
-enum opt_code
-{
- COMMAND_LINE_OPTIONS
- N_OPTS
-};
-#undef OPT