diff options
author | Zack Weinberg <zack@wolery.stanford.edu> | 2001-01-05 23:41:00 +0000 |
---|---|---|
committer | Zack Weinberg <zack@gcc.gnu.org> | 2001-01-05 23:41:00 +0000 |
commit | f4cdc368349bc046cd0874408bad7fc6f2104a3a (patch) | |
tree | d4a4a93914e1c41a8f3f7e9b66d5a2e9ca0a0bac | |
parent | 3326b760b32854ee0f513b44d0be770fad8f49e6 (diff) | |
download | gcc-f4cdc368349bc046cd0874408bad7fc6f2104a3a.zip gcc-f4cdc368349bc046cd0874408bad7fc6f2104a3a.tar.gz gcc-f4cdc368349bc046cd0874408bad7fc6f2104a3a.tar.bz2 |
cpplib.h (struct cpp_reader): Add help_only field.
* cpplib.h (struct cpp_reader): Add help_only field.
* cppinit.c (COMMAND_LINE_OPTIONS): Add OPT_version.
(cpp_handle_option): Set pfile->help_only if we see -h,
--help, -target-help, or --version. Print version string but
do not set help_only if we see -v or -version. Make text
printed by -v match that printed by (-)-version.
* cppmain.c (main): Exit after option parsing if
pfile->help_only is true.
* toplev.c (independent_decode_option): Call print_version,
then exit, if we see --version (but not -version).
(print_version): Split lengthy message into two lines.
From-SVN: r38733
-rw-r--r-- | gcc/ChangeLog | 16 | ||||
-rw-r--r-- | gcc/cppinit.c | 35 | ||||
-rw-r--r-- | gcc/cpplib.h | 4 | ||||
-rw-r--r-- | gcc/cppmain.c | 7 | ||||
-rw-r--r-- | gcc/toplev.c | 11 |
5 files changed, 58 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 77de023..580133c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,19 @@ +2001-01-05 Zack Weinberg <zack@wolery.stanford.edu> + + * cpplib.h (struct cpp_reader): Add help_only field. + * cppinit.c (COMMAND_LINE_OPTIONS): Add OPT_version. + (cpp_handle_option): Set pfile->help_only if we see -h, + --help, -target-help, or --version. Print version string but + do not set help_only if we see -v or -version. Make text + printed by -v match that printed by (-)-version. + + * cppmain.c (main): Exit after option parsing if + pfile->help_only is true. + + * toplev.c (independent_decode_option): Call print_version, + then exit, if we see --version (but not -version). + (print_version): Split lengthy message into two lines. + 2001-01-05 Nick Clifton <nickc@redhat.com> * config/v850/v850.c (v850_encode_data_area): Use alloca to create diff --git a/gcc/cppinit.c b/gcc/cppinit.c index 310fc04..7454b6f 100644 --- a/gcc/cppinit.c +++ b/gcc/cppinit.c @@ -1130,6 +1130,7 @@ new_pending_directive (pend, text, handler) DEF_OPT("std=iso9899:199x", 0, OPT_std_iso9899_199x) \ DEF_OPT("trigraphs", 0, OPT_trigraphs) \ DEF_OPT("v", 0, OPT_v) \ + DEF_OPT("version", 0, OPT_version) \ DEF_OPT("w", 0, OPT_w) #define DEF_OPT(text, msg, code) code, @@ -1322,16 +1323,32 @@ cpp_handle_option (pfile, argc, argv) case OPT_h: case OPT__help: print_help (); - exit (0); /* XXX */ + pfile->help_only = 1; break; case OPT_target__help: - /* Print if any target specific options. */ - exit (0); + /* Print if any target specific options. cpplib has none, but + make sure help_only gets set. */ + pfile->help_only = 1; break; + + /* --version inhibits compilation, -version doesn't. -v means + verbose and -version. Historical reasons, don't ask. */ case OPT__version: - fprintf (stderr, _("GNU CPP version %s (cpplib)\n"), version_string); - exit (0); /* XXX */ + pfile->help_only = 1; + goto version; + case OPT_v: + CPP_OPTION (pfile, verbose) = 1; + goto version; + + case OPT_version: + version: + fprintf (stderr, _("GNU CPP version %s (cpplib)"), version_string); +#ifdef TARGET_VERSION + TARGET_VERSION; +#endif + fputc ('\n', stderr); break; + case OPT_C: CPP_OPTION (pfile, discard_comments) = 0; break; @@ -1425,14 +1442,6 @@ cpp_handle_option (pfile, argc, argv) if (!strcmp (CPP_OPTION (pfile, out_fname), "-")) CPP_OPTION (pfile, out_fname) = ""; break; - case OPT_v: - fprintf (stderr, _("GNU CPP version %s (cpplib)"), version_string); -#ifdef TARGET_VERSION - TARGET_VERSION; -#endif - fputc ('\n', stderr); - CPP_OPTION (pfile, verbose) = 1; - break; case OPT_stdin_stdout: /* JF handle '-' as file name meaning stdin or stdout. */ if (CPP_OPTION (pfile, in_fname) == NULL) diff --git a/gcc/cpplib.h b/gcc/cpplib.h index c2049d7..7b53d09 100644 --- a/gcc/cpplib.h +++ b/gcc/cpplib.h @@ -616,6 +616,10 @@ struct cpp_reader /* True if we are skipping a failed conditional group. */ unsigned char skipping; + + /* True if --help appeared in the options. Caller should then bail + out after option parsing and printing its own help. See cppmain.c. */ + unsigned char help_only; }; #define CPP_FATAL_LIMIT 1000 diff --git a/gcc/cppmain.c b/gcc/cppmain.c index ace260c..6fa158d 100644 --- a/gcc/cppmain.c +++ b/gcc/cppmain.c @@ -82,6 +82,13 @@ main (argc, argv) if (CPP_FATAL_ERRORS (pfile)) return (FATAL_EXIT_CODE); + /* If cpp_handle_options saw --help or --version on the command + line, it will have set pfile->help_only to indicate this. Exit + successfully. [The library does not exit itself, because + e.g. cc1 needs to print its own --help message at this point.] */ + if (pfile->help_only) + return (SUCCESS_EXIT_CODE); + /* Open the output now. We must do so even if no_output is on, because there may be other output than from the actual preprocessing (e.g. from -dM). */ diff --git a/gcc/toplev.c b/gcc/toplev.c index 9e10186..671ce2c 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -4340,6 +4340,12 @@ independent_decode_option (argc, argv) exit (0); } + if (!strcmp (arg, "-version")) + { + print_version (stderr, ""); + exit (0); + } + if (*arg == 'Y') arg++; @@ -4934,12 +4940,13 @@ print_version (file, indent) #endif fnotice (file, #ifdef __GNUC__ - "%s%s%s version %s (%s) compiled by GNU C version %s.\n" + "%s%s%s version %s (%s)\n%s\tcompiled by GNU C version %s.\n" #else "%s%s%s version %s (%s) compiled by CC.\n" #endif , indent, *indent != 0 ? " " : "", - language_string, version_string, TARGET_NAME, __VERSION__); + language_string, version_string, TARGET_NAME, + indent, __VERSION__); } /* Print an option value and return the adjusted position in the line. |