[ccache] Support for color diagnostics
interfaSys Sàrl
interfasys at gmail.com
Mon Feb 17 17:25:08 MST 2014
Hello,
I've just tested the patch with a patched gcc48 with -fdiagnostics-color support
on FreeBSD 9 and it works with one exception.
GCC's documentations says:
"‘auto’ means to use color only when the standard error is a terminal"
So, if my understanding is correct, this means that, when using
-fdiagnostics-color=auto , I should be seeing colours when using the
terminal and indeed, that's the normal behaviour when ccache falls back to
the compiler (I see colours).
With that patch, I don't see the colours in auto mode. It only works in
always mode.
Cheers,
Olivier
On Friday, November 29, 2013 12:39:25 PM UTC+1, Lubos Lunak wrote:
>
>
> Hello,
>
> the attached patch adds ccache support for compiler color diagnostics
> (also
> reported by somebody as #10075).
>
> Clang automatically uses colors for output automatically if used in
> terminal.
> Ccache's redirecting to a file disables this. GCC 4.8 has got a similar
> support, except that it apparently requires also $GCC_COLORS or an
> explicit
> option.
>
> The patch detects if the compiler would use colors if used without ccache
> and
> explicitly forces an option to achieve this. Note that I do not have GCC
> 4.8
> here, so I tested with Clang's alias and the GCC_COLORS support is done
> based
> on documentation.
>
> Caveats:
>
> - GCC developers decided to roll their own name for the option when
> introducing it. Clang has an alias for the GCC way, but versions predating
> that obviously can't support it, so it's necessary to detect the compiler.
> As
> ccache doesn't do that (and I don't find it worth much effort, as it can't
> be
> 100% reliable anyway), the code merely guesses from the binary name. If
> the
> compiler used will be e.g. the 'cc' symlink, there'll be no colors. No big
> deal.
>
> - Since the stderr is different, obviously compiling with and without
> colors
> has different results as well. That means that such a compile
> is "duplicated". It's hopefully not such a common case, although it's
> perfectly possible. I don't know if it's worth the effort to try to be
> smart
> here. A possibly simple improvement could be to search the cache with and
> without the option set and if stderr is empty, reuse the result regardless
> of
> the option. I'm not quite sure where exactly this should happen in the
> code.
>
> I expect it'd make sense to add $CCACHE_NOCOLORS to disable this support?
>
> I can also create manpage section for this color support, but I first
> wanted
> to check here with the code.
>
> --
> Lubos Lunak
>
More information about the ccache
mailing list