diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b7b72dabccfc1eeba3602a7b52bae8e7d7262bc0..682f6fd1e33509bdc6368122546232ec07ba4928 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,14 @@ +2014-11-14 Jakub Jelinek <jakub@redhat.com> + + * configure.ac (--with-diagnostics-color): New configure + option, default to --with-diagnostics-color=auto. + * toplev.c (process_options): Use DIAGNOSTICS_COLOR_DEFAULT + to determine -fdiagnostics-color= option default. + * doc/invoke.texi (-fdiagnostics-color=): Document new + default. + * configure: Regenerated. + * config.in: Regenerated. + 2014-11-13 Teresa Johnson <tejohnson@google.com> PR tree-optimization/63841 diff --git a/gcc/config.in b/gcc/config.in index 9d1ad863b5fd825a92b812f7c46a4ae8850d709c..6cfda75b0b3ae7bf27bc82b9dc447d6d44a9a8c7 100644 --- a/gcc/config.in +++ b/gcc/config.in @@ -57,6 +57,12 @@ #endif +/* The default for -fdiagnostics-color option */ +#ifndef USED_FOR_TARGET +#undef DIAGNOSTICS_COLOR_DEFAULT +#endif + + /* Define if you want assertions enabled. This is a cheap check. */ #ifndef USED_FOR_TARGET #undef ENABLE_ASSERT_CHECKING @@ -272,6 +278,12 @@ #endif +/* Define if your assembler supports .module. */ +#ifndef USED_FOR_TARGET +#undef HAVE_AS_DOT_MODULE +#endif + + /* Define if your assembler supports DSPR1 mult. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_DSPR1_MULT @@ -484,12 +496,6 @@ #endif -/* Define if the assembler understands .module. */ -#ifndef USED_FOR_TARGET -#undef HAVE_AS_DOT_MODULE -#endif - - /* Define if your assembler supports the -no-mul-bug-abort option. */ #ifndef USED_FOR_TARGET #undef HAVE_AS_NO_MUL_BUG_ABORT_OPTION diff --git a/gcc/configure b/gcc/configure index ebc314965a7eb938bafbe9b1d362f2d7a126b395..8e62ee7233f9d2867a287c050870fc5959aef57e 100755 --- a/gcc/configure +++ b/gcc/configure @@ -936,6 +936,7 @@ enable_plugin enable_host_shared enable_libquadmath_support with_linker_hash_style +with_diagnostics_color ' ac_precious_vars='build_alias host_alias @@ -1708,6 +1709,11 @@ Optional Packages: --with-system-zlib use installed libz --with-linker-hash-style={sysv,gnu,both} specify the linker hash style + --with-diagnostics-color={never,auto,auto-if-env,always} + specify the default of -fdiagnostics-color option + auto-if-env stands for -fdiagnostics-color=auto if + GCC_COLOR environment variable is present and + -fdiagnostics-color=never otherwise Some influential environment variables: CC C compiler command @@ -18140,7 +18146,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18143 "configure" +#line 18149 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -18246,7 +18252,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 18249 "configure" +#line 18255 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -28294,6 +28300,37 @@ _ACEOF fi +# Specify what should be the default of -fdiagnostics-color option. + +# Check whether --with-diagnostics-color was given. +if test "${with_diagnostics_color+set}" = set; then : + withval=$with_diagnostics_color; case x"$withval" in + xnever) + DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO + ;; + xauto) + DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO + ;; + xauto-if-env) + DIAGNOSTICS_COLOR_DEFAULT=-1 + ;; + xalways) + DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES + ;; + *) + as_fn_error "$withval is an invalid option to --with-diagnostics-color" "$LINENO" 5 + ;; + esac +else + DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO +fi + + +cat >>confdefs.h <<_ACEOF +#define DIAGNOSTICS_COLOR_DEFAULT $DIAGNOSTICS_COLOR_DEFAULT +_ACEOF + + # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit # of jit/jit-playback.c. cat > gcc-driver-name.h <<EOF diff --git a/gcc/configure.ac b/gcc/configure.ac index 0f7ab894ec55179d9bdbb438a4200927ed059595..f6e7ec3529e1a200632ce0a60728eb2789c15b91 100644 --- a/gcc/configure.ac +++ b/gcc/configure.ac @@ -5651,6 +5651,34 @@ if test x"${LINKER_HASH_STYLE}" != x; then [The linker hash style]) fi +# Specify what should be the default of -fdiagnostics-color option. +AC_ARG_WITH([diagnostics-color], +[AC_HELP_STRING([--with-diagnostics-color={never,auto,auto-if-env,always}], + [specify the default of -fdiagnostics-color option + auto-if-env stands for -fdiagnostics-color=auto if + GCC_COLOR environment variable is present and + -fdiagnostics-color=never otherwise])], +[case x"$withval" in + xnever) + DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_NO + ;; + xauto) + DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO + ;; + xauto-if-env) + DIAGNOSTICS_COLOR_DEFAULT=-1 + ;; + xalways) + DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_YES + ;; + *) + AC_MSG_ERROR([$withval is an invalid option to --with-diagnostics-color]) + ;; + esac], +[DIAGNOSTICS_COLOR_DEFAULT=DIAGNOSTICS_COLOR_AUTO]) +AC_DEFINE_UNQUOTED(DIAGNOSTICS_COLOR_DEFAULT, $DIAGNOSTICS_COLOR_DEFAULT, + [The default for -fdiagnostics-color option]) + # Generate gcc-driver-name.h containing GCC_DRIVER_NAME for the benefit # of jit/jit-playback.c. cat > gcc-driver-name.h <<EOF diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index b7049d827e9fe1a7baaf635faccb4641f08fb452..93943cb58c6e1581f6c37006d7620971a80e57e5 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -3104,8 +3104,10 @@ a message which is too long to fit on a single line. @cindex highlight, color, colour @vindex GCC_COLORS @r{environment variable} Use color in diagnostics. @var{WHEN} is @samp{never}, @samp{always}, -or @samp{auto}. The default is @samp{never} if @env{GCC_COLORS} environment -variable isn't present in the environment, and @samp{auto} otherwise. +or @samp{auto}. The default depends on how the compiler has been configured, +it can be any of the above @var{WHEN} options or also @samp{never} +if @env{GCC_COLORS} environment variable isn't present in the environment, +and @samp{auto} otherwise. @samp{auto} means to use color only when the standard error is a terminal. The forms @option{-fdiagnostics-color} and @option{-fno-diagnostics-color} are aliases for @option{-fdiagnostics-color=always} and diff --git a/gcc/toplev.c b/gcc/toplev.c index 80fb4ceb4c6c8a60ad5f5262a36903039834c47d..2ed76bc610d419e3117e90532ffe48e500a7708c 100644 --- a/gcc/toplev.c +++ b/gcc/toplev.c @@ -1267,12 +1267,28 @@ process_options (void) maximum_field_alignment = initial_max_fld_align * BITS_PER_UNIT; - /* Default to -fdiagnostics-color=auto if GCC_COLORS is in the environment, - otherwise default to -fdiagnostics-color=never. */ - if (!global_options_set.x_flag_diagnostics_show_color - && getenv ("GCC_COLORS")) - pp_show_color (global_dc->printer) - = colorize_init (DIAGNOSTICS_COLOR_AUTO); + /* If DIAGNOSTICS_COLOR_DEFAULT is -1, default to -fdiagnostics-color=auto + if GCC_COLORS is in the environment, otherwise default to + -fdiagnostics-color=never, for other values default to that + -fdiagnostics-color={never,auto,always}. */ + if (!global_options_set.x_flag_diagnostics_show_color) + switch ((int) DIAGNOSTICS_COLOR_DEFAULT) + { + case -1: + if (!getenv ("GCC_COLORS")) + break; + /* FALLTHRU */ + case DIAGNOSTICS_COLOR_AUTO: + pp_show_color (global_dc->printer) + = colorize_init (DIAGNOSTICS_COLOR_AUTO); + break; + case DIAGNOSTICS_COLOR_YES: + pp_show_color (global_dc->printer) + = colorize_init (DIAGNOSTICS_COLOR_YES); + break; + default: + break; + } /* Allow the front end to perform consistency checks and do further initialization based on the command line options. This hook also