From: Joel Rosdahl Date: Wed, 28 Sep 2016 20:28:16 +0000 (+0200) Subject: Merge branch '3.2-maint' into 3.3-maint X-Git-Tag: v3.3.2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=e07daecbd4eab1c74726202e4bd0405f60fe354d;p=thirdparty%2Fccache.git Merge branch '3.2-maint' into 3.3-maint * 3.2-maint: Prepare for v3.2.9 Disable direct mode for "-Wp," with multiple preprocessor options --- e07daecbd4eab1c74726202e4bd0405f60fe354d diff --cc NEWS.txt index c33cd1c2f,2cd2b32eb..8d12214ae --- a/NEWS.txt +++ b/NEWS.txt @@@ -1,127 -1,18 +1,143 @@@ 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 diff --cc ccache.c index d91ecc3c9,ddbc822ec..c4070adee --- a/ccache.c +++ b/ccache.c @@@ -2440,13 -2249,15 +2440,20 @@@ cc_process_args(struct args *args, stru output_dep = make_relative_path(x_strdup(argv[i] + 9)); args_add(dep_args, argv[i]); continue; + } else if (str_startswith(argv[i], "-Wp,-D") + && !strchr(argv[i] + 6, ',')) { + // Treat it like -D. + 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. + } 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. */ ++ // TODO: Make argument to MF/MQ/MT relative. args_add(dep_args, argv[i]); continue; } else if (conf->direct_mode) {