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 >
_______________________________________________ ccache mailing list ccache@lists.samba.org https://lists.samba.org/mailman/listinfo/ccache