Ccache 4.8.3
Bug fixes
Fixed various problems with parsing of MSVC response file (.rsp).
Fixed handling of NVCC -Xcompiler and --Werror options.
Fixed bookkeeping of files when hard linking or file cloning is enabled. In ccache 4.8–4.8.2 this could result in incorrect size/count statistics after automatic or explicit cleanup.
Build improvements
Made a workaround for GCC 12.3 bug 109241 where GCC fails to compile ccache.
Upgraded to xxHash 0.8.2, which fixes compilation of ccache with GCC 12 and -Og.
Ccache 4.8.2
Bug fixes
Fixed parsing of Windows drive letter in file URLs for remote storage.
Fixed a bug affecting depend mode with MSVC.
Ccache no longer passes -v to the preprocessor. This improves preprocessor mode hit rate when -v is on the compiler command line.
Made --trim-max-size accept 0 for no limit.
Build improvements
Made various fixes for Windows 64-bit MSBuild builds.
Silenced CMake warning for extracted timestamps.
Worked around problem with building ZStandard with Xcode.
Fixed undefined behavior (only triggered by unit tests) in util::read_file_part for zero count, making the build fail with _GLIBCXX_ASSERTIONS.
Documentation improvements
Clarified --evict-older-than semantics.
Test improvements
Fixed typo in “Directory is not hashed if using -gz” test.
Ccache 4.8.1
Bug fixes
Fixed an issue with the depend mode in combination with -- on the command line for Clang-based compilers.
Improved knowledge about MSVC debug flags so that non-debug /Z* options are once again supported.
Ccache no longer treats /Zi as unsupported for clang-cl.
Made the output format of ccache -k max_size parsable by ccache itself.
Build/CI improvements
Corrected ccache version in the macOS binary release.
Made it possible to build ccache with clang-cl on Windows.
Upgraded to doctest 2.4.11, thereby fixing a build issue on Solaris.
Documentation improvements
Added a remote file storage example with URL-encoded spaces.
Ccache 4.8
New features and improvements
Improved the automatic cache cleanup mechanism. Automatic cleanups are now performed on 1/256 of the cache instead of 1/16, thus making them much quicker (but naturally more frequent). Cleanups are coordinated between ccache processes so that at most one process will perform cleanup at a time. Also, the actual cache size will stay very close to the configured maximum size instead of staying around 90% as was the case before.
Added support for setting per-compilation configuration options on the command line. Example: ccache hash_dir=false gcc -c example.c.
Made it possible to disable ccache for a certain source code file by embedding the string ccache:disable in a comment near the top of the file.
Made ccache understand that an MSVC /Z7 option overrides an earlier /Z* option and thus is not too hard to cache.
Added a --recompress-threads command line option for selecting the number of CPU threads to use when recompressing the local cache.
Added --trim-recompress and --trim-recompress-threads command line options for recompressing file-based remote storage.
Added tmpfs, ufs and zfs to the list of supported filesystems on macOS and BSDs for the inode cache.
Improved progress bars for clean/clear/evict-style operations.
Improved printing of cache sizes in various outputs.
Activate debug logging for command mode options like --cleanup.
Added support for -Wp,-U<macro> in the direct mode.
Added quotes around arguments with space in logged command lines.
Added logging of executed command lines on Windows.
Made sure not to update the stats file when there are no incremented counters.
Improved actual disk size calculation on Windows.
Build/CI improvements
Added CI support for building macOS universal binaries.
Make it possible to force download of Zstd and Hiredis, e.g. with cmake -D ZSTD_FROM_INTERNET=ON […].
Bug fixes
Fixed an edge case where a non-temporal identifier is misidentified.
Fixed reporting of local/remote cache misses in depend mode.
Fixed parsing of backslashes in MSVC RSP files.
Fixed a crash in --show-log-stats when the stats log file doesn’t exist.
Fixed matching of base directory for MSVC. The base directory will now match case-insensitively with absolute paths in preprocessed output, or from /showIncludes in the depend mode case, when compiling with MSVC.
Fixed a problem where the original umask would be used when storing a remote cache result in the local cache.
Changed the inode cache implementation to use spinlocks instead of pthread mutexes. This makes the inode cache work on FreeBSD and similar systems.
Don’t treat -Wp,-D as interchangeable with -D.
Disable the inode cache if the filesystem risks getting full soon. This fixes a problem when the cache is on a filesystem where posix_fallocate isn’t reliable, like Btrfs with compression enabled.
Fixed performance of cache path relativization in preprocessed output, primarily on Windows where stat calls are relatively costly.
Fixed rare crash in the signal handler at process exit.
Fixed handling of Unix-style paths passed to MSVC.
Fixed so that the config options and command line are logged before trying to locate the compiler and exiting early.
Documentation improvements
Improved description of --set-config.
Fixed broken markup in the manual.
Added a note to the manual that stats = false will disable automatic cleanup.
Fix a bad reference to the “Remote storage backends” section.
The man page was lost in the update, due to needing asciidoctor.
However, it built (and thus caused a PLIST error) on machines with
asciidoctor installed. Depend on asciidoctor, rather than forcing it
off, since this package ought to have a man page.
Tested on NetBSD 9 amd64.
Ccache 4.7.4
Bug fixes
Fixed an inode cache race condition.
The default temporary directory is now $XDG_RUNTIME_DIR/ccache-tmp instead of a hardcoded /run/user/<UID>/ccache-tmp. If XDG_RUNTIME_DIR is not set, <cache_dir>/tmp is used. This avoids creating /run/user/<UID> on systems that don’t have it if compiling as root.
Added a fallback in case posix_fallocate returns EINVAL when creating the inode cache file.
Connection timeout for an HTTP connection is now reported as a timeout instead of an error.
Temporary files found in the cache are no longer counted in --show-compression.
Removed duplicate magic header in output from --inspect.
Ccache now properly waits for all recompression jobs to finish when there is no f subdirectory in the cache.
Other minor improvements
Improved inode cache logging.
Documentation improvements
Removed stray parenthesis.
Improved description of how header files are handled.
Added a hint about using -fno-pch-timestamp for precompiled headers with Clang.
Removed obsolete description of compiler type “pump”.
More https://ccache.dev/releasenotes.html
All checksums have been double-checked against existing RMD160 and
SHA512 hashes
Could not be committed due to merge conflict:
devel/py-traitlets/distinfo
The following distfiles were unfetchable (note: some may be only fetched
conditionally):
./devel/pvs/distinfo pvs-3.2-solaris.tgz
./devel/eclipse/distinfo eclipse-sourceBuild-srcIncluded-3.0.1.zip
ccache 3.7.12
Bug fixes
Coverage files (.gcno) produced by GCC 9+ when using -fprofile-dir=dir are now handled gracefully by falling back to running the compiler.
Fixed writing to log file larger than 2 GiB when running ccache compiled in 32-bit mode.
Other
Improved documentation about sharing a cache on NFS.
Fixed test case failures with old objdump versions.
Fixed test case failures with GCC 4.4.
ccache 3.7.11
Bug fixes
Added knowledge about -fprofile-{correction,reorder-functions,values}.
ccache now handles the Intel compiler option -xCODE (where CODE is a processor feature code) correctly.
Added support for NVCC’s -Werror and --Werror options.
Other
ccache’s “Directory is not hashed if using -gz[=zlib]” tests are now skipped for GCC 6.
ccache 3.7.10
Bug fixes
Improved handling of profiling options. ccache should now work correctly for profiling options like -fprofile-{generate,use}[=path] for GCC ≥ 9 and Clang as well as -fauto-profile[=path] and the Clang-specific -fprofile-instr-{generate,use}[=path] and -fprofile-sample-{use,accurate} options.
ccache now copies files directly from the cache to the destination file instead of via a temporary file. This avoids problems when using filenames long enough to be near the file system’s filename max limit.
When the hard-link mode is enabled, ccache now only uses hard links for object files, not other files like dependency files. This is because compilers unlink object files before writing to them but they don’t do that for dependency files, so the latter can become overwritten and therefore corrupted in the cache.
Fixed a glitch related to hard-link mode and an empty cache.
ccache now supports the ccache.conf file to be a symlink.
Temporary files are now deleted immediately on signals like SIGTERM and SIGINT instead of some time later in a cleanup phase.
Fixed a bug that affected ccache’s -o/--set-config option for the base_dir and cache_dir_levels keys.
ccache 3.7.9
Bug fixes
Fixed replacing of /dev/null when building as root with hard link mode enabled and using -o /dev/null.
Removed incorrect assertion resulting in “ccache: error: Internal error in format” when using -fdebug-prefix-map=X= with X equal to $PWD.
Other
Improved CUDA/NVCC support: Recognize -dc and -x cu options.
Improved name of temporary file used in NFS-safe unlink.
ccache 3.7.8
Bug fixes
Use $PWD instead of the real CWD (current working directory) when checking for CWD in preprocessed output. This fixes a problem when $PWD includes a symlink part and the user has set hash_dir = false.
Rewrote the Windows version of the lockfile routines. This should mitigate several problems with the old implementation.
If localtime_r fails the epoch time is now logged instead of garbage.
Other
Improved error message when a boolean environment variable has an invalid value.
Improved the regression fix in ccache 3.7.5 related to not passing compilation-only options to the preprocessor.
ccache’s PCH test suite now skips running the tests if it detects broken PCH compiler support.
Fixed unit test failure on Windows.
Fixed “stringop-truncation” build warning on Windows.
Improved “x_rename” implementation on Windows.
Improved removal of temporary file when rewriting absolute paths to relative in the dependency file.
Clarified “include_file_ctime sloppiness” in the Performance section in the manual.
ccache 3.7.7
Bug fixes
* Fixed a bug related to object file location in the dependency file (if using -MD or -MMD but not -MF and the build directory is not the same as the source directory then the object file location in the .d file would become incorrect). This fixes regression in ccache 3.7.5 introduced by the bug fix related to EDG-based compilers. Note that this removes support for EDG-based compilers again. (A better fix for this is planned for ccache 4.0.)
* Removed the unify mode since it has bugs and shortcomings that are non-trivial or impossible to fix: it doesn’t work with the direct mode, it doesn’t handle C++ raw strings correctly, it can give false cache hits for .incbin directives, it’s turned off when using -g and it can make line numbers in warning messages and __LINE__ macros incorrect.
* mtime and ctime values are now stored in the manifest files only when sloppy_file_stat is set. This avoids adding superfluous manifest file entries on direct mode cache misses.
* A “Result:” line is now always printed to the log.
* The “cache miss” statistics counter will now be updated for read-only cache misses, making it consistent with the cache hit case.
ccache 3.7.6
Bug fixes
The opt-in “file_macro sloppiness” mode has been removed so that the input file path now is always included in the direct mode hash. This fixes a bug that could result in false cache hits in an edge case when “file_macro sloppiness” is enabled and several identical source files include a relative header file with the same name but in different directories.
Statistics files are no longer lost when the filesystem of the cache is full.
Bail out on too hard Clang option -MJarg (in addition to the previous bailout of -MJ arg).
Properly handle color diagnostics in the depend mode as well.
3.7.5:
New features
Added support for -MF=arg (with an extra equal sign) as understood by EDG-based compilers.
Bug fixes
Fixed a regression in 3.7.2 that could result in a warning message instead of an error in an edge case related to usage of “-Werror”.
An implicit -MQ is now passed to the preprocessor only if the object file extension is non-standard. This will make it easier to use EDG-based compilers (e.g. GHS) which don’t understand -MQ. (This is a bug fix of the corresponding improvement implemented in ccache 3.4.)
ccache now falls back to running the real compiler instead of failing fataly if an internal temporary file is missing after compilation.
Fixed a crash if localtime returns null pointer in localtime_r replacement.
Fixed header file dependency tracking when building ccache itself.
Fixed warning during configure in out-of-tree build in developer mode.
ccache 3.7.4
Improvements
Added support for the -gz[=type] compiler option (previously ccache would think that “-gz” alone would enable debug information, thus potentially including the current directory in the hash).
Added support for converting paths like “/c/users/...” into relative paths on Windows.
ccache 3.7.3
Bug fixes
The cache size (which is counted in “used disk blocks”) is now correct on filesystems that use more or less disk blocks than conventional filesystems, e.g. ecryptfs or btrfs/zfs with transparent compression. This also fixes a related problem with ccache’s own test suite when run on such file systems.
Fixed a regression in 3.7.2 when using the compiler option “-Werror” and then “-Wno-error” later on the command line.
Bug fixes
* The compiler option -gdwarf* no longer forces “run_second_cpp = true”.
* Added verification that the value passed to the -o/--set-config option
is valid.
* Fixed detection of precompiled headers in the depend mode.
* Bail out on too hard Clang option -ftime-trace.
* ccache now updates the correct stats file when adding/updating manifest
files.
This bug previously made the file and size statistics counters incorrect
over time.
* Fixed warnings from Clang about unused arguments during preprocessing.
* Unknown manifest versions are now handled gracefully in --dump-manifest.
* Fixed make check with “funny” locales.
Documentation
* Added a hint about not running autogen.sh when building from a release
archive.
* Mention that xsltproc is needed when building from the source repository.
Changes 3.7.1:
Fixed a problem when using the compiler option -MF /dev/null.
Long commandlines are now handled gracefully on Windows by using the @file syntax to avoid hitting the commandline size limit.
Fixed complaint from GCC 9’s -Werror=format-overflow when compiling ccache itself.
Changes 3.7:
Fixed crash when the debug mode is enabled and the output file is in a non-writable directory, e.g. when the output file is /dev/null.
Fixed an issue when printing very large log messages to the debug log.
Fixed bugs related to support for -gsplit-dwarf. Previously ccache could produce an incorrect link to the .dwo file in the .o file.
Compilations with /dev/null as the input file are now cached.
ccache has learned how to contruct the object filename if no -o option is given and the source filename does not include a . or ends with a ..
Fixed a temporary file leak when the depend mode is enabled and the compiler produces standard error output.
Fixed a bug in the depend mode where a manifest hash only could be associated with one set of header dependencies.
Manifest files did not get marked as used on direct cache hits, so the LRU cache cleanup would incorrectly remove them eventually. This has been fixed.
The rewriting of absolute paths into relative paths in the dependency file has been enabled in the depend mode as well.
ccache now ignores unknown keys in configuration files for forward compatibility.
Rearranged command-line options into sections in the help text.
Documented the previously undocumented --dump-manifest and --hash-file options (only useful for debugging ccache itself).
Added missing documentation for the command-line option -k/--get-config added in ccache 3.5.
Renamed the --print-config command to --show-config.
Added a new --print-stats command that prints statistics counters in machine-parsable (tab-separated) format.
ccache no longer creates a missing output directory, thus mimicking the compiler behavior for -o out/obj.o when “out” doesn’t exist.
-fdebug-prefix-map=ARG, -ffile-prefix-map=ARG and -fmacro-prefix-map=ARG are now included in the hash, but only the part before “ARG”. This fixes a bug where compiler feature detection of said flags would not work correctly with ccache.
Bail out on too hard compiler option -gtoggle.
Bail out on too hard Clang options --analyze and -analyze.
Improved debug logging of file hashes in depend mode.
Improved handling of various -g* options. In particular, ccache now understands that -g0 cancels out previous -g* options.
Worked around a problem with Automake related to .d files when using the hard link mode.
Added opt-in (at configure time) support for enabling trace logs for profiling ccache itself. See doc/DEVELOPER.md in the code tree for more information
Removed support for Fortran 77 again. Some Fortran support was added in ccache 3.3, but the implementation did not work when Fortran modules are involved.
ccache 3.6
ccache now has an opt-in “depend mode”. When enabled, ccache never executes the preprocessor, which results in much lower cache miss overhead at the expense of a lower potential cache hit rate. The depend mode is only possible to use when the compiler option -MD or -MMD is used.
Added support for GCC’s -ffile-prefix-map option. The -fmacro-prefix-map option is now also skipped from the hash.
Added support for multiple -fsanitize-blacklist arguments.
ccache now includes the environment variables LANG, LC_ALL, LC_CTYPE and LC_MESSAGES in the hash since they may affect localization of compiler warning messages. Set sloppiness to locale to opt out of this.
Fixed a problem due to Clang overwriting the output file when compiling an assembler file.
Clarified the manual to explain the reasoning behind the “file_macro” sloppiness setting in a better way.
ccache now handles several levels of nonexistent directories when rewriting absolute paths to relative.
A new sloppiness setting clang_index_store makes ccache skip the Clang compiler option -index-store-path and its argument when computing the manifest hash. This is useful if you use Xcode, which uses an index store path derived from the local project path. Note that the index store won’t be updated correctly on cache hits if you enable this option.
Rename sloppiness no_system_headers to system_headers for consistency with other options. no_system_headers can still be used as an (undocumented) alias.
The GCC variables “DEPENDENCIES_OUTPUT” and “SUNPRO_DEPENDENCIES” are now supported correctly.
The algorithm that scans for __DATE_ and __TIME__ tokens in the hashed source code now doesn’t produce false positives for tokens where __DATE__ or __TIME__ is a substring.
ccache 3.5.1:
Added missing getopt_long.c source file to release archive.
Fixed (harmless) compiler warnings when building ccache object files.
CFLAGS is no longer passed to the linker when linking ccache.
Improved development mode build flags.
ccache 3.5
Added a boolean debug (CCACHE_DEBUG) configuration option. When enabled, ccache will create per-object debug files that are helpful e.g. when debugging unexpected cache misses. See also the new “Cache debugging” section in the manual.
Renamed CCACHE_CC to CCACHE_COMPILER (keeping the former as a deprecated alias).
Added a new command-line option -k/--get-config that prints the value of a config key.
It is now possible to let ccache hash a precomputed checksum file instead of the full content of a precompiled header. This can save time for large precompiled headers. Note that the build system needs to keep the checksum file in sync with the precompiled header for this to work.
Improved performance substantially when using hash_dir = false on platforms like macOS where getcwd() is slow.
Added “stats updated” timestamp in ccache -s output. This can be useful if you wonder whether ccache actually was used for your last build.
Renamed “stats zero time” to “stats zeroed” and documented it. The counter is also now only present in ccache -s output when ccache -z actually has been called.
The content of the -fsanitize-blacklist file is now included in the hash, so updates to the file will now correctly result in separate cache entries.
It’s now possible to opt out of building and installing man pages when running make install in the source repository.
If the compiler type can’t be detected (e.g. if it is named cc), use safer defaults that won’t trip up Clang.
Made the ccache test suite work on FreeBSD.
Added file_stat_matches_ctime option to disable ctime check if file_stat_matches is enabled.
Made “./configure --without-bundled-zlib” do what’s intended.
ccache 3.4.3
Bug fixes
Fixed a race condition when creating the initial config file in the cache directory.
Bail out on too hard clang option -MJ.
Bail out on too hard option -save-temps=obj.
Handle separate parameter to clang option -target correctly.
Upgraded bundled zlib to version 1.2.11.
ccache 3.4.2
Bug fixes:
The cleanup algorithm has been fixed to not misbehave when files are removed by another process while the cleanup process is running. Previously, too many files could be removed from the cache if multiple cleanup processes were triggered at the same time, in extreme cases trimming the cache to a much smaller size than the configured limits.
Correctly hash preprocessed headers located in a “.gch directory”. Previously, ccache would not pick up changes to such precompiled headers, risking false positive cache hits.
Fixed build failure when using the bundled zlib sources.
ccache 3.3.5 added a workaround for not triggering Clang errors when a precompiled header’s dependency has an updated timestamp (but identical content). That workaround is now only applied when the compiler is Clang.
Made it possible to perform out-of-source builds in dev mode again.
ccache 3.4.1
Bug fixes
Fixed printing of version number in ccache --version.
ccache 3.4
New features and enhancements
The compiler option form --sysroot arg is now handled like the documented --sysroot=arg form.
Added support for caching .su files generated by GCC flag -fstack-usage.
ccache should now work with distcc’s “pump” wrapper.
The optional unifier is no longer disabled when the direct mode is enabled.
Added support for nvcc compiler options --compiler-bindir/-ccbin, --output-directory/-odir and --libdevice-directory/-ldir.
Boolean environment variable settings no longer accept the following (case-insensitive) values: 0, false, disable and no. All other values are accepted and taken to mean “true”. This is to stop users from setting e.g. CCACHE_DISABLE=0 and then expect the cache to be used.
Improved support for run_second_cpp = false: If combined with passing -fdirectives-only (GCC) or frewrite-includes (Clang) to the compiler, diagnostics warnings and similar will be correct.
An implicit -MQ is now passed to the preprocessor only if the object file extension is non-standard. This should make it easier to use EDG-based compilers (e.g. GHS) which don’t understand -MQ.
ccache now treats an unreadable configuration file just like a missing configuration file.
Documented more pitfalls with enabling hard_links (CCACHE_HARDLINK).
Documented caveats related to colored warnings from compilers.
Bug fixes
File size and number counters are now updated correctly when files are overwritten in the cache, e.g. when using CCACHE_RECACHE.
run_second_cpp is now forced for nvcc.
Fixed how the nvcc options -optf and -odir are handled.
ccache 3.3.6
New features and improvements
- Improved instructions on how to get cache hits between different working
directories.
Bug fixes
- Fixed regression in ccache 3.3.5 related to the `UNCACHED_ERR_FD` feature.
ccache 3.3.5
New features and improvements
* Documented how automatic cache cleanup works.
Bug fixes
* Fixed a regression where the original order of debug options could be lost. This reverts the “Improved parsing of -g* options” feature in ccache 3.3.
* Multiple -fdebug-prefix-map options should now be handled correctly.
* Fixed matching of directories in the ignore_headers_in_manifest configuration option.
* Fixed detection of missing argument to -opt/--options-file.
* ccache now bails out when building a precompiled header if any of the corresponding header files have an updated timestamp. This fixes complaints from clang.
* Fixed a bug related to erroneously storing a dependency file with absolute paths in the cache on a preprocessed hit.
* ccache -c/--cleanup now works like documented: it just recalculates size counters and trims the cache to not exceed the max size and file number limits. Previously, the forced cleanup took “limit_multiple” into account, so that ccache -c/--cleanup by default would trim the cache to 80% of the max limit.
* ccache no longer ignores linker arguments for clang since clang warns about them.
* Plugged a couple of file descriptor leaks.
* Fixed a bug where ccache would skip hashing the compiler argument following a -fno-working-directory, -fworking-directory, -nostdinc, -nostdinc++, -remap or -trigraphs option in preprocessor mode.
New features and improvements:
* Documented the different cache statistics counters.
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. This was only partially fixed in 3.3.2 and reverts the new “Names of included files are no longer included in the hash of the compiler’s preprocessed output” feature in 3.3.
* Corrected statistics counter for -optf/--options-file failure.
* Fixed undefined behavior warnings in ccache found by -fsanitize=undefined.
* 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.
* 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.7
------------
Release date: 2016-07-20
Bug fixes
~~~~~~~~~
- Fixed a bug which could lead to false cache hits for compiler command lines
with a missing argument to an option that takes an argument.
- ccache now knows how to work around a glitch in the output of GCC 6's
preprocessor.
ccache 3.2.6
------------
Release date: 2016-07-12
Bug fixes
~~~~~~~~~
- Fixed build problem on QNX, which lacks ``SA_RESTART''.
- Bail out on compiler option `-fstack-usage` since it creates a `.su` file
which ccache currently doesn't handle.
- Fixed a bug where (due to ccache rewriting paths) the compiler could choose
incorrect include files if `CCACHE_BASEDIR` is used and the source file path
is absolute and is a symlink.
New features and improvements
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Only pass clang-specific `-stdlib=` to the preprocessor.
- Improved handling of stale NFS handles.
- Made it harder to misinterpret documentation of boolean environment settings'
semantics.
Bug fixes
~~~~~~~~~
- Include m4 files used by configure.ac in the source dist archives.
- Corrected "Performance" section in the manual regarding `__DATE_`, `__TIME__`
and `__FILE__` macros.
- Fixed build on Solaris 10+ and AIX 7.
- Fixed failure to create directories on QNX.
- Don't (try to) update manifest file in ``read-only'' and ``read-only direct''
modes.
- Fixed a bug in caching of `stat` system calls in ``file_stat_matches
sloppiness mode''.
- Fixed bug in hashing of clang plugins, leading to unnecessary cache misses.
- Fixed --print-config to show ``pch_defines sloppiness''.
- The man page is now built when running ``make install'' from Git repository
sources.