[ccache] How to support another compiler?

Paul Lamb aplumb at bluebottle.com
Thu Dec 1 08:07:15 MST 2011

Hi Yang Zhou,

Zhou, Yang <Yang.Zhou <at> Polycom.com> writes:

> Thanks for help. I'm using cl6x from Texas Instruments, it's used for TI C6000

I am also using the TI compiler. I am looking at using ccache with this 
compiler but it is annoyingly unlike gcc :-(.

Here are some key differences which makes it incompatible with ccache as it 

1. It doesn't support -E for preprocessing. Instead it uses -ppo.
2. When it preprocesses (using -ppo) it doesn't output to stdout as gcc does 
but instead outputs to a .pp file. By default this is in the current directory
(or somewhere else if you use the --pp_directory option as well) 
3. ccache assumes that the output file is named with the -o <filename> option.
The TI compiler uses -fe <filename> for this purpose.

I had a go at writing a wrapper which could sit between ccache and the TI
compiler doing the relevant option conversion but had to shelve this due to
particular issues unique to my environment (including backward compatibility
with a complex make system; all sorts of issues with quoting and escaping of
command line options, some of which contained spaces; and difficulty getting 
the preprocessed output to stdout). These issues are all probably solvable 
given enough time but I think that modifying ccache itself is probably a much 
better solution.

> -----Original Message-----
> From: martinpool <at> gmail.com [mailto:martinpool <at> gmail.com] On Behalf
Of Martin Pool
> Sent: Friday, November 18, 2011 11:48 AM
> To: Zhou, Yang
> Cc: ccache <at> lists.samba.org
> Subject: Re: [ccache] How to support another compiler?
> On 18 November 2011 14:34, Zhou, Yang <Yang.Zhou <at> polycom.com> wrote:
> > Hi all,
> >
> > I want to use ccache to optimize the compilation of my project. However,
another compiler(not gcc) is used
> for the compilation. The compiler options are different from those of gcc. But
I think the compilation
> process should be similar.
> > I tried to compile with ccache, from the log, every time the manifest file
can't be found, and can't find the
> object file in manifest. After that, preprocessor runs, and got object file
hash from preprocessor, but
> the object file is not in cache.
> > So the real compiler runs every time.
> > Seems the results of real compilation are not stored into the cache.
> If the command line arguments are different that's not surprising.
> > Do you think it's possible to change ccache source code to support the my
> Yes.
> > If possible, which part of code should be updated? Thanks a lot!
> The parts that deal with compiler argument parsing.
> Probably you will want to introduce an object layer that describes
> different compilers, and an environment variable to switch between
> them.
> What's the other compiler you are using?
> m

I would be very interested if we can modify ccache itself to work with this
compiler. How are you getting on with this? Is there any way I can help move
this forward and avoid duplication of effort?


More information about the ccache mailing list