===========
+Unreleased
+----------
+
+Bug fixes
+~~~~~~~~~
+
+- Made hash of cached result created with and without `CCACHE_CPP2` different.
+ This makes it possible to rebuild with `CCACHE_CPP2` set without having to
+ clear the cache to get new results.
+
+- Fixed a bug where ccache deleted clang diagnostics after compiler failures.
+
+
+ccache 3.2.1
+------------
+Release date: 2014-12-10
+
+
+Bug fixes
+~~~~~~~~~
+
+- Fixed regression in temporary file handling, which lead to incorrect
+ permissions for stats, manifest and ccache.conf files in the cache.
+
+- `CACHEDIR.TAG` files are now created in the [0-9a-f] subdirectories so that
+ ccache.conf is not lost in backups.
+
+- Made the default cache size suffix `G`, as previously documented.
+
+- `-fdiagnostics-color=auto` is now passed to the compiler even if stderr is
+ redirected. This fixes a problem when, for instance, a configure test probes
+ if the compiler (wrapped via ccache) supports `-fdiagnostics-color=auto`.
+
+- Added missing documentation for `max_files` and `max_size` configuration
+ options.
+
+
+ccache 3.2
+----------
+Release date: 2014-11-17
+
+
+New features and improvements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- Added support for configuring ccache via one or several configuration files
+ instead of via environment variables. Environment variables still have
+ priority but are no longer the recommended way of customizing ccache
+ behavior. See the manual for more information.
+
+- Added support for compiler error/warning messages with color.
+
+- Made creation of temporary directories and cache directories smarter to avoid
+ unnecessary `stat` calls.
+
+- Improved efficiency of the algorithm that scans for `__DATE_` and `__TIME__`
+ tokens in the hashed source code.
+
+- Added support for several binaries (separated by space) in `CCACHE_PREFIX`.
+
+- The `-c` option is no longer passed to the preprocessor. This fixes problems
+ with clang and Solaris's C++ compiler.
+
+- ccache no longer passes preprocessor options like `-D` and `-I` to the
+ compiler when compiling preprocessed output. This fixes warnings emitted by
+ clang.
+
+- Compiler options `-fprofile-generate`, `-fprofile-arcs`, `-fprofile-use` and
+ `-fbranch-probabilities` are now handled without bailing.
+
+- Added support for clang's `--serialize-diagnostic` option, storing the
+ diagnostic file (`.dia`) in the cache.
+
+- Added support for precompiled headers when using clang.
+
+- Added support for clang `.pth` (pretokenized header) files.
+
+- Changed the `-x` language option to use the new objective C standard for GCC
+ and clang.
+
+- On a cache miss, ccache now instructs the compiler to create the object file
+ at the real destination and then copies the file into the cache instead of
+ the other way around. This is needed to support compiler options like
+ `-fprofile-arcs` and `--serialize-diagnostics`.
+
+- ccache now checks that included files' ctimes aren't too new. This check can
+ be turned off by adding `include_file_ctime` to the ``ccache sloppiness''
+ setting.
+
+- Added possibility to get cache hits based on filename, size, mtime and ctime
+ only. On other words, source code files are not even read, only stat-ed. This
+ operation mode is opt-in by adding `file_stat_matches` to the ``ccache
+ sloppiness'' setting.
+
+- The filename part of options like `-Wp,-MDfilename` is no longer included in
+ the hash since the filename doesn't have any bearing on the result.
+
+- Added a ``read-only direct'' configuration setting, which is like the
+ ordinary read-only setting except that ccache will only try to retrieve
+ results from the cache using the direct mode, not the preprocessor mode.
+
+- The display and interpretation of cache size has been changed to use SI
+ units.
+
+- Default cache size is now 5 GB (was previously 1 GiB).
+
+- Added configuration option to set the compression level of compressed object
+ files in the cache.
+
+- Added support for `@file` and `-@file` arguments (reading options from a
+ file).
+
+- `-Wl,` options are no longer included in the hash since they don't affect
+ compilation.
+
+- Bail out on too hard compiler option `-Wp,-P`.
+
+- Optimized MD4 calculation code on little-endian systems.
+
+- Various improvements and fixes on win32.
+
+- Improved logging to the ccache log file.
+
+- Added `--dump-manifest` command-line option for debugging purposes.
+
+- Added `--with-bundled-zlib` configure option.
+
+- Upgraded bundled zlib to version 1.2.8.
+
+- Improved `dev.mk` to be more platform independent.
+
+- Made the test suite work with clang and gcc-llvm on OS X.
+
+- Various other improvements of the test suite.
+
+
+Bug fixes
+~~~~~~~~~
+
+- Any previous `.stderr` is now removed from the cache when recaching.
+
+- Fixed an issue when handling the `-arch` compiler option with an argument.
+
+- Fixed race condition when creating the initial cache directory.
+
+- Fixed test suite failures when `CC` is a ccache-wrapped compiler.
+
+
+ ccache 3.1.11
+ -------------
+ Release date: 2015-03-07
+
+
+ Bug fixes
+ ~~~~~~~~~
+
+ - Fixed bug which could result in false cache hits when source code contains
+ `'"'` followed by `" /*"` or `" //"` (with variations).
+
+ - Made hash of cached result created with and without `CCACHE_CPP2` different.
+ This makes it possible to rebuild with `CCACHE_CPP2` set without having to
+ clear the cache to get new results.
+
+ - Don't try to reset a non-existing stats file. This avoids ``No such file or
+ directory'' messages in the ccache log when the cache directory doesn't
+ exist.
+
++- Fixed a bug where ccache deleted clang diagnostics after compiler failures.
++
+
ccache 3.1.10
-------------
Release date: 2014-10-19
checkstat 'cache hit (preprocessed)' 0
checkstat 'cache miss' 2
+ testname="comment in strings"
+ $CCACHE -Cz >/dev/null
+ echo 'char *comment = " /* \\\\u" "foo" " */";' >comment.c
+ $CCACHE $COMPILER -c comment.c
+ checkstat 'cache hit (direct)' 0
+ checkstat 'cache hit (preprocessed)' 0
+ checkstat 'cache miss' 1
+ $CCACHE $COMPILER -c comment.c
+ checkstat 'cache hit (direct)' 1
+ checkstat 'cache hit (preprocessed)' 0
+ checkstat 'cache miss' 1
+ echo 'char *comment = " /* \\\\u" "goo" " */";' >comment.c
+ $CCACHE $COMPILER -c comment.c
+ checkstat 'cache hit (direct)' 1
+ checkstat 'cache hit (preprocessed)' 0
+ checkstat 'cache miss' 2
++
+ #################################################################
+ # Check that strange "#line" directives are handled.
+ testname="#line directives with troublesome files"
+ $CCACHE -Cz >/dev/null
+ cat <<EOF >strange.c
+int foo;
+EOF
+ for x in stdout tty sda hda; do
+ if [ -b /dev/$x ] || [ -c /dev/$x ]; then
+ echo "#line 1 \"/dev/$x\"" >> strange.c
+ fi
+ done
+ CCACHE_SLOPPINESS="$default_sloppiness include_file_mtime" $CCACHE $COMPILER -c strange.c
+ manifest=`find $CCACHE_DIR -name '*.manifest'`
+ if [ -n "$manifest" ]; then
+ data="`$CCACHE --dump-manifest $manifest | egrep '/dev/(stdout|tty|sda|hda'`"
+ if [ -n "$data" ]; then
+ test_failed "$manifest contained troublesome file(s): $data"
+ fi
+ fi
+
+ ##################################################################
+ # Test --dump-manifest output.
+ testname="--dump-manifest"
+ $CCACHE -Cz >/dev/null
+ $CCACHE $COMPILER test.c -c -o test.o
+ manifest=`find $CCACHE_DIR -name '*.manifest'`
+ $CCACHE --dump-manifest $manifest >manifest.dump
+
+ if grep 'Hash: e6b009695d072974f2c4d1dd7e7ed4fc' manifest.dump >/dev/null 2>&1 && \
+ grep 'Hash: e94ceb9f1b196c387d098a5f1f4fe862' manifest.dump >/dev/null 2>&1 && \
+ grep 'Hash: c2f5392dbc7e8ff6138d01608445240a' manifest.dump >/dev/null 2>&1; then
+ : OK
+ else
+ test_failed "unexpected output of --dump-manifest"
+ fi
}
basedir_suite() {