itemization(
it() the input source file
it() the command line options
- it() the real compiler's size and modification time
+ it() the real compiler's size and modification time (unless
+ bf(CCACHE_COMPILERCHECK) says something else)
)
Based on the hash, a data structure called "manifest" is looked up in
the cache. The manifest contains paths to include files (previously
-read by the compiler), their hash sums and associated files produced
-by the compiler. The current contents of the include files are then
-hashed and compared to the information in the manifest. If there is a
-match, ccache knows the result of the compilation. If there is no
-match (or if the direct mode is disabled), ccache falls back to the
-preprocessor mode.
+read by the preprocessor), their hash sums and references to
+associated files produced by the compiler. The current contents of the
+include files are then hashed and compared to the information in the
+manifest. If there is a match, ccache knows the result of the
+compilation. If there is no match (or if the direct mode is disabled),
+ccache falls back to the preprocessor mode.
The direct mode will be disabled if any of the following holds:
itemization(
it() the environment variable bf(CCACHE_NODIRECT) is set
- it() a modification timestamp of any of the include files is too new
+ it() a modification time of any of the include files is too new
(needed to avoid a race condition)
it() the unifier is enabled (the environment variable
bf(CCACHE_UNIFY) is set)
files (bf(-I), bf(-include), bf(-D), etc; the theory is that
these options will change the preprocessor output if they have
any effect at all)
- it() the real compilers size and modification time
+ it() the real compilers size and modification time (unless
+ bf(CCACHE_COMPILERCHECK) says something else)
it() any stderr output generated by the preprocessor
)