From: Joel Rosdahl Date: Wed, 7 Sep 2016 19:09:45 +0000 (+0200) Subject: Merge branch '3.2-maint' into 3.3-maint X-Git-Tag: v3.3.1~3 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ec7329d3d01f9bfe6aeb9c19562685f96ba0c763;p=thirdparty%2Fccache.git Merge branch '3.2-maint' into 3.3-maint * 3.2-maint: Prepare for v3.2.8 Only pass -Wp,-MT and similar to the preprocessor --- ec7329d3d01f9bfe6aeb9c19562685f96ba0c763 diff --cc NEWS.txt index c3434a3f8,57451a490..92ad7aaf7 --- a/NEWS.txt +++ b/NEWS.txt @@@ -1,101 -1,22 +1,126 @@@ 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 diff --cc ccache.c index 1af1b040c,5635cc15d..00e683692 --- a/ccache.c +++ b/ccache.c @@@ -2427,17 -2249,24 +2427,25 @@@ 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(dep_args, argv[i] + 4); ++ 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. */ ++ // -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]);