From: espindola Date: Thu, 16 Apr 2009 12:57:50 +0000 (+0000) Subject: 2009-04-16 Rafael Avila de Espindola X-Git-Url: http://git.sourceforge.jp/view?a=commitdiff_plain;h=39932bd229b90bbd1991a2663534b0facd237634;p=pf3gnuchains%2Fgcc-fork.git 2009-04-16 Rafael Avila de Espindola * common.opt (fversion): New. * gcc.c (print_version): New. (process_command): Don't print the version. Just set print_version. (main): Print version. Call subprocesses if print_version and verbose_flag are set. * opts.c (common_handle_option): Handle OPT_fversion. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@146183 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2068c9ce855..cd6b608eed9 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,12 @@ +2009-04-16 Rafael Avila de Espindola + + * common.opt (fversion): New. + * gcc.c (print_version): New. + (process_command): Don't print the version. Just set print_version. + (main): Print version. Call subprocesses if print_version and + verbose_flag are set. + * opts.c (common_handle_option): Handle OPT_fversion. + 2009-04-16 Richard Guenther Ira Rosen diff --git a/gcc/common.opt b/gcc/common.opt index f85b943f7de..c6903b60d71 100644 --- a/gcc/common.opt +++ b/gcc/common.opt @@ -35,7 +35,7 @@ Common Report Joined Common Alias for --help=target -;; The following three entries are to work around the gcc driver +;; The following four entries are to work around the gcc driver ;; program's insatiable desire to turn options starting with a ;; double dash (--) into options starting with a dash f (-f). fhelp @@ -47,6 +47,9 @@ Common Joined ftarget-help Common +fversion +Common + -param Common Separate --param = Set parameter to value. See below for a complete list of parameters diff --git a/gcc/gcc.c b/gcc/gcc.c index de429f87c41..5c697ea0146 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -169,6 +169,10 @@ static int print_multi_lib; static int print_help_list; +/* Flag saying to print the version of gcc and its sub-processes. */ + +static int print_version; + /* Flag saying to print the sysroot suffix used for searching for headers. */ @@ -3650,14 +3654,17 @@ process_command (int argc, const char **argv) else if (strcmp (argv[i], "-fversion") == 0) { /* translate_options () has turned --version into -fversion. */ - printf (_("%s %s%s\n"), programname, pkgversion_string, - version_string); - printf ("Copyright %s 2009 Free Software Foundation, Inc.\n", - _("(C)")); - fputs (_("This is free software; see the source for copying conditions. There is NO\n\ -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), - stdout); - exit (0); + print_version = 1; + + /* We will be passing a dummy file on to the sub-processes. */ + n_infiles++; + n_switches++; + + /* CPP driver cannot obtain switch from cc1_options. */ + if (is_cpp_driver) + add_preprocessor_option ("--version", strlen ("--version")); + add_assembler_option ("--version", strlen ("--version")); + add_linker_option ("--version", strlen ("--version")); } else if (strcmp (argv[i], "-fhelp") == 0) { @@ -4364,7 +4371,7 @@ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n" error ("warning: '-x %s' after last input file has no effect", spec_lang); /* Ensure we only invoke each subprocess once. */ - if (print_subprocess_help || print_help_list) + if (print_subprocess_help || print_help_list || print_version) { n_infiles = 1; @@ -6667,6 +6674,24 @@ main (int argc, char **argv) fflush (stdout); } + if (print_version) + { + printf (_("%s %s%s\n"), programname, pkgversion_string, + version_string); + printf ("Copyright %s 2009 Free Software Foundation, Inc.\n", + _("(C)")); + fputs (_("This is free software; see the source for copying conditions. There is NO\n\ +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), + stdout); + if (! verbose_flag) + return 0; + + /* We do not exit here. We use the same mechanism of --help to print + the version of the sub-processes. */ + fputc ('\n', stdout); + fflush (stdout); + } + if (verbose_flag) { int n; diff --git a/gcc/opts.c b/gcc/opts.c index 5ee16d69a21..352ed5a5b71 100644 --- a/gcc/opts.c +++ b/gcc/opts.c @@ -1561,6 +1561,7 @@ common_handle_option (size_t scode, const char *arg, int value, break; } + case OPT_fversion: case OPT__version: print_version (stderr, ""); exit_after_options = true;