ccache news
===========
++Unreleased ccache 3.3.1
++-----------------------
++
++Bug fixes
++~~~~~~~~~
++
++- 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.8
+ ------------
+ Release date: 2016-09-07
+
+ Bug fixes
+ ~~~~~~~~~
+
+ - 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 now understands the undocumented `-coverage` (only one dash) GCC
+ option.
+
+
ccache 3.2.7
------------
Release date: 2016-07-20
output_dep = make_relative_path(x_strdup(argv[i] + 9));
args_add(dep_args, argv[i]);
continue;
- args_add(dep_args, argv[i] + 4);
+ } else if (str_startswith(argv[i], "-Wp,-D")
+ && !strchr(argv[i] + 6, ',')) {
+ // Treat it like -D.
- /* -MF, -MP, -MQ, -MT, etc. TODO: Make argument to MF/MQ/MT
- * relative. */
++ args_add(cpp_args, argv[i] + 4);
++ continue;
+ } else if (str_startswith(argv[i], "-Wp,-M")) {
++ // -MF, -MP, -MQ, -MT, etc. TODO: Make argument to MF/MQ/MT relative.
+ args_add(dep_args, argv[i]);
continue;
} else if (conf->direct_mode) {
- /*
- * -Wp, can be used to pass too hard options to
- * the preprocessor. Hence, disable direct
- * mode.
- */
+ // -Wp, can be used to pass too hard options to the preprocessor.
+ // Hence, disable direct mode.
cc_log("Unsupported compiler option for direct mode: %s", argv[i]);
conf->direct_mode = false;
}
- /* Any other -Wp,* arguments are only relevant for the preprocessor. */
+
++ // Any other -Wp,* arguments are only relevant for the preprocessor.
+ args_add(cpp_args, argv[i]);
+ continue;
}
if (str_eq(argv[i], "-MP")) {
args_add(dep_args, argv[i]);