[ccache] direct mode

Andrew Stubbs andrew_stubbs at mentor.com
Mon Oct 28 03:36:15 MDT 2013


On 27/10/13 20:03, Joel Rosdahl wrote:
> Assume that /example/foo/foo/bar.h doesn't exist and that
> /example/foo/bar.h exists. The preprocessed output will indicate that
> /example/foo/bar.h was read. Which directories where the header wasn't
> found should we store in the manifest? The correct answer is
> "/example/foo", which I don't see how ccache can conclude from the
> available information.

Sigh, I had hoped that there'd be only false-negatives, and no missed 
positives.

I think there's enough line-number information in the preprocessed 
source to locate the #include directive in the original source file. The 
data has to be read from disk anyway, but all that extra processing 
might make a cache-miss very expensive.

> Regarding how to know whether we can pass compiler-specific options like
> -v, I have had some thoughts about that some years ago, see comment 3 on
> https://bugzilla.samba.org/show_bug.cgi?id=7556#c3.

Agreed, capturing and caching the identity of any given compiler should 
not be too hard. "cc --version" is one way, or it might just be easier 
to load the binary into memory and memmem your way to victory. The 
result can be cached and indexed by a hash of the path and mtime.

Andrew



More information about the ccache mailing list