OSDN Git Service

* Makefile.in (options.c): Tell optc-gen.awk to include config.h,
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 May 2005 12:30:06 +0000 (12:30 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 16 May 2005 12:30:06 +0000 (12:30 +0000)
system.h, coretypes.h and tm.h.
(options.o): Update dependencies accordingly.
* optc-gen.awk: Allow header_name to be a list of filenames.
Handle the "Condition" flag.
* opts.h (CL_DISABLED): New flag.
* opts.c (handle_option): Print an error for CL_DISABLED options.
* doc/options.texi: Document the "Condition" option flag.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@99774 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/Makefile.in
gcc/doc/options.texi
gcc/optc-gen.awk
gcc/opts.c
gcc/opts.h

index 866c8b2..061d63e 100644 (file)
@@ -1,3 +1,14 @@
+2005-05-16  Richard Sandiford  <rsandifo@redhat.com>
+
+       * Makefile.in (options.c): Tell optc-gen.awk to include config.h,
+       system.h, coretypes.h and tm.h.
+       (options.o): Update dependencies accordingly.
+       * optc-gen.awk: Allow header_name to be a list of filenames.
+       Handle the "Condition" flag.
+       * opts.h (CL_DISABLED): New flag.
+       * opts.c (handle_option): Print an error for CL_DISABLED options.
+       * doc/options.texi: Document the "Condition" option flag.
+
 2005-05-16  Paolo Bonzini  <bonzini@gnu.org>
 
        * tree-inline.c (estimate_num_insns_1): Handle VEC_COND_EXPR.
index 517d5d8..8d0d15c 100644 (file)
@@ -1569,7 +1569,7 @@ s-options: $(ALL_OPT_FILES) Makefile $(srcdir)/opt-gather.awk
 
 options.c: optionlist $(srcdir)/opt-functions.awk $(srcdir)/optc-gen.awk
        $(AWK) -f $(srcdir)/opt-functions.awk -f $(srcdir)/optc-gen.awk \
-              -v header_name="options.h" < $< > $@ 
+              -v header_name="config.h system.h coretypes.h tm.h" < $< > $@ 
 
 options.h: s-options-h ; @true
 s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opth-gen.awk
@@ -1578,7 +1578,7 @@ s-options-h: optionlist $(srcdir)/opt-functions.awk $(srcdir)/opth-gen.awk
        $(SHELL) $(srcdir)/../move-if-change tmp-options.h options.h
        $(STAMP) $@
 
-options.o: options.c options.h opts.h intl.h
+options.o: options.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) opts.h intl.h
 
 dumpvers: dumpvers.c
 
index 2ab1893..307a325 100644 (file)
@@ -191,4 +191,11 @@ The state of the option should be printed by @option{-fverbose-asm}.
 @item Undocumented
 The option is deliberately missing documentation and should not
 be included in the @option{--help} output.
+
+@item Condition(@var{cond})
+The option should only be accepted if preprocessor condition
+@var{cond} is true.  Note that any C declarations associated with the
+option will be present even if @var{cond} is false; @var{cond} simply
+controls whether the option is accepted and whether it is printed in
+the @option{--help} output.
 @end table
index 5476674..e647cd9 100644 (file)
@@ -57,7 +57,9 @@ END {
 print "/* This file is auto-generated by opts.sh.  */"
 print ""
 print "#include <intl.h>"
-print "#include " quote header_name quote
+n_headers = split(header_name, headers, " ")
+for (i = 1; i <= n_headers; i++)
+       print "#include " quote headers[i] quote
 print "#include " quote "opts.h" quote
 print ""
 
@@ -135,10 +137,20 @@ for (i = 0; i < n_opts; i++) {
        else
                hlp = quote help[i] quote;
 
-       printf("  { %c-%s%c,\n    %s,\n    %s, %u, %s, %s, %s }%s\n",
-               quote, opts[i], quote, hlp, back_chain[i], len,
-               switch_flags(flags[i]),
-               var_ref(flags[i]), var_set(flags[i]), comma)
+       printf("  { %c-%s%c,\n    %s,\n    %s, %u,\n",
+              quote, opts[i], quote, hlp, back_chain[i], len)
+       condition = opt_args("Condition", flags[i])
+       cl_flags = switch_flags(flags[i])
+       if (condition != "")
+               printf("#if %s\n" \
+                      "    %s,\n" \
+                      "#else\n" \
+                      "    CL_DISABLED,\n" \
+                      "#endif\n",
+                      condition, cl_flags, cl_flags)
+       else
+               printf("    %s,\n", cl_flags)
+       printf("    %s, %s }%s\n", var_ref(flags[i]), var_set(flags[i]), comma)
 }
 
 print "};"
index 97f8931..896728c 100644 (file)
@@ -315,6 +315,14 @@ handle_option (const char **argv, unsigned int lang_mask)
   /* We've recognized this switch.  */
   result = 1;
 
+  /* Check to see if the option is disabled for this configuration.  */
+  if (option->flags & CL_DISABLED)
+    {
+      error ("command line option %qs"
+            " is not supported by this configuration", opt);
+      goto done;
+    }
+
   /* Sort out any argument the switch takes.  */
   if (option->flags & CL_JOINED)
     {
index bed419e..758f830 100644 (file)
@@ -52,6 +52,7 @@ extern const struct cl_option cl_options[];
 extern const unsigned int cl_options_count;
 extern const char *const lang_names[];
 
+#define CL_DISABLED            (1 << 21) /* Disabled in this configuration.  */
 #define CL_TARGET              (1 << 22) /* Target-specific option.  */
 #define CL_REPORT              (1 << 23) /* Report argument with -fverbose-asm  */
 #define CL_JOINED              (1 << 24) /* If takes joined argument.  */