Makefile.in (c-opts.o, [...]): Update dependencies.
* Makefile.in (c-opts.o, c-options.h): Update dependencies. * c-opts.c: Include c-options.h and c-options.c. (CL_C_ONLY, CL_OBJC_ONLY, CL_CXX_ONLY, CL_OBJCXX_ONLY): Rename CL_C, CL_OBJC, CL_CXX, CL_OBJCXX. (CL_ARG, CL_ALL, COMMAND_LINE_OPTIONS, struct cl_option, OPT, opt_comp): Remove. (missing_arg, c_common_init_options, c_common_decode_option, write_langs): Update for macro redefinitions and enumeration name changes. * c.opt, opts.sh: New files. * doc/passes.texi: Update. From-SVN: r67278
This commit is contained in:
parent
5f90145a64
commit
fef3106c7b
@ -1,3 +1,17 @@
|
||||
2003-05-31 Neil Booth <neil@daikokuya.co.uk>
|
||||
|
||||
* Makefile.in (c-opts.o, c-options.h): Update dependencies.
|
||||
* c-opts.c: Include c-options.h and c-options.c.
|
||||
(CL_C_ONLY, CL_OBJC_ONLY, CL_CXX_ONLY, CL_OBJCXX_ONLY):
|
||||
Rename CL_C, CL_OBJC, CL_CXX, CL_OBJCXX.
|
||||
(CL_ARG, CL_ALL, COMMAND_LINE_OPTIONS, struct cl_option,
|
||||
OPT, opt_comp): Remove.
|
||||
(missing_arg, c_common_init_options, c_common_decode_option,
|
||||
write_langs): Update for macro redefinitions and enumeration
|
||||
name changes.
|
||||
* c.opt, opts.sh: New files.
|
||||
* doc/passes.texi: Update.
|
||||
|
||||
2003-05-31 Andreas Jaeger <aj@suse.de>
|
||||
|
||||
* function.c (trampoline_address): Remove ALLOCATE_TRAMPOLINE
|
||||
|
@ -1316,10 +1316,13 @@ c-pretty-print.o : c-pretty-print.c c-pretty-print.h pretty-print.h \
|
||||
|
||||
c-opts.o : c-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) \
|
||||
c-pragma.h flags.h toplev.h langhooks.h tree-inline.h diagnostic.h \
|
||||
intl.h debug.h $(C_COMMON_H)
|
||||
intl.h debug.h $(C_COMMON_H) c-options.h c-options.c
|
||||
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
|
||||
$< $(OUTPUT_OPTION) @TARGET_SYSTEM_ROOT_DEFINE@
|
||||
|
||||
c-options.h c-options.c: c.opt $(srcdir)/opts.sh
|
||||
$(SHELL) $(srcdir)/opts.sh c-options.c c-options.h $(srcdir)/c.opt
|
||||
|
||||
c-cppbuiltin.o : c-cppbuiltin.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
|
||||
$(TREE_H) $(C_COMMON_H) c-pragma.h flags.h toplev.h langhooks.h \
|
||||
output.h except.h real.h $(TM_P_H)
|
||||
|
357
gcc/c-opts.c
357
gcc/c-opts.c
@ -35,6 +35,7 @@ Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
#include "cppdefault.h"
|
||||
#include "c-incpath.h"
|
||||
#include "debug.h" /* For debug_hooks. */
|
||||
#include "c-options.h"
|
||||
|
||||
#ifndef DOLLARS_IN_IDENTIFIERS
|
||||
# define DOLLARS_IN_IDENTIFIERS true
|
||||
@ -118,259 +119,27 @@ static void finish_options PARAMS ((void));
|
||||
#define STDC_0_IN_SYSTEM_HEADERS 0
|
||||
#endif
|
||||
|
||||
#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_C (1 << 0) /* Only C. */
|
||||
#define CL_OBJC (1 << 1) /* Only ObjC. */
|
||||
#define CL_CXX (1 << 2) /* Only C++. */
|
||||
#define CL_OBJCXX (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)
|
||||
#include "c-options.c"
|
||||
|
||||
/* 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,
|
||||
/* 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++.
|
||||
example, the handling of -fcond-mismatch.
|
||||
|
||||
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("A", CL_ALL | CL_ARG, OPT_A) \
|
||||
OPT("C", CL_ALL, OPT_C) \
|
||||
OPT("CC", CL_ALL, OPT_CC) \
|
||||
OPT("D", CL_ALL | CL_ARG, OPT_D) \
|
||||
OPT("E", CL_ALL, OPT_E) \
|
||||
OPT("H", CL_ALL, OPT_H) \
|
||||
OPT("I", CL_ALL | CL_ARG, OPT_I) \
|
||||
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("U", CL_ALL | CL_ARG, OPT_U) \
|
||||
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-offsetof", CL_CXX, OPT_Winvalid_offsetof) \
|
||||
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_C, 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_C, 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("idirafter", CL_ALL | CL_ARG, OPT_idirafter) \
|
||||
OPT("imacros", CL_ALL | CL_ARG, OPT_imacros) \
|
||||
OPT("include", CL_ALL | CL_ARG, OPT_include) \
|
||||
OPT("iprefix", CL_ALL | CL_ARG, OPT_iprefix) \
|
||||
OPT("isysroot", CL_ALL | CL_ARG, OPT_isysroot) \
|
||||
OPT("isystem", CL_ALL | CL_ARG, OPT_isystem) \
|
||||
OPT("iwithprefix", CL_ALL | CL_ARG, OPT_iwithprefix) \
|
||||
OPT("iwithprefixbefore", CL_ALL | CL_ARG, OPT_iwithprefixbefore) \
|
||||
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
|
||||
|
||||
struct cl_option
|
||||
{
|
||||
const char *opt_text;
|
||||
unsigned char opt_len;
|
||||
unsigned char flags;
|
||||
ENUM_BITFIELD (opt_code) opt_code : 2 * CHAR_BIT;
|
||||
};
|
||||
|
||||
#define OPT(text, flags, code) { text, sizeof(text) - 1, flags, code },
|
||||
#ifdef HOST_EBCDIC
|
||||
static struct cl_option cl_options[] =
|
||||
#else
|
||||
static const struct cl_option cl_options[] =
|
||||
#endif
|
||||
{
|
||||
COMMAND_LINE_OPTIONS
|
||||
};
|
||||
#undef OPT
|
||||
#undef COMMAND_LINE_OPTIONS
|
||||
If you requested a joined or separate argument, 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. */
|
||||
|
||||
/* Holds switches parsed by c_common_decode_option (), but whose
|
||||
handling is deferred to c_common_post_options (). */
|
||||
@ -381,20 +150,6 @@ static struct deferred_opt
|
||||
const char *arg;
|
||||
} *deferred_opts;
|
||||
|
||||
|
||||
#ifdef HOST_EBCDIC
|
||||
static int opt_comp PARAMS ((const void *, const void *));
|
||||
|
||||
/* Run-time sorting of options array. */
|
||||
static int
|
||||
opt_comp (p1, p2)
|
||||
const void *p1, *p2;
|
||||
{
|
||||
return strcmp (((struct cl_option *) p1)->opt_text,
|
||||
((struct cl_option *) p2)->opt_text);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Complain that switch OPT_INDEX expects an argument but none was
|
||||
provided. */
|
||||
static void
|
||||
@ -403,17 +158,17 @@ missing_arg (opt_index)
|
||||
{
|
||||
const char *opt_text = cl_options[opt_index].opt_text;
|
||||
|
||||
switch (cl_options[opt_index].opt_code)
|
||||
switch (opt_index)
|
||||
{
|
||||
case OPT__output_pch:
|
||||
case OPT_Wformat_eq:
|
||||
case OPT__output_pch_:
|
||||
case OPT_Wformat_:
|
||||
case OPT_d:
|
||||
case OPT_fabi_version:
|
||||
case OPT_fabi_version_:
|
||||
case OPT_fbuiltin_:
|
||||
case OPT_fdump:
|
||||
case OPT_fname_mangling:
|
||||
case OPT_ftabstop:
|
||||
case OPT_ftemplate_depth:
|
||||
case OPT_fdump_:
|
||||
case OPT_fname_mangling_version_:
|
||||
case OPT_ftabstop_:
|
||||
case OPT_ftemplate_depth_:
|
||||
case OPT_iprefix:
|
||||
case OPT_iwithprefix:
|
||||
case OPT_iwithprefixbefore:
|
||||
@ -421,7 +176,7 @@ missing_arg (opt_index)
|
||||
error ("missing argument to \"-%s\"", opt_text);
|
||||
break;
|
||||
|
||||
case OPT_fconstant_string_class:
|
||||
case OPT_fconstant_string_class_:
|
||||
error ("no class name specified with \"-%s\"", opt_text);
|
||||
break;
|
||||
|
||||
@ -575,22 +330,6 @@ void
|
||||
c_common_init_options (lang)
|
||||
enum c_language_kind lang;
|
||||
{
|
||||
#ifdef HOST_EBCDIC
|
||||
/* For non-ASCII hosts, the cl_options array needs to be sorted at
|
||||
runtime. */
|
||||
qsort (cl_options, N_OPTS, sizeof (struct cl_option), opt_comp);
|
||||
#endif
|
||||
#if ENABLE_CHECKING
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for (i = 1; i < N_OPTS; i++)
|
||||
if (strcmp (cl_options[i - 1].opt_text, cl_options[i].opt_text) >= 0)
|
||||
error ("options array incorrectly sorted: %s is before %s",
|
||||
cl_options[i - 1].opt_text, cl_options[i].opt_text);
|
||||
}
|
||||
#endif
|
||||
|
||||
c_language = lang;
|
||||
parse_in = cpp_create_reader (lang == clk_c ? CLK_GNUC89 : CLK_GNUCXX,
|
||||
ident_hash);
|
||||
@ -611,7 +350,7 @@ c_common_decode_option (argc, argv)
|
||||
int argc;
|
||||
char **argv;
|
||||
{
|
||||
static const int lang_flags[] = {CL_C_ONLY, CL_C, CL_CXX_ONLY, CL_CXX};
|
||||
static const int lang_flags[] = {CL_C, CL_OBJC, CL_CXX, CL_OBJCXX};
|
||||
size_t opt_index;
|
||||
const char *opt, *arg = 0;
|
||||
char *dup = 0;
|
||||
@ -663,7 +402,7 @@ c_common_decode_option (argc, argv)
|
||||
option = &cl_options[opt_index];
|
||||
|
||||
/* Sort out any argument the switch takes. */
|
||||
if (option->flags & CL_ARG)
|
||||
if (option->flags & (CL_JOINED | CL_SEPARATE))
|
||||
{
|
||||
if (option->flags & CL_JOINED)
|
||||
{
|
||||
@ -700,7 +439,8 @@ c_common_decode_option (argc, argv)
|
||||
goto done;
|
||||
}
|
||||
|
||||
switch (code = option->opt_code)
|
||||
code = opt_index;
|
||||
switch (code)
|
||||
{
|
||||
case N_OPTS: /* Shut GCC up. */
|
||||
break;
|
||||
@ -709,7 +449,7 @@ c_common_decode_option (argc, argv)
|
||||
print_help ();
|
||||
break;
|
||||
|
||||
case OPT__output_pch:
|
||||
case OPT__output_pch_:
|
||||
pch_file = arg;
|
||||
break;
|
||||
|
||||
@ -876,7 +616,7 @@ c_common_decode_option (argc, argv)
|
||||
warn_div_by_zero = on;
|
||||
break;
|
||||
|
||||
case OPT_Weffcxx:
|
||||
case OPT_Weffc__:
|
||||
warn_ecpp = on;
|
||||
break;
|
||||
|
||||
@ -888,7 +628,7 @@ c_common_decode_option (argc, argv)
|
||||
cpp_opts->warnings_are_errors = on;
|
||||
break;
|
||||
|
||||
case OPT_Werror_implicit_function_decl:
|
||||
case OPT_Werror_implicit_function_declaration:
|
||||
if (!on)
|
||||
result = 0;
|
||||
else
|
||||
@ -903,7 +643,7 @@ c_common_decode_option (argc, argv)
|
||||
set_Wformat (on);
|
||||
break;
|
||||
|
||||
case OPT_Wformat_eq:
|
||||
case OPT_Wformat_:
|
||||
set_Wformat (atoi (arg));
|
||||
break;
|
||||
|
||||
@ -931,7 +671,7 @@ c_common_decode_option (argc, argv)
|
||||
set_Wimplicit (on);
|
||||
break;
|
||||
|
||||
case OPT_Wimplicit_function_decl:
|
||||
case OPT_Wimplicit_function_declaration:
|
||||
mesg_implicit_function_declaration = on;
|
||||
break;
|
||||
|
||||
@ -1051,10 +791,7 @@ c_common_decode_option (argc, argv)
|
||||
break;
|
||||
|
||||
case OPT_Wstrict_prototypes:
|
||||
if (!on && c_language == clk_cplusplus)
|
||||
warning ("-Wno-strict-prototypes is not supported in C++");
|
||||
else
|
||||
warn_strict_prototypes = on;
|
||||
warn_strict_prototypes = on;
|
||||
break;
|
||||
|
||||
case OPT_Wsynth:
|
||||
@ -1124,7 +861,7 @@ c_common_decode_option (argc, argv)
|
||||
case OPT_fhonor_std:
|
||||
case OPT_fhuge_objects:
|
||||
case OPT_flabels_ok:
|
||||
case OPT_fname_mangling:
|
||||
case OPT_fname_mangling_version_:
|
||||
case OPT_fnew_abi:
|
||||
case OPT_fnonnull_objects:
|
||||
case OPT_fsquangle:
|
||||
@ -1135,7 +872,7 @@ c_common_decode_option (argc, argv)
|
||||
warning ("switch \"%s\" is no longer supported", argv[0]);
|
||||
break;
|
||||
|
||||
case OPT_fabi_version:
|
||||
case OPT_fabi_version_:
|
||||
flag_abi_version = read_integral_parameter (arg, argv[0], 1);
|
||||
break;
|
||||
|
||||
@ -1170,7 +907,7 @@ c_common_decode_option (argc, argv)
|
||||
cpp_opts->dollars_in_ident = on;
|
||||
break;
|
||||
|
||||
case OPT_fdump:
|
||||
case OPT_fdump_:
|
||||
if (!on || !dump_switch_p (argv[0] + strlen ("-f")))
|
||||
result = 0;
|
||||
break;
|
||||
@ -1228,7 +965,7 @@ c_common_decode_option (argc, argv)
|
||||
flag_const_strings = on;
|
||||
break;
|
||||
|
||||
case OPT_fconstant_string_class:
|
||||
case OPT_fconstant_string_class_:
|
||||
constant_string_class_name = arg;
|
||||
break;
|
||||
|
||||
@ -1249,7 +986,7 @@ c_common_decode_option (argc, argv)
|
||||
goto cp_deprecated;
|
||||
|
||||
case OPT_ffixed_form:
|
||||
case OPT_ffixed_line_length:
|
||||
case OPT_ffixed_line_length_:
|
||||
/* Fortran front end options ignored when preprocessing only. */
|
||||
if (flag_preprocess_only)
|
||||
result = -1;
|
||||
@ -1334,7 +1071,7 @@ c_common_decode_option (argc, argv)
|
||||
flag_detailed_statistics = on;
|
||||
break;
|
||||
|
||||
case OPT_ftabstop:
|
||||
case OPT_ftabstop_:
|
||||
/* Don't recognize -fno-tabstop=. */
|
||||
if (!on)
|
||||
return 0;
|
||||
@ -1348,7 +1085,7 @@ c_common_decode_option (argc, argv)
|
||||
}
|
||||
break;
|
||||
|
||||
case OPT_ftemplate_depth:
|
||||
case OPT_ftemplate_depth_:
|
||||
max_tinst_depth = read_integral_parameter (arg, argv[0], 0);
|
||||
break;
|
||||
|
||||
@ -1410,7 +1147,7 @@ c_common_decode_option (argc, argv)
|
||||
std_inc = false;
|
||||
break;
|
||||
|
||||
case OPT_nostdincplusplus:
|
||||
case OPT_nostdinc__:
|
||||
std_cxx_inc = false;
|
||||
break;
|
||||
|
||||
@ -1443,9 +1180,9 @@ c_common_decode_option (argc, argv)
|
||||
cpp_opts->remap = 1;
|
||||
break;
|
||||
|
||||
case OPT_std_cplusplus98:
|
||||
case OPT_std_gnuplusplus98:
|
||||
set_std_cxx98 (code == OPT_std_cplusplus98 /* ISO */);
|
||||
case OPT_std_c__98:
|
||||
case OPT_std_gnu__98:
|
||||
set_std_cxx98 (code == OPT_std_c__98 /* ISO */);
|
||||
break;
|
||||
|
||||
case OPT_std_c89:
|
||||
@ -1964,15 +1701,15 @@ write_langs (buf, flags)
|
||||
int flags;
|
||||
{
|
||||
*buf = '\0';
|
||||
if (flags & CL_C_ONLY)
|
||||
if (flags & CL_C)
|
||||
strcat (buf, "C");
|
||||
if (flags & CL_OBJC_ONLY)
|
||||
if (flags & CL_OBJC)
|
||||
{
|
||||
if (*buf)
|
||||
strcat (buf, "/");
|
||||
strcat (buf, "ObjC");
|
||||
}
|
||||
if (flags & CL_CXX_ONLY)
|
||||
if (flags & CL_CXX)
|
||||
{
|
||||
if (*buf)
|
||||
strcat (buf, "/");
|
||||
|
600
gcc/c.opt
Normal file
600
gcc/c.opt
Normal file
@ -0,0 +1,600 @@
|
||||
; Options for the C, ObjC, C++ and ObjC++ front ends.
|
||||
; Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
;
|
||||
; This file is part of GCC.
|
||||
;
|
||||
; GCC is free software; you can redistribute it and/or modify it under
|
||||
; the terms of the GNU General Public License as published by the Free
|
||||
; Software Foundation; either version 2, or (at your option) any later
|
||||
; version.
|
||||
;
|
||||
; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
; WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
; for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with GCC; see the file COPYING. If not, write to the Free
|
||||
; Software Foundation, 59 Temple Place - Suite 330, Boston, MA
|
||||
; 02111-1307, USA.
|
||||
|
||||
|
||||
; This file is processed by the script opts.sh. It is a database of
|
||||
; command line options, with each record separated by a blank line,
|
||||
; and each field appearing on its own line. The first field is the
|
||||
; command-line switch with the leading "-" removed. All options
|
||||
; beginning with "f" or "W" are implicitly assumed to take a "no-"
|
||||
; form; this form should not be listed.
|
||||
|
||||
; The second field is a space-separated list of which parts of the
|
||||
; compiler recognize the switch. Current valid entries are "C",
|
||||
; "ObjC", "C++" and "ObjC++". If the switch takes an argument, then
|
||||
; you should also specify "Joined" and/or "Separate" to indicate where
|
||||
; the argument can appear.
|
||||
|
||||
; Comments can appear on their own line anwhere in the file, preceded
|
||||
; by a semicolon. Whitespace is permitted before the semicolon.
|
||||
|
||||
; For each switch XXX below, an enumeration constant is created by the
|
||||
; script opts.sh spelt OPT_XXX, but with all non-alphanumeric
|
||||
; characters replaced with an underscore.
|
||||
|
||||
; Please try to keep this file in ASCII collating order.
|
||||
|
||||
-help
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
-output-pch=
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
A
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
C
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
CC
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
D
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
E
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
H
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
I
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
M
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
MD
|
||||
C ObjC C++ ObjC++ Separate
|
||||
|
||||
MF
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
MG
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
MM
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
MMD
|
||||
C ObjC C++ ObjC++ Separate
|
||||
|
||||
MP
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
MQ
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
MT
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
P
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
U
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
Wabi
|
||||
C++ ObjC++
|
||||
|
||||
Wall
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wbad-function-cast
|
||||
C ObjC
|
||||
|
||||
Wcast-qual
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wchar-subscripts
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wcomment
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wcomments
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wconversion
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wctor-dtor-privacy
|
||||
C++ ObjC++
|
||||
|
||||
Wdeprecated
|
||||
C++ ObjC++
|
||||
|
||||
Wdiv-by-zero
|
||||
C ObjC
|
||||
|
||||
Weffc++
|
||||
C++ ObjC++
|
||||
|
||||
Wendif-labels
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Werror
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Werror-implicit-function-declaration
|
||||
C ObjC
|
||||
|
||||
Wfloat-equal
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wformat
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wformat-extra-args
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wformat-nonliteral
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wformat-security
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wformat-y2k
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wformat-zero-length
|
||||
C ObjC
|
||||
|
||||
Wformat=
|
||||
C ObjC C++ ObjC++ Joined
|
||||
|
||||
Wimplicit
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wimplicit-function-declaration
|
||||
C ObjC
|
||||
|
||||
Wimplicit-int
|
||||
C ObjC
|
||||
|
||||
Wimport
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Winvalid-offsetof
|
||||
C++ ObjC++
|
||||
|
||||
Winvalid-pch
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wlong-long
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wmain
|
||||
C ObjC
|
||||
|
||||
Wmissing-braces
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wmissing-declarations
|
||||
C ObjC
|
||||
|
||||
Wmissing-format-attribute
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wmissing-prototypes
|
||||
C ObjC
|
||||
|
||||
Wmultichar
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wnested-externs
|
||||
C ObjC
|
||||
|
||||
Wnon-template-friend
|
||||
C++ ObjC++
|
||||
|
||||
Wnon-virtual-dtor
|
||||
C++ ObjC++
|
||||
|
||||
Wnonnull
|
||||
C ObjC
|
||||
|
||||
Wold-style-cast
|
||||
C++ ObjC++
|
||||
|
||||
Woverloaded-virtual
|
||||
C++ ObjC++
|
||||
|
||||
Wparentheses
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wpmf-conversions
|
||||
C++ ObjC++
|
||||
|
||||
Wpointer-arith
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wprotocol
|
||||
ObjC ObjC++
|
||||
|
||||
Wredundant-decls
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wreorder
|
||||
C++ ObjC++
|
||||
|
||||
Wreturn-type
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wselector
|
||||
ObjC ObjC++
|
||||
|
||||
Wsequence-point
|
||||
C ObjC
|
||||
|
||||
Wsign-compare
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wsign-promo
|
||||
C++ ObjC++
|
||||
|
||||
Wstrict-prototypes
|
||||
C ObjC
|
||||
|
||||
Wsynth
|
||||
C++ ObjC++
|
||||
|
||||
Wsystem-headers
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wtraditional
|
||||
C ObjC
|
||||
|
||||
Wtrigraphs
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wundeclared-selector
|
||||
ObjC ObjC++
|
||||
|
||||
Wundef
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wunknown-pragmas
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wunused-macros
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
Wwrite-strings
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
ansi
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
d
|
||||
C ObjC C++ ObjC++ Joined
|
||||
|
||||
fabi-version=
|
||||
C++ ObjC++ Joined
|
||||
|
||||
faccess-control
|
||||
C++ ObjC++
|
||||
|
||||
fall-virtual
|
||||
C++ ObjC++
|
||||
|
||||
falt-external-templates
|
||||
C++ ObjC++
|
||||
|
||||
fasm
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fbuiltin
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fbuiltin-
|
||||
C ObjC C++ ObjC++ Joined
|
||||
|
||||
fcheck-new
|
||||
C++ ObjC++
|
||||
|
||||
fcond-mismatch
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fconserve-space
|
||||
C++ ObjC++
|
||||
|
||||
fconst-strings
|
||||
C++ ObjC++
|
||||
|
||||
fconstant-string-class=
|
||||
ObjC ObjC++ Joined
|
||||
|
||||
fdefault-inline
|
||||
C++ ObjC++
|
||||
|
||||
fdollars-in-identifiers
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fdump-
|
||||
C ObjC C++ ObjC++ Joined
|
||||
|
||||
felide-constructors
|
||||
C++ ObjC++
|
||||
|
||||
fenforce-eh-specs
|
||||
C++ ObjC++
|
||||
|
||||
fenum-int-equiv
|
||||
C++ ObjC++
|
||||
|
||||
fexternal-templates
|
||||
C++ ObjC++
|
||||
|
||||
ffixed-form
|
||||
C ObjC
|
||||
|
||||
ffixed-line-length-
|
||||
C ObjC Joined
|
||||
|
||||
ffor-scope
|
||||
C++ ObjC++
|
||||
|
||||
ffreestanding
|
||||
C ObjC
|
||||
|
||||
fgnu-keywords
|
||||
C++ ObjC++
|
||||
|
||||
fgnu-runtime
|
||||
ObjC ObjC++
|
||||
|
||||
fguiding-decls
|
||||
C++ ObjC++
|
||||
|
||||
fhandle-exceptions
|
||||
C++ ObjC++
|
||||
|
||||
fhonor-std
|
||||
C++ ObjC++
|
||||
|
||||
fhosted
|
||||
C ObjC
|
||||
|
||||
fhuge-objects
|
||||
C++ ObjC++
|
||||
|
||||
fimplement-inlines
|
||||
C++ ObjC++
|
||||
|
||||
fimplicit-inline-templates
|
||||
C++ ObjC++
|
||||
|
||||
fimplicit-templates
|
||||
C++ ObjC++
|
||||
|
||||
flabels-ok
|
||||
C++ ObjC++
|
||||
|
||||
fms-extensions
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fname-mangling-version-
|
||||
C++ ObjC++ Joined
|
||||
|
||||
fnew-abi
|
||||
C++ ObjC++
|
||||
|
||||
fnext-runtime
|
||||
ObjC ObjC++
|
||||
|
||||
fnonansi-builtins
|
||||
C++ ObjC++
|
||||
|
||||
fnonnull-objects
|
||||
C++ ObjC++
|
||||
|
||||
foperator-names
|
||||
C++ ObjC++
|
||||
|
||||
foptional-diags
|
||||
C++ ObjC++
|
||||
|
||||
fpch-deps
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fpermissive
|
||||
C++ ObjC++
|
||||
|
||||
fpreprocessed
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
frepo
|
||||
C++ ObjC++
|
||||
|
||||
frtti
|
||||
C++ ObjC++
|
||||
|
||||
fshort-double
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fshort-enums
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fshort-wchar
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fshow-column
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fsigned-bitfields
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fsigned-char
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fsquangle
|
||||
C++ ObjC++
|
||||
|
||||
fstats
|
||||
C++ ObjC++
|
||||
|
||||
fstrict-prototype
|
||||
C++ ObjC++
|
||||
|
||||
ftabstop=
|
||||
C ObjC C++ ObjC++ Joined
|
||||
|
||||
ftemplate-depth-
|
||||
C++ ObjC++ Joined
|
||||
|
||||
fthis-is-variable
|
||||
C++ ObjC++
|
||||
|
||||
funsigned-bitfields
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
funsigned-char
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
fuse-cxa-atexit
|
||||
C++ ObjC++
|
||||
|
||||
fvtable-gc
|
||||
C++ ObjC++
|
||||
|
||||
fvtable-thunks
|
||||
C++ ObjC++
|
||||
|
||||
fweak
|
||||
C++ ObjC++
|
||||
|
||||
fxref
|
||||
C++ ObjC++
|
||||
|
||||
gen-decls
|
||||
ObjC ObjC++
|
||||
|
||||
idirafter
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
imacros
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
include
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
iprefix
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
isysroot
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
isystem
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
iwithprefix
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
iwithprefixbefore
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
lang-asm
|
||||
C
|
||||
|
||||
lang-objc
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
nostdinc
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
nostdinc++
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
o
|
||||
C ObjC C++ ObjC++ Joined Separate
|
||||
|
||||
pedantic
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
pedantic-errors
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
print-objc-runtime-info
|
||||
ObjC ObjC++
|
||||
|
||||
remap
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
std=c++98
|
||||
C++ ObjC++
|
||||
|
||||
std=c89
|
||||
C ObjC
|
||||
|
||||
std=c99
|
||||
C ObjC
|
||||
|
||||
std=c9x
|
||||
C ObjC
|
||||
|
||||
std=gnu++98
|
||||
C++ ObjC++
|
||||
|
||||
std=gnu89
|
||||
C ObjC
|
||||
|
||||
std=gnu99
|
||||
C ObjC
|
||||
|
||||
std=gnu9x
|
||||
C ObjC
|
||||
|
||||
std=iso9899:1990
|
||||
C ObjC
|
||||
|
||||
std=iso9899:199409
|
||||
C ObjC
|
||||
|
||||
std=iso9899:1999
|
||||
C ObjC
|
||||
|
||||
std=iso9899:199x
|
||||
C ObjC
|
||||
|
||||
traditional-cpp
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
trigraphs
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
undef
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
v
|
||||
C ObjC C++ ObjC++
|
||||
|
||||
w
|
||||
C ObjC C++ ObjC++
|
@ -87,6 +87,7 @@ the other C-like languages: @file{c-common.c},
|
||||
@file{c-cppbuiltin.c},
|
||||
@file{c-common.h},
|
||||
@file{c-dump.h},
|
||||
@file{c.opt},
|
||||
@file{c-incpath.h}
|
||||
and
|
||||
@file{c-pragma.h},
|
||||
|
78
gcc/opts.sh
Normal file
78
gcc/opts.sh
Normal file
@ -0,0 +1,78 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2003 Free Software Foundation, Inc.
|
||||
# Contributed by Neil Booth, May 2003.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by the
|
||||
# Free Software Foundation; either version 2, or (at your option) any
|
||||
# later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# Usage: opts.sh outfile.c outfile.h file1.opt [file2.opt, ...]
|
||||
|
||||
AWK=/usr/bin/awk
|
||||
SORT=/usr/bin/sort
|
||||
|
||||
C_FILE=$1; shift
|
||||
H_FILE=$1; shift
|
||||
|
||||
cat "$@" | ${AWK} '
|
||||
BEGIN{ RS=""; FS="\n" }
|
||||
# Ignore comments and blank lines
|
||||
/^[ \t]*(;|$)/ { next }
|
||||
/^[^ \t]/ { gsub ("\n", "\034", $0); print }
|
||||
' | LANG=C ${SORT} | ${AWK} '
|
||||
function switch_flags (langs, flags)
|
||||
{
|
||||
langs = ":" langs ":"
|
||||
gsub( " ", ":", langs)
|
||||
flags = "0"
|
||||
if (langs ~ ":C:") flags = flags " | CL_C"
|
||||
if (langs ~ ":ObjC:") flags = flags " | CL_OBJC"
|
||||
if (langs ~ ":C\\+\\+:") flags = flags " | CL_CXX"
|
||||
if (langs ~ ":ObjC\\+\\+:") flags = flags " | CL_OBJCXX"
|
||||
if (langs ~ ":Joined") flags = flags " | CL_JOINED"
|
||||
if (langs ~ ":Separate") flags = flags " | CL_SEPARATE"
|
||||
sub( "^0 \\| ", "", flags )
|
||||
return flags
|
||||
}
|
||||
|
||||
BEGIN {
|
||||
c_file = "'${C_FILE}'"
|
||||
h_file = "'${H_FILE}'"
|
||||
FS = "\034"
|
||||
print "/* This file is auto-generated by opts.sh. */\n" > h_file
|
||||
print "/* This file is auto-generated by opts.sh. */\n" > c_file
|
||||
print "struct cl_option\n{" >> h_file
|
||||
print " const char *opt_text;" >> h_file
|
||||
print " unsigned char opt_len;" >> h_file
|
||||
print " unsigned char flags;" >> h_file
|
||||
print "};\n" >> h_file
|
||||
print "enum opt_code\n{" >> h_file
|
||||
print "static const struct cl_option cl_options[] =\n{" >> c_file
|
||||
}
|
||||
|
||||
{
|
||||
opt = $1
|
||||
gsub ( "[^A-Za-z0-9]", "_", opt)
|
||||
s = substr (" ", length (opt))
|
||||
enum = "OPT_" opt
|
||||
printf (" %s,%s/* -%s */\n", enum, s, $1 ) >> h_file
|
||||
printf (" { \"%s\", %u, %s },\n", $1, \
|
||||
length ($1), switch_flags($2)) >> c_file
|
||||
}
|
||||
|
||||
END {
|
||||
print " N_OPTS\n};" >> h_file
|
||||
print "};" >> c_file
|
||||
}
|
||||
'
|
Loading…
Reference in New Issue
Block a user