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
-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.
+cache. The manifest contains:
+
+* references to cached compilation results (object file, dependency file, etc)
+ that were produced by previous compilations that matched the hash
+* paths to the include files that were read at the time the compilation results
+ were stored in the cache
+* hash sums of the include files at the time the compilation results were
+ stored in the cache
+
+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, ccache falls back to running the
+preprocessor. The output from the preprocessor is parsed to find the include
+files that were read. The paths and hash sums of those include files are then
+stored in the manifest along with information about the produced compilation
+result.
The direct mode will be disabled if any of the following holds:
*CCACHE_COMPILERCHECK* says something else)
* any standard error output generated by the preprocessor
+Based on the hash, the cached compilation result can be looked up directly in
+the cache.
+
COMPILING IN DIFFERENT DIRECTORIES
----------------------------------