1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
\r
2 "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
\r
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
\r
5 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
\r
6 <meta name="generator" content="AsciiDoc 8.6.3" />
\r
7 <title>ccache news</title>
\r
8 <style type="text/css">
\r
9 /* Sans-serif font. */
\r
10 h1, h2, h3, h4, h5, h6,
\r
11 div.title, caption.title,
\r
12 thead, p.table.header,
\r
14 span#author, span#revnumber, span#revdate, span#revremark,
\r
16 font-family: Arial,Helvetica,sans-serif;
\r
21 font-family: Georgia,"Times New Roman",Times,serif;
\r
24 /* Monospace font. */
\r
30 margin: 1em 5% 1em 5%;
\r
35 text-decoration: underline;
\r
56 h1, h2, h3, h4, h5, h6 {
\r
59 margin-bottom: 0.5em;
\r
64 border-bottom: 2px solid silver;
\r
81 border: 1px solid silver;
\r
86 margin-bottom: 0.5em;
\r
92 ul > li { color: #aaa; }
\r
93 ul > li > * { color: black; }
\r
107 span#revnumber, span#revdate, span#revremark {
\r
112 border-top: 2px solid silver;
\r
113 padding-top: 0.5em;
\r
118 padding-bottom: 0.5em;
\r
120 div#footer-badges {
\r
122 padding-bottom: 0.5em;
\r
127 margin-bottom: 1.5em;
\r
129 div.tableblock, div.imageblock, div.exampleblock, div.verseblock,
\r
130 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
\r
131 div.admonitionblock {
\r
133 margin-bottom: 1.5em;
\r
135 div.admonitionblock {
\r
137 margin-bottom: 2.0em;
\r
142 div.content { /* Block element content. */
\r
146 /* Block element titles. */
\r
147 div.title, caption.title {
\r
152 margin-bottom: 0.5em;
\r
158 td div.title:first-child {
\r
161 div.content div.title:first-child {
\r
164 div.content + div.title {
\r
168 div.sidebarblock > div.content {
\r
169 background: #ffffee;
\r
170 border: 1px solid #dddddd;
\r
171 border-left: 4px solid #f0f0f0;
\r
175 div.listingblock > div.content {
\r
176 border: 1px solid #dddddd;
\r
177 border-left: 5px solid #f0f0f0;
\r
178 background: #f8f8f8;
\r
182 div.quoteblock, div.verseblock {
\r
183 padding-left: 1.0em;
\r
184 margin-left: 1.0em;
\r
186 border-left: 5px solid #f0f0f0;
\r
190 div.quoteblock > div.attribution {
\r
191 padding-top: 0.5em;
\r
195 div.verseblock > pre.content {
\r
196 font-family: inherit;
\r
197 font-size: inherit;
\r
199 div.verseblock > div.attribution {
\r
200 padding-top: 0.75em;
\r
203 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
\r
204 div.verseblock + div.attribution {
\r
208 div.admonitionblock .icon {
\r
209 vertical-align: top;
\r
212 text-decoration: underline;
\r
214 padding-right: 0.5em;
\r
216 div.admonitionblock td.content {
\r
217 padding-left: 0.5em;
\r
218 border-left: 3px solid #dddddd;
\r
221 div.exampleblock > div.content {
\r
222 border-left: 3px solid #dddddd;
\r
223 padding-left: 0.5em;
\r
226 div.imageblock div.content { padding-left: 0; }
\r
227 span.image img { border-style: none; }
\r
228 a.image:visited { color: white; }
\r
232 margin-bottom: 0.8em;
\r
237 font-style: normal;
\r
240 dd > *:first-child {
\r
245 list-style-position: outside;
\r
248 list-style-type: decimal;
\r
251 list-style-type: lower-alpha;
\r
254 list-style-type: upper-alpha;
\r
257 list-style-type: lower-roman;
\r
260 list-style-type: upper-roman;
\r
263 div.compact ul, div.compact ol,
\r
264 div.compact p, div.compact p,
\r
265 div.compact div, div.compact div {
\r
267 margin-bottom: 0.1em;
\r
270 div.tableblock > table {
\r
271 border: 3px solid #527bbd;
\r
273 thead, p.table.header {
\r
286 /* Because the table frame attribute is overriden by CSS in most browsers. */
\r
287 div.tableblock > table[frame="void"] {
\r
288 border-style: none;
\r
290 div.tableblock > table[frame="hsides"] {
\r
291 border-left-style: none;
\r
292 border-right-style: none;
\r
294 div.tableblock > table[frame="vsides"] {
\r
295 border-top-style: none;
\r
296 border-bottom-style: none;
\r
302 margin-bottom: 0.8em;
\r
305 padding-bottom: 15px;
\r
307 dt.hdlist1.strong, td.hdlist1.strong {
\r
311 vertical-align: top;
\r
312 font-style: normal;
\r
313 padding-right: 0.8em;
\r
317 vertical-align: top;
\r
319 div.hdlist.compact tr {
\r
325 background: yellow;
\r
328 .footnote, .footnoteref {
\r
332 span.footnote, span.footnoteref {
\r
333 vertical-align: super;
\r
337 margin: 20px 0 20px 0;
\r
338 padding: 7px 0 0 0;
\r
341 #footnotes div.footnote {
\r
347 border-top: 1px solid silver;
\r
356 padding-right: 0.5em;
\r
357 padding-bottom: 0.3em;
\r
358 vertical-align: top;
\r
360 div.colist td img {
\r
365 div#footer-badges { display: none; }
\r
369 margin-bottom: 2.5em;
\r
377 margin-bottom: 0.1em;
\r
380 div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
\r
398 <script type="text/javascript">
\r
400 window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}
\r
401 var asciidoc = { // Namespace.
\r
403 /////////////////////////////////////////////////////////////////////
\r
404 // Table Of Contents generator
\r
405 /////////////////////////////////////////////////////////////////////
\r
407 /* Author: Mihai Bazon, September 2002
\r
408 * http://students.infoiasi.ro/~mishoo
\r
410 * Table Of Content generator
\r
413 * Feel free to use this script under the terms of the GNU General Public
\r
414 * License, as long as you do not remove or alter this notice.
\r
417 /* modified by Troy D. Hanson, September 2006. License: GPL */
\r
418 /* modified by Stuart Rackham, 2006, 2009. License: GPL */
\r
420 // toclevels = 1..4.
\r
421 toc: function (toclevels) {
\r
423 function getText(el) {
\r
425 for (var i = el.firstChild; i != null; i = i.nextSibling) {
\r
426 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
\r
428 else if (i.firstChild != null)
\r
429 text += getText(i);
\r
434 function TocEntry(el, text, toclevel) {
\r
437 this.toclevel = toclevel;
\r
440 function tocEntries(el, toclevels) {
\r
441 var result = new Array;
\r
442 var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');
\r
443 // Function that scans the DOM tree for header elements (the DOM2
\r
444 // nodeIterator API would be a better technique but not supported by all
\r
446 var iterate = function (el) {
\r
447 for (var i = el.firstChild; i != null; i = i.nextSibling) {
\r
448 if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
\r
449 var mo = re.exec(i.tagName);
\r
450 if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
\r
451 result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
\r
461 var toc = document.getElementById("toc");
\r
462 var entries = tocEntries(document.getElementById("content"), toclevels);
\r
463 for (var i = 0; i < entries.length; ++i) {
\r
464 var entry = entries[i];
\r
465 if (entry.element.id == "")
\r
466 entry.element.id = "_toc_" + i;
\r
467 var a = document.createElement("a");
\r
468 a.href = "#" + entry.element.id;
\r
469 a.appendChild(document.createTextNode(entry.text));
\r
470 var div = document.createElement("div");
\r
471 div.appendChild(a);
\r
472 div.className = "toclevel" + entry.toclevel;
\r
473 toc.appendChild(div);
\r
475 if (entries.length == 0)
\r
476 toc.parentNode.removeChild(toc);
\r
480 /////////////////////////////////////////////////////////////////////
\r
481 // Footnotes generator
\r
482 /////////////////////////////////////////////////////////////////////
\r
484 /* Based on footnote generation code from:
\r
485 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
\r
488 footnotes: function () {
\r
489 var cont = document.getElementById("content");
\r
490 var noteholder = document.getElementById("footnotes");
\r
491 var spans = cont.getElementsByTagName("span");
\r
494 for (i=0; i<spans.length; i++) {
\r
495 if (spans[i].className == "footnote") {
\r
497 // Use [\s\S] in place of . so multi-line matches work.
\r
498 // Because JavaScript has no s (dotall) regex flag.
\r
499 note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
\r
500 noteholder.innerHTML +=
\r
501 "<div class='footnote' id='_footnote_" + n + "'>" +
\r
502 "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
\r
503 n + "</a>. " + note + "</div>";
\r
504 spans[i].innerHTML =
\r
505 "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
\r
506 "' title='View footnote' class='footnote'>" + n + "</a>]";
\r
507 var id =spans[i].getAttribute("id");
\r
508 if (id != null) refs["#"+id] = n;
\r
512 noteholder.parentNode.removeChild(noteholder);
\r
514 // Process footnoterefs.
\r
515 for (i=0; i<spans.length; i++) {
\r
516 if (spans[i].className == "footnoteref") {
\r
517 var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
\r
518 href = href.match(/#.*/)[0]; // Because IE return full URL.
\r
520 spans[i].innerHTML =
\r
521 "[<a href='#_footnote_" + n +
\r
522 "' title='View footnote' class='footnote'>" + n + "</a>]";
\r
532 <body class="article">
\r
534 <h1>ccache news</h1>
\r
535 <span id="revnumber">version 3.1.6</span>
\r
537 <div id="toctitle">Table of Contents</div>
538 <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
542 <div class="sect1">
\r
543 <h2 id="_ccache_3_1_6">ccache 3.1.6</h2>
\r
544 <div class="sectionbody">
\r
545 <div class="paragraph"><p>Release date: 2011-08-21</p></div>
\r
546 <div class="sect2">
\r
547 <h3 id="_new_features_and_improvements">New features and improvements</h3>
\r
548 <div class="ulist"><ul>
\r
551 Rewrite argument to --sysroot if CCACHE_BASEDIR is used.
\r
556 <div class="sect2">
\r
557 <h3 id="_bug_fixes">Bug fixes</h3>
\r
558 <div class="ulist"><ul>
\r
561 Don’t crash if getcwd() fails.
\r
566 Fixed alignment of "called for preprocessing" counter.
\r
573 <div class="sect1">
\r
574 <h2 id="_ccache_3_1_5">ccache 3.1.5</h2>
\r
575 <div class="sectionbody">
\r
576 <div class="paragraph"><p>Release date: 2011-05-29</p></div>
\r
577 <div class="sect2">
\r
578 <h3 id="_new_features_and_improvements_2">New features and improvements</h3>
\r
579 <div class="ulist"><ul>
\r
582 Added a new statistics counter named “called for preprocessing”.
\r
587 The original command line is now logged to the file specified with
\r
588 <tt>CCACHE_LOGFILE</tt>.
\r
593 Improved error logging when system calls fail.
\r
598 Added support for rewriting absolute paths in <tt>-F</tt>/<tt>-iframework</tt> GCC
\r
604 Improved order of statistics counters in <tt>ccache -s</tt> output.
\r
609 <div class="sect2">
\r
610 <h3 id="_bug_fixes_2">Bug fixes</h3>
\r
611 <div class="ulist"><ul>
\r
614 The <tt>-MF</tt>/<tt>-MT</tt>/<tt>-MQ</tt> options with concatenated argument are now handled
\r
615 correctly when they are last on the command line.
\r
620 ccache is now bug compatible with GCC for the <tt>-MT</tt>/<tt>-MQ</tt> options with
\r
621 concatenated arguments.
\r
626 Fixed a minor memory leak.
\r
631 Systems that lack (and don’t need to be linked with) libm are now
\r
639 <div class="sect1">
\r
640 <h2 id="_ccache_3_1_4">ccache 3.1.4</h2>
\r
641 <div class="sectionbody">
\r
642 <div class="paragraph"><p>Release date: 2011-01-09</p></div>
\r
643 <div class="sect2">
\r
644 <h3 id="_bug_fixes_3">Bug fixes</h3>
\r
645 <div class="ulist"><ul>
\r
648 Made a work-around for a bug in gzputc() in zlib 1.2.5.
\r
653 Corrupt manifest files are now removed so that they won’t block direct
\r
659 ccache now copes with file systems that don’t know about symbolic links.
\r
664 The file handle in now correctly closed on write error when trying to
\r
665 create a cache dir tag.
\r
672 <div class="sect1">
\r
673 <h2 id="_ccache_3_1_3">ccache 3.1.3</h2>
\r
674 <div class="sectionbody">
\r
675 <div class="paragraph"><p>Release date: 2010-11-28</p></div>
\r
676 <div class="sect2">
\r
677 <h3 id="_bug_fixes_4">Bug fixes</h3>
\r
678 <div class="ulist"><ul>
\r
681 The -MFarg, -MTarg and -MQarg compiler options (i.e, without space
\r
682 between option and argument) are now handled correctly.
\r
687 <div class="sect2">
\r
688 <h3 id="_other">Other</h3>
\r
689 <div class="ulist"><ul>
\r
692 Portability fixes for HP-UX 11.00 and other esoteric systems.
\r
699 <div class="sect1">
\r
700 <h2 id="_ccache_3_1_2">ccache 3.1.2</h2>
\r
701 <div class="sectionbody">
\r
702 <div class="paragraph"><p>Release date: 2010-11-21</p></div>
\r
703 <div class="sect2">
\r
704 <h3 id="_bug_fixes_5">Bug fixes</h3>
\r
705 <div class="ulist"><ul>
\r
708 Bail out on too hard compiler options <tt>-fdump-*</tt>.
\r
713 NULL return values from malloc/calloc of zero bytes are now handled
\r
719 Fixed issue when parsing precompiler output on AIX.
\r
724 <div class="sect2">
\r
725 <h3 id="_other_2">Other</h3>
\r
726 <div class="ulist"><ul>
\r
729 Improved documentation on which information is included in the hash sum.
\r
734 Made the “too new header file” test case work on file systems with
\r
735 unsynchronized clocks.
\r
740 The test suite now also works on systems that lack a /dev/zero.
\r
747 <div class="sect1">
\r
748 <h2 id="_ccache_3_1_1">ccache 3.1.1</h2>
\r
749 <div class="sectionbody">
\r
750 <div class="paragraph"><p>Release date: 2010-11-07</p></div>
\r
751 <div class="sect2">
\r
752 <h3 id="_bug_fixes_6">Bug fixes</h3>
\r
753 <div class="ulist"><ul>
\r
756 ccache now falls back to preprocessor mode when a non-regular include
\r
757 file (device, socket, etc) has been detected so that potential hanging
\r
758 due to blocking reads is avoided.
\r
763 CRC errors are now detected when decompressing compressed files in the
\r
769 Fixed potential object file corruption race on NFS.
\r
774 Minor documentation corrections.
\r
779 Fixed configure detection of ar.
\r
784 ccache development version (set by dev.mk) now works with gits whose
\r
785 <tt>describe</tt> command doesn’t understand <tt>--dirty</tt>.
\r
790 <div class="sect2">
\r
791 <h3 id="_other_3">Other</h3>
\r
792 <div class="ulist"><ul>
\r
795 Minor debug log message improvements.
\r
802 <div class="sect1">
\r
803 <h2 id="_ccache_3_1">ccache 3.1</h2>
\r
804 <div class="sectionbody">
\r
805 <div class="paragraph"><p>Release date: 2010-09-16</p></div>
\r
806 <div class="sect2">
\r
807 <h3 id="_new_features_and_improvements_3">New features and improvements</h3>
\r
808 <div class="ulist"><ul>
\r
811 Added support for hashing the output of a custom command (e.g.
\r
812 <tt>%compiler% --version</tt>) to identify the compiler instead of stat-ing or
\r
813 hashing the compiler binary. This can improve robustness when the
\r
814 compiler (as seen by ccache) actually isn’t the real compiler but another
\r
820 Added support for caching compilations that use precompiled headers. (See
\r
821 the manual for important instructions regarding this.)
\r
826 Locking of the files containing statistics counters is now done using
\r
827 symlinks instead of POSIX locks. This should make ccache behave a lot
\r
828 better on file systems where POSIX locks are slow or broken (e.g. NFS on
\r
834 Manifest files are now updated without the need of taking locks.
\r
839 Updates of statistics counters are now always done in one of the
\r
840 sub-level statistics files. This reduces lock contention, which
\r
841 especially improves performance on slow NFS mounts.
\r
846 Reading and writing of statistics counters has been made
\r
847 forward-compatible (unknown counters are retained).
\r
852 Files are now read without using mmap(). This has two benefits: it’s more
\r
853 robust against file changes during reading and it improves performance on
\r
854 poor systems where mmap() doesn’t use the disk cache.
\r
859 Added <tt>.cp</tt> and <tt>.CP</tt> as known C++ suffixes.
\r
869 Added <tt>-install_name</tt> as an option known to take an argument. (This
\r
870 improves statistics when using the Darwin linker.)
\r
875 <div class="sect2">
\r
876 <h3 id="_bug_fixes_7">Bug fixes</h3>
\r
877 <div class="ulist"><ul>
\r
880 Non-fatal error messages are now never printed to stderr but logged
\r
886 Fixed a bug affecting failing commands when <tt>--ccache-skip</tt> is used.
\r
891 Made <tt>--ccache-skip</tt> work for all options.
\r
896 EINTR is now handled correctly.
\r
901 <div class="sect2">
\r
902 <h3 id="_other_4">Other</h3>
\r
903 <div class="ulist"><ul>
\r
906 Work on porting ccache to win32 (native), mostly done by Ramiro Polla.
\r
907 The port is not yet finished, but will hopefully be complete in some
\r
908 subsequent release.
\r
913 Added a <tt>--nostats</tt> flag to the performance benchmark program.
\r
918 Made the performance benchmark program more accurate when measuring cache
\r
924 Added a new test framework for unit tests written in C.
\r
929 Got rid of <tt>configure-dev</tt>; dev mode is now given by <tt>dev.mk.in</tt>
\r
935 Improved documentation on how to combine ccache with other compiler
\r
936 wrappers (like <tt>distcc</tt>).
\r
941 New <tt>LICENSE.txt</tt> file with licensing and copyright details about bundled
\r
947 New <tt>AUTHORS.txt</tt> file with a list of ccache contributors.
\r
952 New <tt>HACKING.txt</tt> file with some notes about ccache code conventions.
\r
959 <div class="sect1">
\r
960 <h2 id="_ccache_3_0_1">ccache 3.0.1</h2>
\r
961 <div class="sectionbody">
\r
962 <div class="paragraph"><p>Release date: 2010-07-15</p></div>
\r
963 <div class="sect2">
\r
964 <h3 id="_bug_fixes_8">Bug fixes</h3>
\r
965 <div class="ulist"><ul>
\r
968 The statistics counter “called for link” is now correctly updated when
\r
969 linking with a single object file.
\r
974 Fixed a problem with out-of-source builds.
\r
981 <div class="sect1">
\r
982 <h2 id="_ccache_3_0">ccache 3.0</h2>
\r
983 <div class="sectionbody">
\r
984 <div class="paragraph"><p>Release date: 2010-06-20</p></div>
\r
985 <div class="sect2">
\r
986 <h3 id="_general">General</h3>
\r
987 <div class="ulist"><ul>
\r
990 ccache is now licensed under the GNU General Public License (GPL) version
\r
996 <div class="sect2">
\r
997 <h3 id="_upgrade_notes">Upgrade notes</h3>
\r
998 <div class="ulist"><ul>
\r
1001 The way the hashes are calculated has changed, so you won’t get cache
\r
1002 hits for compilation results stored by older ccache versions. Because of
\r
1003 this, you might as well clear the old cache directory with <tt>ccache
\r
1004 --clear</tt> if you want, unless you plan to keep using an older ccache
\r
1010 <div class="sect2">
\r
1011 <h3 id="_new_features_and_improvements_4">New features and improvements</h3>
\r
1012 <div class="ulist"><ul>
\r
1015 ccache now has a “direct mode” where it computes a hash of the source
\r
1016 code (including all included files) and compiler options without
\r
1017 running the preprocessor. By not running the preprocessor, CPU usage is
\r
1018 reduced; the speed is somewhere between 1 and 5 times that of ccache
\r
1019 running in traditional mode, depending on the circumstances. The speedup
\r
1020 will be higher when I/O is fast (e.g., when files are in the disk cache).
\r
1021 The direct mode can be disabled by setting <tt>CCACHE_NODIRECT</tt>.
\r
1026 Support has been added for rewriting absolute paths to relative paths
\r
1027 when hashing, in order to increase cache hit rate when building the same
\r
1028 source code in different directories even when compiling with <tt>-g</tt> and
\r
1029 when using absolute include directory paths. This is done by setting the
\r
1030 <tt>CCACHE_BASEDIR</tt> environment variable to an absolute path that specifies
\r
1031 which paths to rewrite.
\r
1036 Object files are now optionally stored compressed in the cache. The
\r
1037 runtime cost is negligible, and more files will fit in the ccache
\r
1038 directory and in the disk cache. Set <tt>CCACHE_COMPRESS</tt> to enable object
\r
1039 file compression. Note that you can’t use compression in combination with
\r
1040 the hard link feature.
\r
1045 A <tt>CCACHE_COMPILERCHECK</tt> option has been added. This option tells ccache
\r
1046 what compiler-identifying information to hash to ensure that results
\r
1047 retrieved from the cache are accurate. Possible values are: none (don’t
\r
1048 hash anything), mtime (hash the compiler’s mtime and size) and content
\r
1049 (hash the content of the compiler binary). The default is mtime.
\r
1054 It is now possible to specify extra files whose contents should be
\r
1055 included in the hash sum by setting the <tt>CCACHE_EXTRAFILES</tt> option.
\r
1060 Added support for Objective-C and Objective-C++. The statistics counter
\r
1061 “not a C/C++ file” has been renamed to “unsupported source language”.
\r
1066 Added support for the <tt>-x</tt> compiler option.
\r
1071 Added support for long command-line options.
\r
1076 A <tt>CACHEDIR.TAG</tt> file is now created in the cache directory. See
\r
1077 <a href="http://www.brynosaurus.com/cachedir/">http://www.brynosaurus.com/cachedir/</a>.
\r
1082 Messages printed to the debug log (specified by <tt>CCACHE_LOGFILE</tt>) have
\r
1088 You can relax some checks that ccache does in direct mode by setting
\r
1089 <tt>CCACHE_SLOPPINESS</tt>. See the manual for more information.
\r
1094 <tt>CCACHE_TEMPDIR</tt> no longer needs to be on the same filesystem as
\r
1095 <tt>CCACHE_DIR</tt>.
\r
1100 The default value of <tt>CCACHE_TEMPDIR</tt> has been changed to
\r
1101 <tt>$CCACHE_DIR/tmp</tt> to avoid cluttering the top directory.
\r
1106 Temporary files that later will be moved into the cache are now created
\r
1107 in the cache directory they will end up in. This makes ccache more
\r
1108 friendly to Linux’s directory layout.
\r
1113 Improved the test suite and added tests for most of the new
\r
1114 functionality. It’s now also possible to specify a subset of tests to
\r
1120 Standard error output from the compiler is now only stored in the cache
\r
1121 if it’s non-empty.
\r
1126 If the compiler produces no object file or an empty object file, but
\r
1127 gives a zero exit status (could be due to a file system problem, a buggy
\r
1128 program specified by <tt>CCACHE_PREFIX</tt>, etc.), ccache copes with it
\r
1134 Added <tt>installcheck</tt> and <tt>distcheck</tt> make targets.
\r
1139 Clarified cache size limit options' and cleanup semantics.
\r
1144 Improved display of cache max size values.
\r
1149 The following options are no longer hashed in the preprocessor mode:
\r
1150 <tt>-imacros</tt>, <tt>-imultilib</tt>, <tt>-iprefix</tt>, <tt>-iquote</tt>, <tt>-isysroot</tt>,
\r
1151 <tt>-iwithprefix</tt>, <tt>-iwithprefixbefore</tt>, <tt>-nostdinc</tt>, <tt>-nostdinc++</tt> and
\r
1157 <div class="sect2">
\r
1158 <h3 id="_bug_fixes_9">Bug fixes</h3>
\r
1159 <div class="ulist"><ul>
\r
1162 Various portability improvements.
\r
1167 Improved detection of home directory.
\r
1172 User-defined <tt>CPPFLAGS</tt> and <tt>LDFLAGS</tt> are now respected in the Makefile.
\r
1182 Computation of the hash sum has been improved to decrease the risk of
\r
1183 hash collisions. For instance, the compiler options <tt>-X -Y</tt> and <tt>-X-Y</tt>
\r
1184 previously contributed equally to the hash sum.
\r
1189 Bail out on too hard compiler options <tt>--coverage</tt>, <tt>-fprofile-arcs</tt>,
\r
1190 <tt>-fprofile-generate</tt>, <tt>-fprofile-use</tt>, <tt>-frepo</tt>, <tt>-ftest-coverage</tt> and
\r
1191 <tt>-save-temps</tt>. Also bail out on <tt>@file</tt> style options.
\r
1196 Errors when using multiple <tt>-arch</tt> compiler options are now noted as
\r
1197 “unsupported compiler option”.
\r
1202 <tt>-MD</tt>/<tt>-MMD</tt> options without <tt>-MT</tt>/<tt>-MF</tt> are now handled correctly.
\r
1207 The <tt>-finput-charset</tt> option is now handled correctly.
\r
1212 Added support for <tt>-Wp,-MD</tt> and <tt>-Wp,-MMD</tt> options.
\r
1217 The compiler options <tt>-Xassembler</tt>, <tt>-b</tt>, <tt>-G</tt> and <tt>-V</tt> are now correctly
\r
1218 recognized as taking an argument.
\r
1223 Debug information containing line numbers of predefined and command-line
\r
1224 macros (enabled with the compiler option <tt>-g3</tt>) will now be correct.
\r
1229 Corrected LRU cleanup handling of object files.
\r
1234 <tt>utimes()</tt> is now used instead of <tt>utime()</tt> when available.
\r
1239 Non-writable cache directories are now handled gracefully.
\r
1244 Corrected documentation about sharing the cache directory.
\r
1249 Fixed compilation warnings from GCC 4.3.
\r
1254 The command specified by <tt>CCACHE_PREFIX</tt> is no longer part of the hash.
\r
1259 Fixed bad memory access spotted by Valgrind.
\r
1264 Fixed a bug in <tt>x_realloc</tt>.
\r
1269 Freed memory is no longer referenced when compiling a <tt>.i</tt>/<tt>.ii</tt> file and
\r
1270 falling back to running the real compiler.
\r
1275 The test suite is now immune to external values of the <tt>CCACHE_*</tt>
\r
1276 environment variables.
\r
1281 Improved detection of recursive invocation.
\r
1286 The ccache binary is now not unconditionally stripped when installing.
\r
1291 Statistics counters are now correctly updated for -E option failures and
\r
1300 <div id="footnotes"><hr /></div>
\r
1302 <div id="footer-text">
\r
1303 Version 3.1.6<br />
\r
1304 Last updated 2011-08-21 16:34:07 CEST
\r