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.9" />
\r
7 <title>ccache news</title>
\r
8 <style type="text/css">
\r
9 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */
\r
13 font-family: Georgia,serif;
\r
17 h1, h2, h3, h4, h5, h6,
\r
18 div.title, caption.title,
\r
19 thead, p.table.header,
\r
21 #author, #revnumber, #revdate, #revremark,
\r
23 font-family: Arial,Helvetica,sans-serif;
\r
27 margin: 1em 5% 1em 5%;
\r
32 text-decoration: underline;
\r
48 h1, h2, h3, h4, h5, h6 {
\r
51 margin-bottom: 0.5em;
\r
56 border-bottom: 2px solid silver;
\r
76 border: 1px solid silver;
\r
81 margin-bottom: 0.5em;
\r
87 ul > li { color: #aaa; }
\r
88 ul > li > * { color: black; }
\r
90 .monospaced, code, pre {
\r
91 font-family: "Courier New", Courier, monospace;
\r
98 white-space: pre-wrap;
\r
108 #revnumber, #revdate, #revremark {
\r
113 border-top: 2px solid silver;
\r
114 padding-top: 0.5em;
\r
119 padding-bottom: 0.5em;
\r
123 padding-bottom: 0.5em;
\r
128 margin-bottom: 1.5em;
\r
130 div.imageblock, div.exampleblock, div.verseblock,
\r
131 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
\r
132 div.admonitionblock {
\r
134 margin-bottom: 1.5em;
\r
136 div.admonitionblock {
\r
138 margin-bottom: 2.0em;
\r
143 div.content { /* Block element content. */
\r
147 /* Block element titles. */
\r
148 div.title, caption.title {
\r
153 margin-bottom: 0.5em;
\r
159 td div.title:first-child {
\r
162 div.content div.title:first-child {
\r
165 div.content + div.title {
\r
169 div.sidebarblock > div.content {
\r
170 background: #ffffee;
\r
171 border: 1px solid #dddddd;
\r
172 border-left: 4px solid #f0f0f0;
\r
176 div.listingblock > div.content {
\r
177 border: 1px solid #dddddd;
\r
178 border-left: 5px solid #f0f0f0;
\r
179 background: #f8f8f8;
\r
183 div.quoteblock, div.verseblock {
\r
184 padding-left: 1.0em;
\r
185 margin-left: 1.0em;
\r
187 border-left: 5px solid #f0f0f0;
\r
191 div.quoteblock > div.attribution {
\r
192 padding-top: 0.5em;
\r
196 div.verseblock > pre.content {
\r
197 font-family: inherit;
\r
198 font-size: inherit;
\r
200 div.verseblock > div.attribution {
\r
201 padding-top: 0.75em;
\r
204 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */
\r
205 div.verseblock + div.attribution {
\r
209 div.admonitionblock .icon {
\r
210 vertical-align: top;
\r
213 text-decoration: underline;
\r
215 padding-right: 0.5em;
\r
217 div.admonitionblock td.content {
\r
218 padding-left: 0.5em;
\r
219 border-left: 3px solid #dddddd;
\r
222 div.exampleblock > div.content {
\r
223 border-left: 3px solid #dddddd;
\r
224 padding-left: 0.5em;
\r
227 div.imageblock div.content { padding-left: 0; }
\r
228 span.image img { border-style: none; vertical-align: text-bottom; }
\r
229 a.image:visited { color: white; }
\r
233 margin-bottom: 0.8em;
\r
238 font-style: normal;
\r
241 dd > *:first-child {
\r
246 list-style-position: outside;
\r
249 list-style-type: decimal;
\r
252 list-style-type: lower-alpha;
\r
255 list-style-type: upper-alpha;
\r
258 list-style-type: lower-roman;
\r
261 list-style-type: upper-roman;
\r
264 div.compact ul, div.compact ol,
\r
265 div.compact p, div.compact p,
\r
266 div.compact div, div.compact div {
\r
268 margin-bottom: 0.1em;
\r
280 margin-bottom: 0.8em;
\r
283 padding-bottom: 15px;
\r
285 dt.hdlist1.strong, td.hdlist1.strong {
\r
289 vertical-align: top;
\r
290 font-style: normal;
\r
291 padding-right: 0.8em;
\r
295 vertical-align: top;
\r
297 div.hdlist.compact tr {
\r
303 background: yellow;
\r
306 .footnote, .footnoteref {
\r
310 span.footnote, span.footnoteref {
\r
311 vertical-align: super;
\r
315 margin: 20px 0 20px 0;
\r
316 padding: 7px 0 0 0;
\r
319 #footnotes div.footnote {
\r
325 border-top: 1px solid silver;
\r
334 padding-right: 0.5em;
\r
335 padding-bottom: 0.3em;
\r
336 vertical-align: top;
\r
338 div.colist td img {
\r
343 #footer-badges { display: none; }
\r
347 margin-bottom: 2.5em;
\r
355 margin-bottom: 0.1em;
\r
358 div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
\r
375 span.aqua { color: aqua; }
\r
376 span.black { color: black; }
\r
377 span.blue { color: blue; }
\r
378 span.fuchsia { color: fuchsia; }
\r
379 span.gray { color: gray; }
\r
380 span.green { color: green; }
\r
381 span.lime { color: lime; }
\r
382 span.maroon { color: maroon; }
\r
383 span.navy { color: navy; }
\r
384 span.olive { color: olive; }
\r
385 span.purple { color: purple; }
\r
386 span.red { color: red; }
\r
387 span.silver { color: silver; }
\r
388 span.teal { color: teal; }
\r
389 span.white { color: white; }
\r
390 span.yellow { color: yellow; }
\r
392 span.aqua-background { background: aqua; }
\r
393 span.black-background { background: black; }
\r
394 span.blue-background { background: blue; }
\r
395 span.fuchsia-background { background: fuchsia; }
\r
396 span.gray-background { background: gray; }
\r
397 span.green-background { background: green; }
\r
398 span.lime-background { background: lime; }
\r
399 span.maroon-background { background: maroon; }
\r
400 span.navy-background { background: navy; }
\r
401 span.olive-background { background: olive; }
\r
402 span.purple-background { background: purple; }
\r
403 span.red-background { background: red; }
\r
404 span.silver-background { background: silver; }
\r
405 span.teal-background { background: teal; }
\r
406 span.white-background { background: white; }
\r
407 span.yellow-background { background: yellow; }
\r
409 span.big { font-size: 2em; }
\r
410 span.small { font-size: 0.6em; }
\r
412 span.underline { text-decoration: underline; }
\r
413 span.overline { text-decoration: overline; }
\r
414 span.line-through { text-decoration: line-through; }
\r
416 div.unbreakable { page-break-inside: avoid; }
\r
426 margin-bottom: 1.5em;
\r
428 div.tableblock > table {
\r
429 border: 3px solid #527bbd;
\r
431 thead, p.table.header {
\r
438 /* Because the table frame attribute is overriden by CSS in most browsers. */
\r
439 div.tableblock > table[frame="void"] {
\r
440 border-style: none;
\r
442 div.tableblock > table[frame="hsides"] {
\r
443 border-left-style: none;
\r
444 border-right-style: none;
\r
446 div.tableblock > table[frame="vsides"] {
\r
447 border-top-style: none;
\r
448 border-bottom-style: none;
\r
459 margin-bottom: 1.5em;
\r
461 thead, p.tableblock.header {
\r
470 border-spacing: 0px;
\r
471 border-style: solid;
\r
472 border-color: #527bbd;
\r
473 border-collapse: collapse;
\r
475 th.tableblock, td.tableblock {
\r
478 border-style: solid;
\r
479 border-color: #527bbd;
\r
482 table.tableblock.frame-topbot {
\r
483 border-left-style: hidden;
\r
484 border-right-style: hidden;
\r
486 table.tableblock.frame-sides {
\r
487 border-top-style: hidden;
\r
488 border-bottom-style: hidden;
\r
490 table.tableblock.frame-none {
\r
491 border-style: hidden;
\r
494 th.tableblock.halign-left, td.tableblock.halign-left {
\r
497 th.tableblock.halign-center, td.tableblock.halign-center {
\r
498 text-align: center;
\r
500 th.tableblock.halign-right, td.tableblock.halign-right {
\r
504 th.tableblock.valign-top, td.tableblock.valign-top {
\r
505 vertical-align: top;
\r
507 th.tableblock.valign-middle, td.tableblock.valign-middle {
\r
508 vertical-align: middle;
\r
510 th.tableblock.valign-bottom, td.tableblock.valign-bottom {
\r
511 vertical-align: bottom;
\r
521 padding-top: 0.5em;
\r
522 padding-bottom: 0.5em;
\r
523 border-top: 2px solid silver;
\r
524 border-bottom: 2px solid silver;
\r
527 border-style: none;
\r
529 body.manpage div.sectionbody {
\r
534 body.manpage div#toc { display: none; }
\r
539 <script type="text/javascript">
\r
541 var asciidoc = { // Namespace.
\r
543 /////////////////////////////////////////////////////////////////////
\r
544 // Table Of Contents generator
\r
545 /////////////////////////////////////////////////////////////////////
\r
547 /* Author: Mihai Bazon, September 2002
\r
548 * http://students.infoiasi.ro/~mishoo
\r
550 * Table Of Content generator
\r
553 * Feel free to use this script under the terms of the GNU General Public
\r
554 * License, as long as you do not remove or alter this notice.
\r
557 /* modified by Troy D. Hanson, September 2006. License: GPL */
\r
558 /* modified by Stuart Rackham, 2006, 2009. License: GPL */
\r
560 // toclevels = 1..4.
\r
561 toc: function (toclevels) {
\r
563 function getText(el) {
\r
565 for (var i = el.firstChild; i != null; i = i.nextSibling) {
\r
566 if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
\r
568 else if (i.firstChild != null)
\r
569 text += getText(i);
\r
574 function TocEntry(el, text, toclevel) {
\r
577 this.toclevel = toclevel;
\r
580 function tocEntries(el, toclevels) {
\r
581 var result = new Array;
\r
582 var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
\r
583 // Function that scans the DOM tree for header elements (the DOM2
\r
584 // nodeIterator API would be a better technique but not supported by all
\r
586 var iterate = function (el) {
\r
587 for (var i = el.firstChild; i != null; i = i.nextSibling) {
\r
588 if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
\r
589 var mo = re.exec(i.tagName);
\r
590 if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
\r
591 result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
\r
601 var toc = document.getElementById("toc");
\r
606 // Delete existing TOC entries in case we're reloading the TOC.
\r
607 var tocEntriesToRemove = [];
\r
609 for (i = 0; i < toc.childNodes.length; i++) {
\r
610 var entry = toc.childNodes[i];
\r
611 if (entry.nodeName.toLowerCase() == 'div'
\r
612 && entry.getAttribute("class")
\r
613 && entry.getAttribute("class").match(/^toclevel/))
\r
614 tocEntriesToRemove.push(entry);
\r
616 for (i = 0; i < tocEntriesToRemove.length; i++) {
\r
617 toc.removeChild(tocEntriesToRemove[i]);
\r
620 // Rebuild TOC entries.
\r
621 var entries = tocEntries(document.getElementById("content"), toclevels);
\r
622 for (var i = 0; i < entries.length; ++i) {
\r
623 var entry = entries[i];
\r
624 if (entry.element.id == "")
\r
625 entry.element.id = "_toc_" + i;
\r
626 var a = document.createElement("a");
\r
627 a.href = "#" + entry.element.id;
\r
628 a.appendChild(document.createTextNode(entry.text));
\r
629 var div = document.createElement("div");
\r
630 div.appendChild(a);
\r
631 div.className = "toclevel" + entry.toclevel;
\r
632 toc.appendChild(div);
\r
634 if (entries.length == 0)
\r
635 toc.parentNode.removeChild(toc);
\r
639 /////////////////////////////////////////////////////////////////////
\r
640 // Footnotes generator
\r
641 /////////////////////////////////////////////////////////////////////
\r
643 /* Based on footnote generation code from:
\r
644 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
\r
647 footnotes: function () {
\r
648 // Delete existing footnote entries in case we're reloading the footnodes.
\r
650 var noteholder = document.getElementById("footnotes");
\r
654 var entriesToRemove = [];
\r
655 for (i = 0; i < noteholder.childNodes.length; i++) {
\r
656 var entry = noteholder.childNodes[i];
\r
657 if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
\r
658 entriesToRemove.push(entry);
\r
660 for (i = 0; i < entriesToRemove.length; i++) {
\r
661 noteholder.removeChild(entriesToRemove[i]);
\r
664 // Rebuild footnote entries.
\r
665 var cont = document.getElementById("content");
\r
666 var spans = cont.getElementsByTagName("span");
\r
669 for (i=0; i<spans.length; i++) {
\r
670 if (spans[i].className == "footnote") {
\r
672 var note = spans[i].getAttribute("data-note");
\r
674 // Use [\s\S] in place of . so multi-line matches work.
\r
675 // Because JavaScript has no s (dotall) regex flag.
\r
676 note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
\r
677 spans[i].innerHTML =
\r
678 "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
\r
679 "' title='View footnote' class='footnote'>" + n + "</a>]";
\r
680 spans[i].setAttribute("data-note", note);
\r
682 noteholder.innerHTML +=
\r
683 "<div class='footnote' id='_footnote_" + n + "'>" +
\r
684 "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
\r
685 n + "</a>. " + note + "</div>";
\r
686 var id =spans[i].getAttribute("id");
\r
687 if (id != null) refs["#"+id] = n;
\r
691 noteholder.parentNode.removeChild(noteholder);
\r
693 // Process footnoterefs.
\r
694 for (i=0; i<spans.length; i++) {
\r
695 if (spans[i].className == "footnoteref") {
\r
696 var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
\r
697 href = href.match(/#.*/)[0]; // Because IE return full URL.
\r
699 spans[i].innerHTML =
\r
700 "[<a href='#_footnote_" + n +
\r
701 "' title='View footnote' class='footnote'>" + n + "</a>]";
\r
707 install: function(toclevels) {
\r
710 function reinstall() {
\r
711 asciidoc.footnotes();
\r
713 asciidoc.toc(toclevels);
\r
717 function reinstallAndRemoveTimer() {
\r
718 clearInterval(timerId);
\r
722 timerId = setInterval(reinstall, 500);
\r
723 if (document.addEventListener)
\r
724 document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
\r
726 window.onload = reinstallAndRemoveTimer;
\r
730 asciidoc.install(2);
\r
734 <body class="article">
\r
736 <h1>ccache news</h1>
\r
737 <span id="revnumber">version 3.3</span>
\r
739 <div id="toctitle">Table of Contents</div>
740 <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
744 <div class="sect1">
\r
745 <h2 id="_ccache_3_3">ccache 3.3</h2>
\r
746 <div class="sectionbody">
\r
747 <div class="paragraph"><p>Release date: 2016-08-27</p></div>
\r
748 <div class="sect2">
\r
749 <h3 id="_notes">Notes</h3>
\r
750 <div class="ulist"><ul>
\r
753 A C99-compatible compiler is now required to build ccache.
\r
758 <div class="sect2">
\r
759 <h3 id="_new_features_and_improvements">New features and improvements</h3>
\r
760 <div class="ulist"><ul>
\r
763 The configuration option <code>run_second_cpp</code> (<code>CCACHE_CPP2</code>) now defaults to
\r
764 true. This improves ccache’s out-of-the-box experience for compilers that
\r
765 can’t compile their own preprocessed output with the same outcome as if they
\r
766 compiled the real source code directly, e.g. newer versions of GCC and Clang.
\r
771 The configuration option <code>hash_dir</code> (<code>CCACHE_HASHDIR</code>) now defaults to true.
\r
776 Added a new <code>ignore_headers_in_manifest</code> configuration option, which
\r
777 specifies headers that should be ignored in the direct mode.
\r
782 Added a new <code>prefix_command_cpp</code> (<code>CCACHE_PREFIX_CPP</code>) configuration option,
\r
783 which specifies one or several prefixes to add to the command line ccache
\r
784 uses when invoking the preprocessor.
\r
789 Added a new <code>limit_multiple</code> (<code>CCACHE_LIMIT_MULTIPLE</code>) configuration option,
\r
790 which specifies how much of the cache to remove when cleaning.
\r
795 Added a new <code>keep_comments_cpp</code> (<code>CCACHE_COMMENTS</code>) configuration option,
\r
796 which tells ccache not to discard the comments before hashing preprocessor
\r
797 output. This can be used to check documentation with <strong>-Wdocumentation</strong>.
\r
802 Added a new sloppiness option <code>no_system_headers</code>, which tells ccache not to
\r
803 include system headers in manifest files.
\r
808 Added a new statistics counter that tracks the number of performed cleanups
\r
809 due to the cache size being over the limit. The value is shown in the output
\r
810 of “ccache -s”.
\r
815 Added support for relocating debug info directory using <code>-fdebug-prefix-map</code>.
\r
816 This allows for cache hits even when <code>hash_dir</code> is used in combination with
\r
817 <code>base_dir</code>.
\r
822 Added a new “cache hit rate” field to the output of “ccache -s”.
\r
827 Added support for caching compilation of assembler code produced by e.g.
\r
828 “gcc -S file.c”.
\r
833 Added support for cuda including the -optf/--options-file option.
\r
838 Added support for Fortran 77.
\r
843 Added support for multiple <code>-arch</code> options to produce "fat binaries".
\r
848 Multiple identical <code>-arch</code> arguments are now handled without bailing.
\r
853 The concatenated form of some long compiler options is now recognized, for
\r
854 example when using <code>-isystemPATH</code> instead of <code>-isystem PATH</code>.
\r
859 If hard-linking is enabled and but fails (e.g. due to cross-device linking),
\r
860 ccache now falls back to copying instead of running the compiler.
\r
865 Made the <code>hash_dir</code> option only have effect when generating debug info.
\r
870 ccache now knows how to convert absolute paths to relative paths inside
\r
871 dependency files when using <code>base_dir</code>.
\r
876 Improved parsing of <code>-g*</code> options.
\r
881 Made ccache understand <code>-Wp,-D*</code> options.
\r
886 ccache now understands the undocumented <code>-coverage</code> (only one dash) GCC
\r
892 Names of included files are no longer included in the hash of the compiler’s
\r
893 preprocessed output. This leads to more potential cache hits when not using
\r
899 Increased buffer size used when reading file data. This improves performance
\r
905 <div class="sect2">
\r
906 <h3 id="_bug_fixes">Bug fixes</h3>
\r
907 <div class="ulist"><ul>
\r
910 Bail out on too hard compiler option <code>-P</code>.
\r
915 Fixed clang test suite when running on Linux.
\r
920 Fixed build and test for MinGW32 and Windows.
\r
927 <div class="sect1">
\r
928 <h2 id="_ccache_3_2_7">ccache 3.2.7</h2>
\r
929 <div class="sectionbody">
\r
930 <div class="paragraph"><p>Release date: 2016-07-20</p></div>
\r
931 <div class="sect2">
\r
932 <h3 id="_bug_fixes_2">Bug fixes</h3>
\r
933 <div class="ulist"><ul>
\r
936 Fixed a bug which could lead to false cache hits for compiler command lines
\r
937 with a missing argument to an option that takes an argument.
\r
942 ccache now knows how to work around a glitch in the output of GCC 6’s
\r
950 <div class="sect1">
\r
951 <h2 id="_ccache_3_2_6">ccache 3.2.6</h2>
\r
952 <div class="sectionbody">
\r
953 <div class="paragraph"><p>Release date: 2016-07-12</p></div>
\r
954 <div class="sect2">
\r
955 <h3 id="_bug_fixes_3">Bug fixes</h3>
\r
956 <div class="ulist"><ul>
\r
959 Fixed build problem on QNX, which lacks “SA_RESTART”.
\r
964 Bail out on compiler option <code>-fstack-usage</code> since it creates a <code>.su</code> file
\r
965 which ccache currently doesn’t handle.
\r
970 Fixed a bug where (due to ccache rewriting paths) the compiler could choose
\r
971 incorrect include files if <code>CCACHE_BASEDIR</code> is used and the source file path
\r
972 is absolute and is a symlink.
\r
979 <div class="sect1">
\r
980 <h2 id="_ccache_3_2_5">ccache 3.2.5</h2>
\r
981 <div class="sectionbody">
\r
982 <div class="paragraph"><p>Release date: 2016-04-17</p></div>
\r
983 <div class="sect2">
\r
984 <h3 id="_new_features_and_improvements_2">New features and improvements</h3>
\r
985 <div class="ulist"><ul>
\r
988 Only pass clang-specific <code>-stdlib=</code> to the preprocessor.
\r
993 Improved handling of stale NFS handles.
\r
998 Made it harder to misinterpret documentation of boolean environment settings'
\r
1004 <div class="sect2">
\r
1005 <h3 id="_bug_fixes_4">Bug fixes</h3>
\r
1006 <div class="ulist"><ul>
\r
1009 Include m4 files used by configure.ac in the source dist archives.
\r
1014 Corrected "Performance" section in the manual regarding <code>__DATE_</code>, <code>__TIME__</code>
\r
1015 and <code>__FILE__</code> macros.
\r
1020 Fixed build on Solaris 10+ and AIX 7.
\r
1025 Fixed failure to create directories on QNX.
\r
1030 Don’t (try to) update manifest file in “read-only” and “read-only direct”
\r
1036 Fixed a bug in caching of <code>stat</code> system calls in “file_stat_matches
\r
1037 sloppiness mode”.
\r
1042 Fixed bug in hashing of clang plugins, leading to unnecessary cache misses.
\r
1047 Fixed --print-config to show “pch_defines sloppiness”.
\r
1052 The man page is now built when running “make install” from Git repository
\r
1060 <div class="sect1">
\r
1061 <h2 id="_ccache_3_2_4">ccache 3.2.4</h2>
\r
1062 <div class="sectionbody">
\r
1063 <div class="paragraph"><p>Release date: 2015-10-08</p></div>
\r
1064 <div class="sect2">
\r
1065 <h3 id="_bug_fixes_5">Bug fixes</h3>
\r
1066 <div class="ulist"><ul>
\r
1069 Fixed build error related to zlib on systems with older make versions
\r
1070 (regression in ccache 3.2.3).
\r
1075 Made conversion-to-bool explicit to avoid build warnings (and potential
\r
1076 runtime errors) on legacy systems.
\r
1081 Improved signal handling: Kill compiler on SIGTERM; wait for compiler to exit
\r
1082 before exiting; die appropriately.
\r
1087 Minor fixes related to Windows support.
\r
1092 The correct compression level is now used if compression is requested.
\r
1097 Fixed a bug where cache cleanup could be run too early for caches larger than
\r
1098 64 GiB on 32-bit systems.
\r
1105 <div class="sect1">
\r
1106 <h2 id="_ccache_3_2_3">ccache 3.2.3</h2>
\r
1107 <div class="sectionbody">
\r
1108 <div class="paragraph"><p>Release date: 2015-08-16</p></div>
\r
1109 <div class="sect2">
\r
1110 <h3 id="_new_features_and_improvements_3">New features and improvements</h3>
\r
1111 <div class="ulist"><ul>
\r
1114 Added support for compiler option <code>-gsplit-dwarf</code>.
\r
1119 <div class="sect2">
\r
1120 <h3 id="_bug_fixes_6">Bug fixes</h3>
\r
1121 <div class="ulist"><ul>
\r
1124 Support external zlib in nonstandard directory.
\r
1129 Avoid calling <code>exit()</code> inside an exit handler.
\r
1134 Let exit handler terminate properly.
\r
1139 Bail out on compiler option <code>--save-temps</code> in addition to <code>-save-temps</code>.
\r
1144 Only log "Disabling direct mode" once when failing to read potential include
\r
1152 <div class="sect1">
\r
1153 <h2 id="_ccache_3_2_2">ccache 3.2.2</h2>
\r
1154 <div class="sectionbody">
\r
1155 <div class="paragraph"><p>Release date: 2015-05-10</p></div>
\r
1156 <div class="sect2">
\r
1157 <h3 id="_new_features_and_improvements_4">New features and improvements</h3>
\r
1158 <div class="ulist"><ul>
\r
1161 Added support for <code>CCACHE_COMPILERCHECK=string:<value></code>. This is a faster
\r
1162 alternative to <code>CCACHE_COMPILERCHECK=<command></code> if the command’s output can
\r
1163 be precalculated by the build system.
\r
1168 Add support for caching code coverage results (compiling for gcov).
\r
1173 <div class="sect2">
\r
1174 <h3 id="_bug_fixes_7">Bug fixes</h3>
\r
1175 <div class="ulist"><ul>
\r
1178 Made hash of cached result created with and without <code>CCACHE_CPP2</code> different.
\r
1179 This makes it possible to rebuild with <code>CCACHE_CPP2</code> set without having to
\r
1180 clear the cache to get new results.
\r
1185 Don’t try to reset a non-existing stats file. This avoids “No such file or
\r
1186 directory” messages in the ccache log when the cache directory doesn’t
\r
1192 Fixed a bug where ccache deleted clang diagnostics after compiler failures.
\r
1197 Avoid performing an unnecessary copy of the object file on a cache miss.
\r
1202 Bail out on too hard compiler option <code>-fmodules</code>.
\r
1207 Bail out on too hard compiler option <code>-fplugin=libcc1plugin</code> (interaction
\r
1213 Fixed build error when compiling ccache with recent clang versions.
\r
1218 Removed signal-unsafe code from signal handler.
\r
1223 Corrected logic for when to output cached stderr.
\r
1228 Wipe the whole cached result on failure retrieving a cached file.
\r
1233 Fixed build error when compiling ccache with recent clang versions.
\r
1240 <div class="sect1">
\r
1241 <h2 id="_ccache_3_2_1">ccache 3.2.1</h2>
\r
1242 <div class="sectionbody">
\r
1243 <div class="paragraph"><p>Release date: 2014-12-10</p></div>
\r
1244 <div class="sect2">
\r
1245 <h3 id="_bug_fixes_8">Bug fixes</h3>
\r
1246 <div class="ulist"><ul>
\r
1249 Fixed regression in temporary file handling, which lead to incorrect
\r
1250 permissions for stats, manifest and ccache.conf files in the cache.
\r
1255 <code>CACHEDIR.TAG</code> files are now created in the [0-9a-f] subdirectories so that
\r
1256 ccache.conf is not lost in backups.
\r
1261 Made the default cache size suffix <code>G</code>, as previously documented.
\r
1266 <code>-fdiagnostics-color=auto</code> is now passed to the compiler even if stderr is
\r
1267 redirected. This fixes a problem when, for instance, a configure test probes
\r
1268 if the compiler (wrapped via ccache) supports <code>-fdiagnostics-color=auto</code>.
\r
1273 Added missing documentation for <code>max_files</code> and <code>max_size</code> configuration
\r
1281 <div class="sect1">
\r
1282 <h2 id="_ccache_3_2">ccache 3.2</h2>
\r
1283 <div class="sectionbody">
\r
1284 <div class="paragraph"><p>Release date: 2014-11-17</p></div>
\r
1285 <div class="sect2">
\r
1286 <h3 id="_new_features_and_improvements_5">New features and improvements</h3>
\r
1287 <div class="ulist"><ul>
\r
1290 Added support for configuring ccache via one or several configuration files
\r
1291 instead of via environment variables. Environment variables still have
\r
1292 priority but are no longer the recommended way of customizing ccache
\r
1293 behavior. See the manual for more information.
\r
1298 Added support for compiler error/warning messages with color.
\r
1303 Made creation of temporary directories and cache directories smarter to avoid
\r
1304 unnecessary <code>stat</code> calls.
\r
1309 Improved efficiency of the algorithm that scans for <code>__DATE_</code> and <code>__TIME__</code>
\r
1310 tokens in the hashed source code.
\r
1315 Added support for several binaries (separated by space) in <code>CCACHE_PREFIX</code>.
\r
1320 The <code>-c</code> option is no longer passed to the preprocessor. This fixes problems
\r
1321 with clang and Solaris’s C++ compiler.
\r
1326 ccache no longer passes preprocessor options like <code>-D</code> and <code>-I</code> to the
\r
1327 compiler when compiling preprocessed output. This fixes warnings emitted by
\r
1333 Compiler options <code>-fprofile-generate</code>, <code>-fprofile-arcs</code>, <code>-fprofile-use</code> and
\r
1334 <code>-fbranch-probabilities</code> are now handled without bailing.
\r
1339 Added support for clang’s <code>--serialize-diagnostic</code> option, storing the
\r
1340 diagnostic file (<code>.dia</code>) in the cache.
\r
1345 Added support for precompiled headers when using clang.
\r
1350 Added support for clang <code>.pth</code> (pretokenized header) files.
\r
1355 Changed the <code>-x</code> language option to use the new objective C standard for GCC
\r
1361 On a cache miss, ccache now instructs the compiler to create the object file
\r
1362 at the real destination and then copies the file into the cache instead of
\r
1363 the other way around. This is needed to support compiler options like
\r
1364 <code>-fprofile-arcs</code> and <code>--serialize-diagnostics</code>.
\r
1369 ccache now checks that included files' ctimes aren’t too new. This check can
\r
1370 be turned off by adding <code>include_file_ctime</code> to the “ccache sloppiness”
\r
1376 Added possibility to get cache hits based on filename, size, mtime and ctime
\r
1377 only. On other words, source code files are not even read, only stat-ed. This
\r
1378 operation mode is opt-in by adding <code>file_stat_matches</code> to the “ccache
\r
1379 sloppiness” setting.
\r
1384 The filename part of options like <code>-Wp,-MDfilename</code> is no longer included in
\r
1385 the hash since the filename doesn’t have any bearing on the result.
\r
1390 Added a “read-only direct” configuration setting, which is like the
\r
1391 ordinary read-only setting except that ccache will only try to retrieve
\r
1392 results from the cache using the direct mode, not the preprocessor mode.
\r
1397 The display and interpretation of cache size has been changed to use SI
\r
1403 Default cache size is now 5 GB (was previously 1 GiB).
\r
1408 Added configuration option to set the compression level of compressed object
\r
1409 files in the cache.
\r
1414 Added support for <code>@file</code> and <code>-@file</code> arguments (reading options from a
\r
1420 <code>-Wl,</code> options are no longer included in the hash since they don’t affect
\r
1426 Bail out on too hard compiler option <code>-Wp,-P</code>.
\r
1431 Optimized MD4 calculation code on little-endian systems.
\r
1436 Various improvements and fixes on win32.
\r
1441 Improved logging to the ccache log file.
\r
1446 Added <code>--dump-manifest</code> command-line option for debugging purposes.
\r
1451 Added <code>--with-bundled-zlib</code> configure option.
\r
1456 Upgraded bundled zlib to version 1.2.8.
\r
1461 Improved <code>dev.mk</code> to be more platform independent.
\r
1466 Made the test suite work with clang and gcc-llvm on OS X.
\r
1471 Various other improvements of the test suite.
\r
1476 <div class="sect2">
\r
1477 <h3 id="_bug_fixes_9">Bug fixes</h3>
\r
1478 <div class="ulist"><ul>
\r
1481 Any previous <code>.stderr</code> is now removed from the cache when recaching.
\r
1486 Fixed an issue when handling the <code>-arch</code> compiler option with an argument.
\r
1491 Fixed race condition when creating the initial cache directory.
\r
1496 Fixed test suite failures when <code>CC</code> is a ccache-wrapped compiler.
\r
1503 <div class="sect1">
\r
1504 <h2 id="_ccache_3_1_12">ccache 3.1.12</h2>
\r
1505 <div class="sectionbody">
\r
1506 <div class="paragraph"><p>Release date: 2016-07-12</p></div>
\r
1507 <div class="sect2">
\r
1508 <h3 id="_bug_fixes_10">Bug fixes</h3>
\r
1509 <div class="ulist"><ul>
\r
1512 Fixed a bug where (due to ccache rewriting paths) the compiler could choose
\r
1513 incorrect include files if <code>CCACHE_BASEDIR</code> is used and the source file path
\r
1514 is absolute and is a symlink.
\r
1521 <div class="sect1">
\r
1522 <h2 id="_ccache_3_1_11">ccache 3.1.11</h2>
\r
1523 <div class="sectionbody">
\r
1524 <div class="paragraph"><p>Release date: 2015-03-07</p></div>
\r
1525 <div class="sect2">
\r
1526 <h3 id="_bug_fixes_11">Bug fixes</h3>
\r
1527 <div class="ulist"><ul>
\r
1530 Fixed bug which could result in false cache hits when source code contains
\r
1531 <code>'"'</code> followed by <code>" /*"</code> or <code>" //"</code> (with variations).
\r
1536 Made hash of cached result created with and without <code>CCACHE_CPP2</code> different.
\r
1537 This makes it possible to rebuild with <code>CCACHE_CPP2</code> set without having to
\r
1538 clear the cache to get new results.
\r
1543 Don’t try to reset a non-existing stats file. This avoids “No such file or
\r
1544 directory” messages in the ccache log when the cache directory doesn’t
\r
1552 <div class="sect1">
\r
1553 <h2 id="_ccache_3_1_10">ccache 3.1.10</h2>
\r
1554 <div class="sectionbody">
\r
1555 <div class="paragraph"><p>Release date: 2014-10-19</p></div>
\r
1556 <div class="sect2">
\r
1557 <h3 id="_new_features_and_improvements_6">New features and improvements</h3>
\r
1558 <div class="ulist"><ul>
\r
1561 Added support for the <code>-Xclang</code> compiler option.
\r
1566 Improved handling of exit code of internally executed processes.
\r
1571 Zero length object files in the cache are now rejected as invalid.
\r
1576 Bail out on option <code>-gsplit-dwarf</code> (since it produces multiple output files).
\r
1581 Compiler option <code>-fdebug-prefix-map</code> is now ignored (not part of the hash).
\r
1582 (The <code>-fdebug-prefix-map</code> option may be used in combination with
\r
1583 <code>CCACHE_BASEDIR</code> to reuse results across different directories.)
\r
1588 Added note in documentation that <code>--ccache-skip</code> currently does not mean
\r
1589 “don’t hash the following option”.
\r
1594 To enable support for precompiled headers (PCH), <code>CCACHE_SLOPPINESS</code> now also
\r
1595 needs to include the new <code>pch_defines</code> sloppiness. This is because ccache
\r
1596 can’t detect changes in the source code when only defined macros have been
\r
1602 Stale files in the internal temporary directory (<code><ccache_dir>/tmp</code>) are now
\r
1603 cleaned up if they are older than one hour.
\r
1608 <div class="sect2">
\r
1609 <h3 id="_bug_fixes_12">Bug fixes</h3>
\r
1610 <div class="ulist"><ul>
\r
1613 Fixed path canonicalization in <code>make_relative_path()</code> when path doesn’t
\r
1619 Fixed bug in <code>common_dir_prefix_length()</code>. This corrects the <code>CCACHE_BASEDIR</code>
\r
1625 ccache no longer tries to create the cache directory when <code>CCACHE_DISABLE</code> is
\r
1631 Fixed bug when reading manifests with a very large number of file info
\r
1637 Fixed problem with logging of current working directory.
\r
1644 <div class="sect1">
\r
1645 <h2 id="_ccache_3_1_9">ccache 3.1.9</h2>
\r
1646 <div class="sectionbody">
\r
1647 <div class="paragraph"><p>Release date: 2013-01-06</p></div>
\r
1648 <div class="sect2">
\r
1649 <h3 id="_bug_fixes_13">Bug fixes</h3>
\r
1650 <div class="ulist"><ul>
\r
1653 The EAGAIN signal is now handled correctly when emitting cached stderr
\r
1654 output. This fixes a problem triggered by large error outputs from the
\r
1660 Subdirectories in the cache are no longer created in read-only mode.
\r
1665 Fixed so that ccache’s log file descriptor is not made available to the
\r
1671 Improved error reporting when failing to create temporary stdout/stderr files
\r
1672 when executing the compiler.
\r
1677 Disappearing temporary stdout/stderr files are now handled gracefully.
\r
1682 <div class="sect2">
\r
1683 <h3 id="_other">Other</h3>
\r
1684 <div class="ulist"><ul>
\r
1687 Fixed test suite to work on ecryptfs.
\r
1694 <div class="sect1">
\r
1695 <h2 id="_ccache_3_1_8">ccache 3.1.8</h2>
\r
1696 <div class="sectionbody">
\r
1697 <div class="paragraph"><p>Release date: 2012-08-11</p></div>
\r
1698 <div class="sect2">
\r
1699 <h3 id="_new_features_and_improvements_7">New features and improvements</h3>
\r
1700 <div class="ulist"><ul>
\r
1703 Made paths to dependency files relative in order to increase cache hits.
\r
1708 Added work-around to make ccache work with buggy GCC 4.1 when creating a
\r
1709 pre-compiled header.
\r
1714 Clang plugins are now hashed to catch plugin upgrades.
\r
1719 <div class="sect2">
\r
1720 <h3 id="_bug_fixes_14">Bug fixes</h3>
\r
1721 <div class="ulist"><ul>
\r
1724 Fixed crash when the current working directory has been removed.
\r
1729 Fixed crash when stderr is closed.
\r
1734 Corrected a corner case when parsing backslash escapes in string
\r
1740 Paths are now correctly canonicalized when computing paths relative to the
\r
1746 <div class="sect2">
\r
1747 <h3 id="_other_2">Other</h3>
\r
1748 <div class="ulist"><ul>
\r
1751 Made git version macro work when compiling outside of the source directory.
\r
1756 Fixed <code>static_assert</code> macro definition clash with GCC 4.7.
\r
1763 <div class="sect1">
\r
1764 <h2 id="_ccache_3_1_7">ccache 3.1.7</h2>
\r
1765 <div class="sectionbody">
\r
1766 <div class="paragraph"><p>Release date: 2012-01-08</p></div>
\r
1767 <div class="sect2">
\r
1768 <h3 id="_bug_fixes_15">Bug fixes</h3>
\r
1769 <div class="ulist"><ul>
\r
1772 Non-writable <code>CCACHE_DIR</code> is now handled gracefully when <code>CCACHE_READONLY</code> is
\r
1778 Made failure to create files (typically due to bad directory permissions) in
\r
1779 the cache directory fatal. Previously, such failures were silently and
\r
1780 erroneously flagged as "compiler produced stdout".
\r
1785 Both the <code>-specs=file</code> and <code>--specs=file</code> forms are now recognized.
\r
1790 Added recognition and hashing of GCC plugins specified with <code>-fplugin=file</code>.
\r
1795 <code>CCACHE_COMPILERCHECK</code> now also determines how to hash explicit specs files
\r
1796 (<code>-specs=file</code>).
\r
1801 Added <code>CPATH</code>, <code>C_INCLUDE_PATH</code> and similar environment variables to the hash
\r
1802 to avoid false cache hits when such variables have changed.
\r
1807 Corrected log message when unify mode is enabled.
\r
1812 Reverted the GCC bug compatibility introduced in ccache 3.1.5 for <code>-MT</code>/<code>-MQ</code>
\r
1813 options with concatenated arguments. (The bug is fixed in recent GCC
\r
1819 <div class="sect2">
\r
1820 <h3 id="_other_3">Other</h3>
\r
1821 <div class="ulist"><ul>
\r
1824 Corrected license header for <code>mdfour.c</code>.
\r
1829 Improved documentation on how to fix bad object files in the cache.
\r
1836 <div class="sect1">
\r
1837 <h2 id="_ccache_3_1_6">ccache 3.1.6</h2>
\r
1838 <div class="sectionbody">
\r
1839 <div class="paragraph"><p>Release date: 2011-08-21</p></div>
\r
1840 <div class="sect2">
\r
1841 <h3 id="_new_features_and_improvements_8">New features and improvements</h3>
\r
1842 <div class="ulist"><ul>
\r
1845 Rewrite argument to <code>--sysroot</code> if <code>CCACHE_BASEDIR</code> is used.
\r
1850 <div class="sect2">
\r
1851 <h3 id="_bug_fixes_16">Bug fixes</h3>
\r
1852 <div class="ulist"><ul>
\r
1855 Don’t crash if <code>getcwd()</code> fails.
\r
1860 Fixed alignment of “called for preprocessing” counter.
\r
1867 <div class="sect1">
\r
1868 <h2 id="_ccache_3_1_5">ccache 3.1.5</h2>
\r
1869 <div class="sectionbody">
\r
1870 <div class="paragraph"><p>Release date: 2011-05-29</p></div>
\r
1871 <div class="sect2">
\r
1872 <h3 id="_new_features_and_improvements_9">New features and improvements</h3>
\r
1873 <div class="ulist"><ul>
\r
1876 Added a new statistics counter named “called for preprocessing”.
\r
1881 The original command line is now logged to the file specified with
\r
1882 <code>CCACHE_LOGFILE</code>.
\r
1887 Improved error logging when system calls fail.
\r
1892 Added support for rewriting absolute paths in <code>-F</code>/<code>-iframework</code> GCC
\r
1898 Improved order of statistics counters in <code>ccache -s</code> output.
\r
1903 <div class="sect2">
\r
1904 <h3 id="_bug_fixes_17">Bug fixes</h3>
\r
1905 <div class="ulist"><ul>
\r
1908 The <code>-MF</code>/<code>-MT</code>/<code>-MQ</code> options with concatenated argument are now handled
\r
1909 correctly when they are last on the command line.
\r
1914 ccache is now bug compatible with GCC for the <code>-MT</code>/<code>-MQ</code> options with
\r
1915 concatenated arguments.
\r
1920 Fixed a minor memory leak.
\r
1925 Systems that lack (and don’t need to be linked with) libm are now supported.
\r
1932 <div class="sect1">
\r
1933 <h2 id="_ccache_3_1_4">ccache 3.1.4</h2>
\r
1934 <div class="sectionbody">
\r
1935 <div class="paragraph"><p>Release date: 2011-01-09</p></div>
\r
1936 <div class="sect2">
\r
1937 <h3 id="_bug_fixes_18">Bug fixes</h3>
\r
1938 <div class="ulist"><ul>
\r
1941 Made a work-around for a bug in <code>gzputc()</code> in zlib 1.2.5.
\r
1946 Corrupt manifest files are now removed so that they won’t block direct mode
\r
1952 ccache now copes with file systems that don’t know about symbolic links.
\r
1957 The file handle in now correctly closed on write error when trying to create
\r
1965 <div class="sect1">
\r
1966 <h2 id="_ccache_3_1_3">ccache 3.1.3</h2>
\r
1967 <div class="sectionbody">
\r
1968 <div class="paragraph"><p>Release date: 2010-11-28</p></div>
\r
1969 <div class="sect2">
\r
1970 <h3 id="_bug_fixes_19">Bug fixes</h3>
\r
1971 <div class="ulist"><ul>
\r
1974 The -MFarg, -MTarg and -MQarg compiler options (i.e, without space between
\r
1975 option and argument) are now handled correctly.
\r
1980 <div class="sect2">
\r
1981 <h3 id="_other_4">Other</h3>
\r
1982 <div class="ulist"><ul>
\r
1985 Portability fixes for HP-UX 11.00 and other esoteric systems.
\r
1992 <div class="sect1">
\r
1993 <h2 id="_ccache_3_1_2">ccache 3.1.2</h2>
\r
1994 <div class="sectionbody">
\r
1995 <div class="paragraph"><p>Release date: 2010-11-21</p></div>
\r
1996 <div class="sect2">
\r
1997 <h3 id="_bug_fixes_20">Bug fixes</h3>
\r
1998 <div class="ulist"><ul>
\r
2001 Bail out on too hard compiler options <code>-fdump-*</code>.
\r
2006 NULL return values from malloc/calloc of zero bytes are now handled
\r
2012 Fixed issue when parsing precompiler output on AIX.
\r
2017 <div class="sect2">
\r
2018 <h3 id="_other_5">Other</h3>
\r
2019 <div class="ulist"><ul>
\r
2022 Improved documentation on which information is included in the hash sum.
\r
2027 Made the “too new header file” test case work on file systems with
\r
2028 unsynchronized clocks.
\r
2033 The test suite now also works on systems that lack a /dev/zero.
\r
2040 <div class="sect1">
\r
2041 <h2 id="_ccache_3_1_1">ccache 3.1.1</h2>
\r
2042 <div class="sectionbody">
\r
2043 <div class="paragraph"><p>Release date: 2010-11-07</p></div>
\r
2044 <div class="sect2">
\r
2045 <h3 id="_bug_fixes_21">Bug fixes</h3>
\r
2046 <div class="ulist"><ul>
\r
2049 ccache now falls back to preprocessor mode when a non-regular include file
\r
2050 (device, socket, etc) has been detected so that potential hanging due to
\r
2051 blocking reads is avoided.
\r
2056 CRC errors are now detected when decompressing compressed files in the cache.
\r
2061 Fixed potential object file corruption race on NFS.
\r
2066 Minor documentation corrections.
\r
2071 Fixed configure detection of ar.
\r
2076 ccache development version (set by dev.mk) now works with gits whose
\r
2077 <code>describe</code> command doesn’t understand <code>--dirty</code>.
\r
2082 <div class="sect2">
\r
2083 <h3 id="_other_6">Other</h3>
\r
2084 <div class="ulist"><ul>
\r
2087 Minor debug log message improvements.
\r
2094 <div class="sect1">
\r
2095 <h2 id="_ccache_3_1">ccache 3.1</h2>
\r
2096 <div class="sectionbody">
\r
2097 <div class="paragraph"><p>Release date: 2010-09-16</p></div>
\r
2098 <div class="sect2">
\r
2099 <h3 id="_new_features_and_improvements_10">New features and improvements</h3>
\r
2100 <div class="ulist"><ul>
\r
2103 Added support for hashing the output of a custom command (e.g. <code>%compiler%
\r
2104 --version</code>) to identify the compiler instead of stat-ing or hashing the
\r
2105 compiler binary. This can improve robustness when the compiler (as seen by
\r
2106 ccache) actually isn’t the real compiler but another compiler wrapper.
\r
2111 Added support for caching compilations that use precompiled headers. (See the
\r
2112 manual for important instructions regarding this.)
\r
2117 Locking of the files containing statistics counters is now done using
\r
2118 symlinks instead of POSIX locks. This should make ccache behave a lot better
\r
2119 on file systems where POSIX locks are slow or broken (e.g. NFS on some
\r
2125 Manifest files are now updated without the need of taking locks.
\r
2130 Updates of statistics counters are now always done in one of the sub-level
\r
2131 statistics files. This reduces lock contention, which especially improves
\r
2132 performance on slow NFS mounts.
\r
2137 Reading and writing of statistics counters has been made forward-compatible
\r
2138 (unknown counters are retained).
\r
2143 Files are now read without using <code>mmap()</code>. This has two benefits: it’s more
\r
2144 robust against file changes during reading and it improves performance on
\r
2145 poor systems where <code>mmap()</code> doesn’t use the disk cache.
\r
2150 Added <code>.cp</code> and <code>.CP</code> as known C++ suffixes.
\r
2160 Added <code>-install_name</code> as an option known to take an argument. (This improves
\r
2161 statistics when using the Darwin linker.)
\r
2166 <div class="sect2">
\r
2167 <h3 id="_bug_fixes_22">Bug fixes</h3>
\r
2168 <div class="ulist"><ul>
\r
2171 Non-fatal error messages are now never printed to stderr but logged instead.
\r
2176 Fixed a bug affecting failing commands when <code>--ccache-skip</code> is used.
\r
2181 Made <code>--ccache-skip</code> work for all options.
\r
2186 EINTR is now handled correctly.
\r
2191 <div class="sect2">
\r
2192 <h3 id="_other_7">Other</h3>
\r
2193 <div class="ulist"><ul>
\r
2196 Work on porting ccache to win32 (native), mostly done by Ramiro Polla. The
\r
2197 port is not yet finished, but will hopefully be complete in some subsequent
\r
2203 Added a <code>--nostats</code> flag to the performance benchmark program.
\r
2208 Made the performance benchmark program more accurate when measuring cache
\r
2214 Added a new test framework for unit tests written in C.
\r
2219 Got rid of <code>configure-dev</code>; dev mode is now given by <code>dev.mk.in</code> presence.
\r
2224 Improved documentation on how to combine ccache with other compiler wrappers
\r
2225 (like <code>distcc</code>).
\r
2230 New <code>LICENSE.txt</code> file with licensing and copyright details about bundled
\r
2236 New <code>AUTHORS.txt</code> file with a list of ccache contributors.
\r
2241 New <code>HACKING.txt</code> file with some notes about ccache code conventions.
\r
2248 <div class="sect1">
\r
2249 <h2 id="_ccache_3_0_1">ccache 3.0.1</h2>
\r
2250 <div class="sectionbody">
\r
2251 <div class="paragraph"><p>Release date: 2010-07-15</p></div>
\r
2252 <div class="sect2">
\r
2253 <h3 id="_bug_fixes_23">Bug fixes</h3>
\r
2254 <div class="ulist"><ul>
\r
2257 The statistics counter “called for link” is now correctly updated when
\r
2258 linking with a single object file.
\r
2263 Fixed a problem with out-of-source builds.
\r
2270 <div class="sect1">
\r
2271 <h2 id="_ccache_3_0">ccache 3.0</h2>
\r
2272 <div class="sectionbody">
\r
2273 <div class="paragraph"><p>Release date: 2010-06-20</p></div>
\r
2274 <div class="sect2">
\r
2275 <h3 id="_general">General</h3>
\r
2276 <div class="ulist"><ul>
\r
2279 ccache is now licensed under the GNU General Public License (GPL) version 3
\r
2285 <div class="sect2">
\r
2286 <h3 id="_upgrade_notes">Upgrade notes</h3>
\r
2287 <div class="ulist"><ul>
\r
2290 The way the hashes are calculated has changed, so you won’t get cache hits
\r
2291 for compilation results stored by older ccache versions. Because of this, you
\r
2292 might as well clear the old cache directory with <code>ccache --clear</code> if you
\r
2293 want, unless you plan to keep using an older ccache version.
\r
2298 <div class="sect2">
\r
2299 <h3 id="_new_features_and_improvements_11">New features and improvements</h3>
\r
2300 <div class="ulist"><ul>
\r
2303 ccache now has a “direct mode” where it computes a hash of the source code
\r
2304 (including all included files) and compiler options without running the
\r
2305 preprocessor. By not running the preprocessor, CPU usage is reduced; the
\r
2306 speed is somewhere between 1 and 5 times that of ccache running in
\r
2307 traditional mode, depending on the circumstances. The speedup will be higher
\r
2308 when I/O is fast (e.g., when files are in the disk cache). The direct mode
\r
2309 can be disabled by setting <code>CCACHE_NODIRECT</code>.
\r
2314 Support has been added for rewriting absolute paths to relative paths when
\r
2315 hashing, in order to increase cache hit rate when building the same source
\r
2316 code in different directories even when compiling with <code>-g</code> and when using
\r
2317 absolute include directory paths. This is done by setting the
\r
2318 <code>CCACHE_BASEDIR</code> environment variable to an absolute path that specifies
\r
2319 which paths to rewrite.
\r
2324 Object files are now optionally stored compressed in the cache. The runtime
\r
2325 cost is negligible, and more files will fit in the ccache directory and in
\r
2326 the disk cache. Set <code>CCACHE_COMPRESS</code> to enable object file compression. Note
\r
2327 that you can’t use compression in combination with the hard link feature.
\r
2332 A <code>CCACHE_COMPILERCHECK</code> option has been added. This option tells ccache what
\r
2333 compiler-identifying information to hash to ensure that results retrieved
\r
2334 from the cache are accurate. Possible values are: none (don’t hash anything),
\r
2335 mtime (hash the compiler’s mtime and size) and content (hash the content of
\r
2336 the compiler binary). The default is mtime.
\r
2341 It is now possible to specify extra files whose contents should be included
\r
2342 in the hash sum by setting the <code>CCACHE_EXTRAFILES</code> option.
\r
2347 Added support for Objective-C and Objective-C++. The statistics counter
\r
2348 “not a C/C++ file” has been renamed to “unsupported source language”.
\r
2353 Added support for the <code>-x</code> compiler option.
\r
2358 Added support for long command-line options.
\r
2363 A <code>CACHEDIR.TAG</code> file is now created in the cache directory. See
\r
2364 <a href="http://www.brynosaurus.com/cachedir/">http://www.brynosaurus.com/cachedir/</a>.
\r
2369 Messages printed to the debug log (specified by <code>CCACHE_LOGFILE</code>) have been
\r
2375 You can relax some checks that ccache does in direct mode by setting
\r
2376 <code>CCACHE_SLOPPINESS</code>. See the manual for more information.
\r
2381 <code>CCACHE_TEMPDIR</code> no longer needs to be on the same filesystem as
\r
2382 <code>CCACHE_DIR</code>.
\r
2387 The default value of <code>CCACHE_TEMPDIR</code> has been changed to <code>$CCACHE_DIR/tmp</code>
\r
2388 to avoid cluttering the top directory.
\r
2393 Temporary files that later will be moved into the cache are now created in
\r
2394 the cache directory they will end up in. This makes ccache more friendly to
\r
2395 Linux’s directory layout.
\r
2400 Improved the test suite and added tests for most of the new functionality.
\r
2401 It’s now also possible to specify a subset of tests to run.
\r
2406 Standard error output from the compiler is now only stored in the cache if
\r
2407 it’s non-empty.
\r
2412 If the compiler produces no object file or an empty object file, but gives a
\r
2413 zero exit status (could be due to a file system problem, a buggy program
\r
2414 specified by <code>CCACHE_PREFIX</code>, etc.), ccache copes with it properly.
\r
2419 Added <code>installcheck</code> and <code>distcheck</code> make targets.
\r
2424 Clarified cache size limit options' and cleanup semantics.
\r
2429 Improved display of cache max size values.
\r
2434 The following options are no longer hashed in the preprocessor mode:
\r
2435 <code>-imacros</code>, <code>-imultilib</code>, <code>-iprefix</code>, <code>-iquote</code>, <code>-isysroot</code>, <code>-iwithprefix</code>,
\r
2436 <code>-iwithprefixbefore</code>, <code>-nostdinc</code>, <code>-nostdinc++</code> and <code>-U</code>.
\r
2441 <div class="sect2">
\r
2442 <h3 id="_bug_fixes_24">Bug fixes</h3>
\r
2443 <div class="ulist"><ul>
\r
2446 Various portability improvements.
\r
2451 Improved detection of home directory.
\r
2456 User-defined <code>CPPFLAGS</code> and <code>LDFLAGS</code> are now respected in the Makefile.
\r
2466 Computation of the hash sum has been improved to decrease the risk of hash
\r
2467 collisions. For instance, the compiler options <code>-X -Y</code> and <code>-X-Y</code> previously
\r
2468 contributed equally to the hash sum.
\r
2473 Bail out on too hard compiler options <code>--coverage</code>, <code>-fprofile-arcs</code>,
\r
2474 <code>-fprofile-generate</code>, <code>-fprofile-use</code>, <code>-frepo</code>, <code>-ftest-coverage</code> and
\r
2475 <code>-save-temps</code>. Also bail out on <code>@file</code> style options.
\r
2480 Errors when using multiple <code>-arch</code> compiler options are now noted as
\r
2481 “unsupported compiler option”.
\r
2486 <code>-MD</code>/<code>-MMD</code> options without <code>-MT</code>/<code>-MF</code> are now handled correctly.
\r
2491 The <code>-finput-charset</code> option is now handled correctly.
\r
2496 Added support for <code>-Wp,-MD</code> and <code>-Wp,-MMD</code> options.
\r
2501 The compiler options <code>-Xassembler</code>, <code>-b</code>, <code>-G</code> and <code>-V</code> are now correctly
\r
2502 recognized as taking an argument.
\r
2507 Debug information containing line numbers of predefined and command-line
\r
2508 macros (enabled with the compiler option <code>-g3</code>) will now be correct.
\r
2513 Corrected LRU cleanup handling of object files.
\r
2518 <code>utimes()</code> is now used instead of <code>utime()</code> when available.
\r
2523 Non-writable cache directories are now handled gracefully.
\r
2528 Corrected documentation about sharing the cache directory.
\r
2533 Fixed compilation warnings from GCC 4.3.
\r
2538 The command specified by <code>CCACHE_PREFIX</code> is no longer part of the hash.
\r
2543 Fixed bad memory access spotted by Valgrind.
\r
2548 Fixed a bug in <code>x_realloc</code>.
\r
2553 Freed memory is no longer referenced when compiling a <code>.i</code>/<code>.ii</code> file and
\r
2554 falling back to running the real compiler.
\r
2559 The test suite is now immune to external values of the <code>CCACHE_*</code> environment
\r
2565 Improved detection of recursive invocation.
\r
2570 The ccache binary is now not unconditionally stripped when installing.
\r
2575 Statistics counters are now correctly updated for -E option failures and
\r
2584 <div id="footnotes"><hr /></div>
\r
2586 <div id="footer-text">
\r
2589 2016-08-27 16:52:44 CEST
\r