[ccache] Support for color diagnostics

Lubos Lunak l.lunak at centrum.cz
Fri Nov 29 04:39:25 MST 2013


 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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-support-compiler-color-diagnostics-if-possible.patch
Type: text/x-diff
Size: 4942 bytes
Desc: not available
URL: <http://lists.samba.org/pipermail/ccache/attachments/20131129/0f36837a/attachment.patch>


More information about the ccache mailing list