]> git.ipfire.org Git - thirdparty/ccache.git/commitdiff
Merge branch '3.2-maint' into 3.3-maint
authorJoel Rosdahl <joel@rosdahl.net>
Wed, 7 Sep 2016 19:09:45 +0000 (21:09 +0200)
committerJoel Rosdahl <joel@rosdahl.net>
Wed, 7 Sep 2016 19:09:45 +0000 (21:09 +0200)
* 3.2-maint:
  Prepare for v3.2.8
  Only pass -Wp,-MT and similar to the preprocessor

1  2 
NEWS.txt
ccache.c
test/test_argument_processing.c

diff --cc NEWS.txt
index c3434a3f89c0ae39f07e9752009af5e200a0f429,57451a490fdae93be98454b137d389358b4292ee..92ad7aaf73d6c797a701054f7f43df73f92cabdf
+++ b/NEWS.txt
  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 1af1b040ca6734b291db808a3fbb7301f0029184,5635cc15da8929fc976a9583bbbd09c6ec99e447..00e68369299609f95eb786e8868f3d997fc824df
+++ 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;
-                               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]);
Simple merge