ccache news
===========
+Unreleased 3.3.2
+----------------
+
+Bug fixes
+~~~~~~~~~
+
+- Fixed a regression in ccache 3.3 related to potentially bad content of
+ dependency files when compiling identical source code but with different
+ source paths.
+
++- Fixed a regression in ccache 3.3.1: ccache could get confused when using the
++ compiler option `-Wp,` to pass multiple options to the preprocessor,
++ resulting in missing dependency files from direct mode cache hits.
++
+
+ccache 3.3.1
+------------
+Release date: 2016-09-07
+
+Bug fixes
+~~~~~~~~~
+
+- Fixed a problem in the ``multiple `-arch` options'' support introduced in
+ 3.3. When using the direct mode (the default), different combinations of
+ `-arch` options were not detected properly.
+
+- Fixed an issue when compiler option `-Wp,-MT,path` is used instead of `-MT
+ path` (and similar for `-MF`, `-MP` and `-MQ`) and `run_second_cpp`
+ (`CCACHE_CPP2`) is enabled.
+
+
+ccache 3.3
+----------
+Release date: 2016-08-27
+
+Notes
+~~~~~
+
+- A C99-compatible compiler is now required to build ccache.
+
+
+New features and improvements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+- The configuration option `run_second_cpp` (`CCACHE_CPP2`) now defaults to
+ true. This improves ccache's out-of-the-box experience for compilers that
+ can't compile their own preprocessed output with the same outcome as if they
+ compiled the real source code directly, e.g. newer versions of GCC and Clang.
+
+- The configuration option `hash_dir` (`CCACHE_HASHDIR`) now defaults to true.
+
+- Added a new `ignore_headers_in_manifest` configuration option, which
+ specifies headers that should be ignored in the direct mode.
+
+- Added a new `prefix_command_cpp` (`CCACHE_PREFIX_CPP`) configuration option,
+ which specifies one or several prefixes to add to the command line ccache
+ uses when invoking the preprocessor.
+
+- Added a new `limit_multiple` (`CCACHE_LIMIT_MULTIPLE`) configuration option,
+ which specifies how much of the cache to remove when cleaning.
+
+- Added a new `keep_comments_cpp` (`CCACHE_COMMENTS`) configuration option,
+ which tells ccache not to discard the comments before hashing preprocessor
+ output. This can be used to check documentation with *-Wdocumentation*.
+
+- Added a new sloppiness option `no_system_headers`, which tells ccache not to
+ include system headers in manifest files.
+
+- Added a new statistics counter that tracks the number of performed cleanups
+ due to the cache size being over the limit. The value is shown in the output
+ of ``ccache -s''.
+
+- Added support for relocating debug info directory using `-fdebug-prefix-map`.
+ This allows for cache hits even when `hash_dir` is used in combination with
+ `base_dir`.
+
+- Added a new ``cache hit rate'' field to the output of ``ccache -s''.
+
+- Added support for caching compilation of assembler code produced by e.g.
+ ``gcc -S file.c''.
+
+- Added support for cuda including the -optf/--options-file option.
+
+- Added support for Fortran 77.
+
+- Added support for multiple `-arch` options to produce "fat binaries".
+
+- Multiple identical `-arch` arguments are now handled without bailing.
+
+- The concatenated form of some long compiler options is now recognized, for
+ example when using `-isystemPATH` instead of `-isystem PATH`.
+
+- If hard-linking is enabled and but fails (e.g. due to cross-device linking),
+ ccache now falls back to copying instead of running the compiler.
+
+- Made the `hash_dir` option only have effect when generating debug info.
+
+- ccache now knows how to convert absolute paths to relative paths inside
+ dependency files when using `base_dir`.
+
+- Improved parsing of `-g*` options.
+
+- Made ccache understand `-Wp,-D*` options.
+
+- ccache now understands the undocumented `-coverage` (only one dash) GCC
+ option.
+
+- Names of included files are no longer included in the hash of the compiler's
+ preprocessed output. This leads to more potential cache hits when not using
+ the direct mode.
+
+- Increased buffer size used when reading file data. This improves performance
+ slightly.
+
+
+Bug fixes
+~~~~~~~~~
+
+- Bail out on too hard compiler option `-P`.
+
+- Fixed clang test suite when running on Linux.
+
+- Fixed build and test for MinGW32 and Windows.
+
+
+ ccache 3.2.9
+ ----------------
+ Release date: 2016-09-28
+
+ Bug fixes
+ ~~~~~~~~~
+
+ - Fixed a regression in ccache 3.2.8: ccache could get confused when using the
+ compiler option `-Wp,` to pass multiple options to the preprocessor,
+ resulting in missing dependency files from direct mode cache hits.
+
+
ccache 3.2.8
------------
Release date: 2016-09-07
output_dep = make_relative_path(x_strdup(argv[i] + 9));
args_add(dep_args, argv[i]);
continue;
- } else if (str_startswith(argv[i], "-Wp,-M")) {
- // -MF, -MP, -MQ, -MT, etc. TODO: Make argument to MF/MQ/MT relative.
+ } else if (str_startswith(argv[i], "-Wp,-D")
+ && !strchr(argv[i] + 6, ',')) {
+ // Treat it like -D.
+ args_add(cpp_args, argv[i] + 4);
+ continue;
- /* TODO: Make argument to MF/MQ/MT relative. */
+ } else if (str_eq(argv[i], "-Wp,-MP")
+ || (strlen(argv[i]) > 8
+ && str_startswith(argv[i], "-Wp,-M")
+ && argv[i][7] == ','
+ && (argv[i][6] == 'F'
+ || argv[i][6] == 'Q'
+ || argv[i][6] == 'T')
+ && !strchr(argv[i] + 8, ','))) {
++ // TODO: Make argument to MF/MQ/MT relative.
args_add(dep_args, argv[i]);
continue;
} else if (conf->direct_mode) {