<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.3" />\r
+<meta name="generator" content="AsciiDoc 8.6.9" />\r
<title>ccache news</title>\r
<style type="text/css">\r
-/* Sans-serif font. */\r
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
+\r
+/* Default font. */\r
+body {\r
+ font-family: Georgia,serif;\r
+}\r
+\r
+/* Title font. */\r
h1, h2, h3, h4, h5, h6,\r
div.title, caption.title,\r
thead, p.table.header,\r
-div#toctitle,\r
-span#author, span#revnumber, span#revdate, span#revremark,\r
-div#footer {\r
+#toctitle,\r
+#author, #revnumber, #revdate, #revremark,\r
+#footer {\r
font-family: Arial,Helvetica,sans-serif;\r
}\r
\r
-/* Serif font. */\r
-div.sectionbody {\r
- font-family: Georgia,"Times New Roman",Times,serif;\r
-}\r
-\r
-/* Monospace font. */\r
-tt {\r
- font-size: inherit;\r
-}\r
-\r
body {\r
margin: 1em 5% 1em 5%;\r
}\r
color: #083194;\r
}\r
\r
-tt {\r
- font-size: inherit;\r
- color: navy;\r
-}\r
-\r
h1, h2, h3, h4, h5, h6 {\r
color: #527bbd;\r
margin-top: 1.2em;\r
h3 + * {\r
clear: left;\r
}\r
+h5 {\r
+ font-size: 1.0em;\r
+}\r
\r
div.sectionbody {\r
margin-left: 0;\r
ul > li { color: #aaa; }\r
ul > li > * { color: black; }\r
\r
-pre {\r
+.monospaced, code, pre {\r
+ font-family: "Courier New", Courier, monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
padding: 0;\r
margin: 0;\r
}\r
+pre {\r
+ white-space: pre-wrap;\r
+}\r
\r
-span#author {\r
+#author {\r
color: #527bbd;\r
font-weight: bold;\r
font-size: 1.1em;\r
}\r
-span#email {\r
+#email {\r
}\r
-span#revnumber, span#revdate, span#revremark {\r
+#revnumber, #revdate, #revremark {\r
}\r
\r
-div#footer {\r
+#footer {\r
font-size: small;\r
border-top: 2px solid silver;\r
padding-top: 0.5em;\r
margin-top: 4.0em;\r
}\r
-div#footer-text {\r
+#footer-text {\r
float: left;\r
padding-bottom: 0.5em;\r
}\r
-div#footer-badges {\r
+#footer-badges {\r
float: right;\r
padding-bottom: 0.5em;\r
}\r
\r
-div#preamble {\r
+#preamble {\r
margin-top: 1.5em;\r
margin-bottom: 1.5em;\r
}\r
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.imageblock, div.exampleblock, div.verseblock,\r
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
div.admonitionblock {\r
margin-top: 1.0em;\r
margin-left: 1.0em;\r
margin-right: 10%;\r
border-left: 5px solid #f0f0f0;\r
- color: #777777;\r
+ color: #888;\r
}\r
\r
div.quoteblock > div.attribution {\r
}\r
\r
div.imageblock div.content { padding-left: 0; }\r
-span.image img { border-style: none; }\r
+span.image img { border-style: none; vertical-align: text-bottom; }\r
a.image:visited { color: white; }\r
\r
dl {\r
margin-bottom: 0.1em;\r
}\r
\r
-div.tableblock > table {\r
- border: 3px solid #527bbd;\r
-}\r
-thead, p.table.header {\r
- font-weight: bold;\r
- color: #527bbd;\r
-}\r
tfoot {\r
font-weight: bold;\r
}\r
td > div.verse {\r
white-space: pre;\r
}\r
-p.table {\r
- margin-top: 0;\r
-}\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
-div.tableblock > table[frame="void"] {\r
- border-style: none;\r
-}\r
-div.tableblock > table[frame="hsides"] {\r
- border-left-style: none;\r
- border-right-style: none;\r
-}\r
-div.tableblock > table[frame="vsides"] {\r
- border-top-style: none;\r
- border-bottom-style: none;\r
-}\r
-\r
\r
div.hdlist {\r
margin-top: 0.8em;\r
}\r
\r
@media print {\r
- div#footer-badges { display: none; }\r
+ #footer-badges { display: none; }\r
}\r
\r
-div#toc {\r
+#toc {\r
margin-bottom: 2.5em;\r
}\r
\r
-div#toctitle {\r
+#toctitle {\r
color: #527bbd;\r
font-size: 1.1em;\r
font-weight: bold;\r
margin-bottom: 0.1em;\r
}\r
\r
-div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
+div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
margin-top: 0;\r
margin-bottom: 0;\r
}\r
font-size: 0.9em;\r
}\r
\r
+span.aqua { color: aqua; }\r
+span.black { color: black; }\r
+span.blue { color: blue; }\r
+span.fuchsia { color: fuchsia; }\r
+span.gray { color: gray; }\r
+span.green { color: green; }\r
+span.lime { color: lime; }\r
+span.maroon { color: maroon; }\r
+span.navy { color: navy; }\r
+span.olive { color: olive; }\r
+span.purple { color: purple; }\r
+span.red { color: red; }\r
+span.silver { color: silver; }\r
+span.teal { color: teal; }\r
+span.white { color: white; }\r
+span.yellow { color: yellow; }\r
+\r
+span.aqua-background { background: aqua; }\r
+span.black-background { background: black; }\r
+span.blue-background { background: blue; }\r
+span.fuchsia-background { background: fuchsia; }\r
+span.gray-background { background: gray; }\r
+span.green-background { background: green; }\r
+span.lime-background { background: lime; }\r
+span.maroon-background { background: maroon; }\r
+span.navy-background { background: navy; }\r
+span.olive-background { background: olive; }\r
+span.purple-background { background: purple; }\r
+span.red-background { background: red; }\r
+span.silver-background { background: silver; }\r
+span.teal-background { background: teal; }\r
+span.white-background { background: white; }\r
+span.yellow-background { background: yellow; }\r
+\r
+span.big { font-size: 2em; }\r
+span.small { font-size: 0.6em; }\r
+\r
+span.underline { text-decoration: underline; }\r
+span.overline { text-decoration: overline; }\r
+span.line-through { text-decoration: line-through; }\r
+\r
+div.unbreakable { page-break-inside: avoid; }\r
+\r
+\r
+/*\r
+ * xhtml11 specific\r
+ *\r
+ * */\r
+\r
+div.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+div.tableblock > table {\r
+ border: 3px solid #527bbd;\r
+}\r
+thead, p.table.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.table {\r
+ margin-top: 0;\r
+}\r
+/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+div.tableblock > table[frame="void"] {\r
+ border-style: none;\r
+}\r
+div.tableblock > table[frame="hsides"] {\r
+ border-left-style: none;\r
+ border-right-style: none;\r
+}\r
+div.tableblock > table[frame="vsides"] {\r
+ border-top-style: none;\r
+ border-bottom-style: none;\r
+}\r
+\r
+\r
+/*\r
+ * html5 specific\r
+ *\r
+ * */\r
+\r
+table.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+thead, p.tableblock.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.tableblock {\r
+ margin-top: 0;\r
+}\r
+table.tableblock {\r
+ border-width: 3px;\r
+ border-spacing: 0px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+ border-collapse: collapse;\r
+}\r
+th.tableblock, td.tableblock {\r
+ border-width: 1px;\r
+ padding: 4px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+}\r
+\r
+table.tableblock.frame-topbot {\r
+ border-left-style: hidden;\r
+ border-right-style: hidden;\r
+}\r
+table.tableblock.frame-sides {\r
+ border-top-style: hidden;\r
+ border-bottom-style: hidden;\r
+}\r
+table.tableblock.frame-none {\r
+ border-style: hidden;\r
+}\r
+\r
+th.tableblock.halign-left, td.tableblock.halign-left {\r
+ text-align: left;\r
+}\r
+th.tableblock.halign-center, td.tableblock.halign-center {\r
+ text-align: center;\r
+}\r
+th.tableblock.halign-right, td.tableblock.halign-right {\r
+ text-align: right;\r
+}\r
+\r
+th.tableblock.valign-top, td.tableblock.valign-top {\r
+ vertical-align: top;\r
+}\r
+th.tableblock.valign-middle, td.tableblock.valign-middle {\r
+ vertical-align: middle;\r
+}\r
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
+ vertical-align: bottom;\r
+}\r
+\r
+\r
+/*\r
+ * manpage specific\r
+ *\r
+ * */\r
+\r
+body.manpage h1 {\r
+ padding-top: 0.5em;\r
+ padding-bottom: 0.5em;\r
+ border-top: 2px solid silver;\r
+ border-bottom: 2px solid silver;\r
+}\r
+body.manpage h2 {\r
+ border-style: none;\r
+}\r
+body.manpage div.sectionbody {\r
+ margin-left: 3em;\r
+}\r
+\r
+@media print {\r
+ body.manpage div#toc { display: none; }\r
+}\r
+\r
+\r
</style>\r
<script type="text/javascript">\r
/*<![CDATA[*/\r
-window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
var asciidoc = { // Namespace.\r
\r
/////////////////////////////////////////////////////////////////////\r
\r
function tocEntries(el, toclevels) {\r
var result = new Array;\r
- var re = new RegExp('[hH]([2-'+(toclevels+1)+'])');\r
+ var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
// Function that scans the DOM tree for header elements (the DOM2\r
// nodeIterator API would be a better technique but not supported by all\r
// browsers).\r
}\r
\r
var toc = document.getElementById("toc");\r
+ if (!toc) {\r
+ return;\r
+ }\r
+\r
+ // Delete existing TOC entries in case we're reloading the TOC.\r
+ var tocEntriesToRemove = [];\r
+ var i;\r
+ for (i = 0; i < toc.childNodes.length; i++) {\r
+ var entry = toc.childNodes[i];\r
+ if (entry.nodeName.toLowerCase() == 'div'\r
+ && entry.getAttribute("class")\r
+ && entry.getAttribute("class").match(/^toclevel/))\r
+ tocEntriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+ toc.removeChild(tocEntriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild TOC entries.\r
var entries = tocEntries(document.getElementById("content"), toclevels);\r
for (var i = 0; i < entries.length; ++i) {\r
var entry = entries[i];\r
*/\r
\r
footnotes: function () {\r
- var cont = document.getElementById("content");\r
+ // Delete existing footnote entries in case we're reloading the footnodes.\r
+ var i;\r
var noteholder = document.getElementById("footnotes");\r
+ if (!noteholder) {\r
+ return;\r
+ }\r
+ var entriesToRemove = [];\r
+ for (i = 0; i < noteholder.childNodes.length; i++) {\r
+ var entry = noteholder.childNodes[i];\r
+ if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
+ entriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < entriesToRemove.length; i++) {\r
+ noteholder.removeChild(entriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild footnote entries.\r
+ var cont = document.getElementById("content");\r
var spans = cont.getElementsByTagName("span");\r
var refs = {};\r
var n = 0;\r
for (i=0; i<spans.length; i++) {\r
if (spans[i].className == "footnote") {\r
n++;\r
- // Use [\s\S] in place of . so multi-line matches work.\r
- // Because JavaScript has no s (dotall) regex flag.\r
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ var note = spans[i].getAttribute("data-note");\r
+ if (!note) {\r
+ // Use [\s\S] in place of . so multi-line matches work.\r
+ // Because JavaScript has no s (dotall) regex flag.\r
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ spans[i].innerHTML =\r
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ spans[i].setAttribute("data-note", note);\r
+ }\r
noteholder.innerHTML +=\r
"<div class='footnote' id='_footnote_" + n + "'>" +\r
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
n + "</a>. " + note + "</div>";\r
- spans[i].innerHTML =\r
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
- "' title='View footnote' class='footnote'>" + n + "</a>]";\r
var id =spans[i].getAttribute("id");\r
if (id != null) refs["#"+id] = n;\r
}\r
}\r
}\r
}\r
+},\r
+\r
+install: function(toclevels) {\r
+ var timerId;\r
+\r
+ function reinstall() {\r
+ asciidoc.footnotes();\r
+ if (toclevels) {\r
+ asciidoc.toc(toclevels);\r
+ }\r
+ }\r
+\r
+ function reinstallAndRemoveTimer() {\r
+ clearInterval(timerId);\r
+ reinstall();\r
+ }\r
+\r
+ timerId = setInterval(reinstall, 500);\r
+ if (document.addEventListener)\r
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+ else\r
+ window.onload = reinstallAndRemoveTimer;\r
}\r
\r
}\r
+asciidoc.install(2);\r
/*]]>*/\r
</script>\r
</head>\r
<body class="article">\r
<div id="header">\r
<h1>ccache news</h1>\r
-<span id="revnumber">version 3.1.6</span>\r
+<span id="revnumber">version 3.4</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
</div>\r
<div id="content">\r
<div class="sect1">\r
-<h2 id="_ccache_3_1_6">ccache 3.1.6</h2>\r
+<h2 id="_ccache_3_4">ccache 3.4</h2>\r
<div class="sectionbody">\r
-<div class="paragraph"><p>Release date: 2011-08-21</p></div>\r
-<div class="sect2">\r
-<h3 id="_new_features_and_improvements">New features and improvements</h3>\r
-<div class="ulist"><ul>\r
-<li>\r
-<p>\r
-Rewrite argument to --sysroot if CCACHE_BASEDIR is used.\r
-</p>\r
-</li>\r
-</ul></div>\r
-</div>\r
+<div class="paragraph"><p>Release date: 2018-02-11</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes">Bug fixes</h3>\r
+<h3 id="_new_features_and_enhancements">New features and enhancements</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-Don’t crash if getcwd() fails.\r
+The compiler option form <code>--sysroot arg</code> is now handled like the documented\r
+ <code>--sysroot=arg</code> form.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Fixed alignment of "called for preprocessing" counter.\r
+Added support for caching <code>.su</code> files generated by GCC flag <code>-fstack-usage</code>.\r
</p>\r
</li>\r
-</ul></div>\r
-</div>\r
-</div>\r
-</div>\r
-<div class="sect1">\r
-<h2 id="_ccache_3_1_5">ccache 3.1.5</h2>\r
-<div class="sectionbody">\r
-<div class="paragraph"><p>Release date: 2011-05-29</p></div>\r
-<div class="sect2">\r
-<h3 id="_new_features_and_improvements_2">New features and improvements</h3>\r
-<div class="ulist"><ul>\r
<li>\r
<p>\r
-Added a new statistics counter named “called for preprocessing”.\r
+ccache should now work with distcc’s “pump” wrapper.\r
</p>\r
</li>\r
<li>\r
<p>\r
-The original command line is now logged to the file specified with\r
- <tt>CCACHE_LOGFILE</tt>.\r
+The optional unifier is no longer disabled when the direct mode is enabled.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Improved error logging when system calls fail.\r
+Added support for nvcc compiler options <code>--compiler-bindir/-ccbin</code>,\r
+ <code>--output-directory/-odir</code> and <code>--libdevice-directory/-ldir</code>.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Added support for rewriting absolute paths in <tt>-F</tt>/<tt>-iframework</tt> GCC\r
- options.\r
+Boolean environment variable settings no longer accept the following\r
+ (case-insensitive) values: <code>0</code>, <code>false</code>, <code>disable</code> and <code>no</code>. All other values\r
+ are accepted and taken to mean “true”. This is to stop users from setting\r
+ e.g. <code>CCACHE_DISABLE=0</code> and then expect the cache to be used.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Improved order of statistics counters in <tt>ccache -s</tt> output.\r
+Improved support for <code>run_second_cpp = false</code>: If combined with passing\r
+ <code>-fdirectives-only</code> (GCC) or <code>frewrite-includes</code> (Clang) to the compiler,\r
+ diagnostics warnings and similar will be correct.\r
</p>\r
</li>\r
-</ul></div>\r
-</div>\r
-<div class="sect2">\r
-<h3 id="_bug_fixes_2">Bug fixes</h3>\r
-<div class="ulist"><ul>\r
<li>\r
<p>\r
-The <tt>-MF</tt>/<tt>-MT</tt>/<tt>-MQ</tt> options with concatenated argument are now handled\r
- correctly when they are last on the command line.\r
+An implicit <code>-MQ</code> is now passed to the preprocessor only if the object file\r
+ extension is non-standard. This should make it easier to use EDG-based\r
+ compilers (e.g. GHS) which don’t understand <code>-MQ</code>.\r
</p>\r
</li>\r
<li>\r
<p>\r
-ccache is now bug compatible with GCC for the <tt>-MT</tt>/<tt>-MQ</tt> options with\r
- concatenated arguments.\r
+ccache now treats an unreadable configuration file just like a missing\r
+ configuration file.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Fixed a minor memory leak.\r
+Documented more pitfalls with enabling <code>hard_links</code> (<code>CCACHE_HARDLINK</code>).\r
</p>\r
</li>\r
<li>\r
<p>\r
-Systems that lack (and don’t need to be linked with) libm are now\r
- supported.\r
+Documented caveats related to colored warnings from compilers.\r
</p>\r
</li>\r
</ul></div>\r
</div>\r
-</div>\r
-</div>\r
-<div class="sect1">\r
-<h2 id="_ccache_3_1_4">ccache 3.1.4</h2>\r
-<div class="sectionbody">\r
-<div class="paragraph"><p>Release date: 2011-01-09</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_3">Bug fixes</h3>\r
+<h3 id="_bug_fixes">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-Made a work-around for a bug in gzputc() in zlib 1.2.5.\r
-</p>\r
-</li>\r
-<li>\r
-<p>\r
-Corrupt manifest files are now removed so that they won’t block direct\r
- mode hits.\r
+File size and number counters are now updated correctly when files are\r
+ overwritten in the cache, e.g. when using <code>CCACHE_RECACHE</code>.\r
</p>\r
</li>\r
<li>\r
<p>\r
-ccache now copes with file systems that don’t know about symbolic links.\r
+<code>run_second_cpp</code> is now forced for nvcc.\r
</p>\r
</li>\r
<li>\r
<p>\r
-The file handle in now correctly closed on write error when trying to\r
- create a cache dir tag.\r
+Fixed how the nvcc options <code>-optf</code> and <code>-odir</code> are handled.\r
</p>\r
</li>\r
</ul></div>\r
</div>\r
</div>\r
<div class="sect1">\r
-<h2 id="_ccache_3_1_3">ccache 3.1.3</h2>\r
+<h2 id="_ccache_3_3_6">ccache 3.3.6</h2>\r
<div class="sectionbody">\r
-<div class="paragraph"><p>Release date: 2010-11-28</p></div>\r
+<div class="paragraph"><p>Release date: 2018-01-28</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_4">Bug fixes</h3>\r
+<h3 id="_new_features_and_enhancements_2">New features and enhancements</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-The -MFarg, -MTarg and -MQarg compiler options (i.e, without space\r
- between option and argument) are now handled correctly.\r
+Improved instructions on how to get cache hits between different working\r
+ directories.\r
</p>\r
</li>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_other">Other</h3>\r
+<h3 id="_bug_fixes_2">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-Portability fixes for HP-UX 11.00 and other esoteric systems.\r
+Fixed regression in ccache 3.3.5 related to the <code>UNCACHED_ERR_FD</code> feature.\r
</p>\r
</li>\r
</ul></div>\r
</div>\r
</div>\r
<div class="sect1">\r
-<h2 id="_ccache_3_1_2">ccache 3.1.2</h2>\r
+<h2 id="_ccache_3_3_5">ccache 3.3.5</h2>\r
<div class="sectionbody">\r
-<div class="paragraph"><p>Release date: 2010-11-21</p></div>\r
+<div class="paragraph"><p>Release date: 2018-01-13</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_5">Bug fixes</h3>\r
+<h3 id="_new_features_and_enhancements_3">New features and enhancements</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-Bail out on too hard compiler options <tt>-fdump-*</tt>.\r
-</p>\r
-</li>\r
-<li>\r
-<p>\r
-NULL return values from malloc/calloc of zero bytes are now handled\r
- correctly.\r
-</p>\r
-</li>\r
-<li>\r
-<p>\r
-Fixed issue when parsing precompiler output on AIX.\r
+Documented how automatic cache cleanup works.\r
</p>\r
</li>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_other_2">Other</h3>\r
+<h3 id="_bug_fixes_3">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-Improved documentation on which information is included in the hash sum.\r
+Fixed a regression where the original order of debug options could be lost.\r
+ This reverts the “Improved parsing of <code>-g*</code> options” feature in ccache 3.3.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Made the “too new header file” test case work on file systems with\r
- unsynchronized clocks.\r
+Multiple <code>-fdebug-prefix-map</code> options should now be handled correctly.\r
</p>\r
</li>\r
<li>\r
<p>\r
-The test suite now also works on systems that lack a /dev/zero.\r
+Fixed matching of directories in the <code>ignore_headers_in_manifest</code>\r
+ configuration option.\r
</p>\r
</li>\r
-</ul></div>\r
-</div>\r
-</div>\r
-</div>\r
-<div class="sect1">\r
-<h2 id="_ccache_3_1_1">ccache 3.1.1</h2>\r
-<div class="sectionbody">\r
-<div class="paragraph"><p>Release date: 2010-11-07</p></div>\r
-<div class="sect2">\r
-<h3 id="_bug_fixes_6">Bug fixes</h3>\r
-<div class="ulist"><ul>\r
<li>\r
<p>\r
-ccache now falls back to preprocessor mode when a non-regular include\r
- file (device, socket, etc) has been detected so that potential hanging\r
- due to blocking reads is avoided.\r
+Fixed detection of missing argument to <code>-opt</code>/<code>--options-file</code>.\r
</p>\r
</li>\r
<li>\r
<p>\r
-CRC errors are now detected when decompressing compressed files in the\r
- cache.\r
+ccache now bails out when building a precompiled header if any of the\r
+ corresponding header files have an updated timestamp. This fixes complaints\r
+ from clang.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Fixed potential object file corruption race on NFS.\r
+Fixed a bug related to erroneously storing a dependency file with absolute\r
+ paths in the cache on a preprocessed hit.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Minor documentation corrections.\r
+<code>ccache -c/--cleanup</code> now works like documented: it just recalculates size\r
+ counters and trims the cache to not exceed the max size and file number\r
+ limits. Previously, the forced cleanup took “limit_multiple” into account,\r
+ so that <code>ccache -c/--cleanup</code> by default would trim the cache to 80% of the\r
+ max limit.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Fixed configure detection of ar.\r
+ccache no longer ignores linker arguments for clang since clang warns about\r
+ them.\r
</p>\r
</li>\r
<li>\r
<p>\r
-ccache development version (set by dev.mk) now works with gits whose\r
- <tt>describe</tt> command doesn’t understand <tt>--dirty</tt>.\r
+Plugged a couple of file descriptor leaks.\r
</p>\r
</li>\r
-</ul></div>\r
-</div>\r
-<div class="sect2">\r
-<h3 id="_other_3">Other</h3>\r
-<div class="ulist"><ul>\r
<li>\r
<p>\r
-Minor debug log message improvements.\r
+Fixed a bug where ccache would skip hashing the compiler argument following a\r
+ <code>-fno-working-directory</code>, <code>-fworking-directory</code>, <code>-nostdinc</code>, <code>-nostdinc++</code>,\r
+ <code>-remap</code> or <code>-trigraphs</code> option in preprocessor mode.\r
</p>\r
</li>\r
</ul></div>\r
</div>\r
</div>\r
<div class="sect1">\r
-<h2 id="_ccache_3_1">ccache 3.1</h2>\r
+<h2 id="_ccache_3_3_4">ccache 3.3.4</h2>\r
<div class="sectionbody">\r
-<div class="paragraph"><p>Release date: 2010-09-16</p></div>\r
+<div class="paragraph"><p>Release date: 2017-02-17</p></div>\r
<div class="sect2">\r
-<h3 id="_new_features_and_improvements_3">New features and improvements</h3>\r
+<h3 id="_new_features_and_enhancements_4">New features and enhancements</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-Added support for hashing the output of a custom command (e.g.\r
- <tt>%compiler% --version</tt>) to identify the compiler instead of stat-ing or\r
- hashing the compiler binary. This can improve robustness when the\r
- compiler (as seen by ccache) actually isn’t the real compiler but another\r
- compiler wrapper.\r
-</p>\r
-</li>\r
-<li>\r
-<p>\r
-Added support for caching compilations that use precompiled headers. (See\r
- the manual for important instructions regarding this.)\r
+Documented the different cache statistics counters.\r
</p>\r
</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_4">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
<li>\r
<p>\r
-Locking of the files containing statistics counters is now done using\r
- symlinks instead of POSIX locks. This should make ccache behave a lot\r
- better on file systems where POSIX locks are slow or broken (e.g. NFS on\r
- some systems).\r
+Fixed a regression in ccache 3.3 related to potentially bad content of\r
+ dependency files when compiling identical source code but with different\r
+ source paths. This was only partially fixed in 3.3.2 and reverts the new\r
+ “Names of included files are no longer included in the hash of the\r
+ compiler’s preprocessed output” feature in 3.3.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Manifest files are now updated without the need of taking locks.\r
+Corrected statistics counter for <code>-optf</code>/<code>--options-file</code> failure.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Updates of statistics counters are now always done in one of the\r
- sub-level statistics files. This reduces lock contention, which\r
- especially improves performance on slow NFS mounts.\r
+Fixed undefined behavior warnings in ccache found by <code>-fsanitize=undefined</code>.\r
</p>\r
</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_3_3">ccache 3.3.3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-10-26</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_5">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
<li>\r
<p>\r
-Reading and writing of statistics counters has been made\r
- forward-compatible (unknown counters are retained).\r
+ccache now detects usage of <code>.incbin</code> assembler directives in the source code\r
+ and avoids caching such compilations.\r
</p>\r
</li>\r
-<li>\r
-<p>\r
-Files are now read without using mmap(). This has two benefits: it’s more\r
- robust against file changes during reading and it improves performance on\r
- poor systems where mmap() doesn’t use the disk cache.\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_3_2">ccache 3.3.2</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-09-28</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_6">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed a regression in ccache 3.3 related to potentially bad content of\r
+ dependency files when compiling identical source code but with different\r
+ source paths.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed a regression in ccache 3.3.1: ccache could get confused when using the\r
+ compiler option <code>-Wp,</code> to pass multiple options to the preprocessor,\r
+ resulting in missing dependency files from direct mode cache hits.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_3_1">ccache 3.3.1</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-09-07</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_7">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed a problem in the “multiple <code>-arch</code> options” support introduced in\r
+ 3.3. When using the direct mode (the default), different combinations of\r
+ <code>-arch</code> options were not detected properly.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed an issue when compiler option <code>-Wp,-MT,path</code> is used instead of <code>-MT\r
+ path</code> (and similar for <code>-MF</code>, <code>-MP</code> and <code>-MQ</code>) and <code>run_second_cpp</code>\r
+ (<code>CCACHE_CPP2</code>) is enabled.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_3">ccache 3.3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-08-27</p></div>\r
+<div class="sect2">\r
+<h3 id="_notes">Notes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+A C99-compatible compiler is now required to build ccache.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_5">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+The configuration option <code>run_second_cpp</code> (<code>CCACHE_CPP2</code>) now defaults to\r
+ true. This improves ccache’s out-of-the-box experience for compilers that\r
+ can’t compile their own preprocessed output with the same outcome as if they\r
+ compiled the real source code directly, e.g. newer versions of GCC and Clang.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The configuration option <code>hash_dir</code> (<code>CCACHE_HASHDIR</code>) now defaults to true.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added a new <code>ignore_headers_in_manifest</code> configuration option, which\r
+ specifies headers that should be ignored in the direct mode.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added a new <code>prefix_command_cpp</code> (<code>CCACHE_PREFIX_CPP</code>) configuration option,\r
+ which specifies one or several prefixes to add to the command line ccache\r
+ uses when invoking the preprocessor.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added a new <code>limit_multiple</code> (<code>CCACHE_LIMIT_MULTIPLE</code>) configuration option,\r
+ which specifies how much of the cache to remove when cleaning.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added a new <code>keep_comments_cpp</code> (<code>CCACHE_COMMENTS</code>) configuration option,\r
+ which tells ccache not to discard the comments before hashing preprocessor\r
+ output. This can be used to check documentation with <strong>-Wdocumentation</strong>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added a new sloppiness option <code>no_system_headers</code>, which tells ccache not to\r
+ include system headers in manifest files.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added a new statistics counter that tracks the number of performed cleanups\r
+ due to the cache size being over the limit. The value is shown in the output\r
+ of “ccache -s”.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for relocating debug info directory using <code>-fdebug-prefix-map</code>.\r
+ This allows for cache hits even when <code>hash_dir</code> is used in combination with\r
+ <code>base_dir</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added a new “cache hit rate” field to the output of “ccache -s”.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for caching compilation of assembler code produced by e.g.\r
+ “gcc -S file.c”.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for cuda including the -optf/--options-file option.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for Fortran 77.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for multiple <code>-arch</code> options to produce "fat binaries".\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Multiple identical <code>-arch</code> arguments are now handled without bailing.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The concatenated form of some long compiler options is now recognized, for\r
+ example when using <code>-isystemPATH</code> instead of <code>-isystem PATH</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+If hard-linking is enabled and but fails (e.g. due to cross-device linking),\r
+ ccache now falls back to copying instead of running the compiler.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made the <code>hash_dir</code> option only have effect when generating debug info.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache now knows how to convert absolute paths to relative paths inside\r
+ dependency files when using <code>base_dir</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved parsing of <code>-g*</code> options.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made ccache understand <code>-Wp,-D*</code> options.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache now understands the undocumented <code>-coverage</code> (only one dash) GCC\r
+ option.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Names of included files are no longer included in the hash of the compiler’s\r
+ preprocessed output. This leads to more potential cache hits when not using\r
+ the direct mode.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Increased buffer size used when reading file data. This improves performance\r
+ slightly.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_8">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Bail out on too hard compiler option <code>-P</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed clang test suite when running on Linux.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed build and test for MinGW32 and Windows.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2_9">ccache 3.2.9</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-09-28</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_9">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed a regression in ccache 3.2.8: ccache could get confused when using the\r
+ compiler option <code>-Wp,</code> to pass multiple options to the preprocessor,\r
+ resulting in missing dependency files from direct mode cache hits.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2_8">ccache 3.2.8</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-09-07</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_10">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed an issue when compiler option <code>-Wp,-MT,path</code> is used instead of <code>-MT\r
+ path</code> (and similar for <code>-MF</code>, <code>-MP</code> and <code>-MQ</code>) and <code>run_second_cpp</code>\r
+ (<code>CCACHE_CPP2</code>) is enabled.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache now understands the undocumented <code>-coverage</code> (only one dash) GCC\r
+ option.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2_7">ccache 3.2.7</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-07-20</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_11">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed a bug which could lead to false cache hits for compiler command lines\r
+ with a missing argument to an option that takes an argument.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache now knows how to work around a glitch in the output of GCC 6’s\r
+ preprocessor.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2_6">ccache 3.2.6</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-07-12</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_12">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed build problem on QNX, which lacks “SA_RESTART”.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Bail out on compiler option <code>-fstack-usage</code> since it creates a <code>.su</code> file\r
+ which ccache currently doesn’t handle.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed a bug where (due to ccache rewriting paths) the compiler could choose\r
+ incorrect include files if <code>CCACHE_BASEDIR</code> is used and the source file path\r
+ is absolute and is a symlink.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2_5">ccache 3.2.5</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-04-17</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_6">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Only pass clang-specific <code>-stdlib=</code> to the preprocessor.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved handling of stale NFS handles.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made it harder to misinterpret documentation of boolean environment settings'\r
+ semantics.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_13">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Include m4 files used by configure.ac in the source dist archives.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Corrected "Performance" section in the manual regarding <code>__DATE_</code>, <code>__TIME__</code>\r
+ and <code>__FILE__</code> macros.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed build on Solaris 10+ and AIX 7.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed failure to create directories on QNX.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Don’t (try to) update manifest file in “read-only” and “read-only direct”\r
+ modes.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed a bug in caching of <code>stat</code> system calls in “file_stat_matches\r
+ sloppiness mode”.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed bug in hashing of clang plugins, leading to unnecessary cache misses.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed --print-config to show “pch_defines sloppiness”.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The man page is now built when running “make install” from Git repository\r
+ sources.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2_4">ccache 3.2.4</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2015-10-08</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_14">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed build error related to zlib on systems with older make versions\r
+ (regression in ccache 3.2.3).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made conversion-to-bool explicit to avoid build warnings (and potential\r
+ runtime errors) on legacy systems.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved signal handling: Kill compiler on SIGTERM; wait for compiler to exit\r
+ before exiting; die appropriately.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Minor fixes related to Windows support.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The correct compression level is now used if compression is requested.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed a bug where cache cleanup could be run too early for caches larger than\r
+ 64 GiB on 32-bit systems.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2_3">ccache 3.2.3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2015-08-16</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_7">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Added support for compiler option <code>-gsplit-dwarf</code>.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_15">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Support external zlib in nonstandard directory.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Avoid calling <code>exit()</code> inside an exit handler.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Let exit handler terminate properly.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Bail out on compiler option <code>--save-temps</code> in addition to <code>-save-temps</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Only log "Disabling direct mode" once when failing to read potential include\r
+ files.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2_2">ccache 3.2.2</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2015-05-10</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_8">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Added support for <code>CCACHE_COMPILERCHECK=string:<value></code>. This is a faster\r
+ alternative to <code>CCACHE_COMPILERCHECK=<command></code> if the command’s output can\r
+ be precalculated by the build system.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Add support for caching code coverage results (compiling for gcov).\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_16">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Made hash of cached result created with and without <code>CCACHE_CPP2</code> different.\r
+ This makes it possible to rebuild with <code>CCACHE_CPP2</code> set without having to\r
+ clear the cache to get new results.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Don’t try to reset a non-existing stats file. This avoids “No such file or\r
+ directory” messages in the ccache log when the cache directory doesn’t\r
+ exist.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed a bug where ccache deleted clang diagnostics after compiler failures.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Avoid performing an unnecessary copy of the object file on a cache miss.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Bail out on too hard compiler option <code>-fmodules</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Bail out on too hard compiler option <code>-fplugin=libcc1plugin</code> (interaction\r
+ with GDB).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed build error when compiling ccache with recent clang versions.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Removed signal-unsafe code from signal handler.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Corrected logic for when to output cached stderr.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Wipe the whole cached result on failure retrieving a cached file.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed build error when compiling ccache with recent clang versions.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2_1">ccache 3.2.1</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2014-12-10</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_17">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed regression in temporary file handling, which lead to incorrect\r
+ permissions for stats, manifest and ccache.conf files in the cache.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<code>CACHEDIR.TAG</code> files are now created in the [0-9a-f] subdirectories so that\r
+ ccache.conf is not lost in backups.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made the default cache size suffix <code>G</code>, as previously documented.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<code>-fdiagnostics-color=auto</code> is now passed to the compiler even if stderr is\r
+ redirected. This fixes a problem when, for instance, a configure test probes\r
+ if the compiler (wrapped via ccache) supports <code>-fdiagnostics-color=auto</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added missing documentation for <code>max_files</code> and <code>max_size</code> configuration\r
+ options.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_2">ccache 3.2</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2014-11-17</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_9">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Added support for configuring ccache via one or several configuration files\r
+ instead of via environment variables. Environment variables still have\r
+ priority but are no longer the recommended way of customizing ccache\r
+ behavior. See the manual for more information.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for compiler error/warning messages with color.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made creation of temporary directories and cache directories smarter to avoid\r
+ unnecessary <code>stat</code> calls.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved efficiency of the algorithm that scans for <code>__DATE_</code> and <code>__TIME__</code>\r
+ tokens in the hashed source code.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for several binaries (separated by space) in <code>CCACHE_PREFIX</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The <code>-c</code> option is no longer passed to the preprocessor. This fixes problems\r
+ with clang and Solaris’s C++ compiler.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache no longer passes preprocessor options like <code>-D</code> and <code>-I</code> to the\r
+ compiler when compiling preprocessed output. This fixes warnings emitted by\r
+ clang.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Compiler options <code>-fprofile-generate</code>, <code>-fprofile-arcs</code>, <code>-fprofile-use</code> and\r
+ <code>-fbranch-probabilities</code> are now handled without bailing.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for clang’s <code>--serialize-diagnostic</code> option, storing the\r
+ diagnostic file (<code>.dia</code>) in the cache.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for precompiled headers when using clang.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for clang <code>.pth</code> (pretokenized header) files.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Changed the <code>-x</code> language option to use the new objective C standard for GCC\r
+ and clang.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+On a cache miss, ccache now instructs the compiler to create the object file\r
+ at the real destination and then copies the file into the cache instead of\r
+ the other way around. This is needed to support compiler options like\r
+ <code>-fprofile-arcs</code> and <code>--serialize-diagnostics</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache now checks that included files' ctimes aren’t too new. This check can\r
+ be turned off by adding <code>include_file_ctime</code> to the “ccache sloppiness”\r
+ setting.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added possibility to get cache hits based on filename, size, mtime and ctime\r
+ only. On other words, source code files are not even read, only stat-ed. This\r
+ operation mode is opt-in by adding <code>file_stat_matches</code> to the “ccache\r
+ sloppiness” setting.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The filename part of options like <code>-Wp,-MDfilename</code> is no longer included in\r
+ the hash since the filename doesn’t have any bearing on the result.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added a “read-only direct” configuration setting, which is like the\r
+ ordinary read-only setting except that ccache will only try to retrieve\r
+ results from the cache using the direct mode, not the preprocessor mode.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The display and interpretation of cache size has been changed to use SI\r
+ units.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Default cache size is now 5 GB (was previously 1 GiB).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added configuration option to set the compression level of compressed object\r
+ files in the cache.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for <code>@file</code> and <code>-@file</code> arguments (reading options from a\r
+ file).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<code>-Wl,</code> options are no longer included in the hash since they don’t affect\r
+ compilation.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Bail out on too hard compiler option <code>-Wp,-P</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Optimized MD4 calculation code on little-endian systems.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Various improvements and fixes on win32.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved logging to the ccache log file.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added <code>--dump-manifest</code> command-line option for debugging purposes.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added <code>--with-bundled-zlib</code> configure option.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Upgraded bundled zlib to version 1.2.8.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved <code>dev.mk</code> to be more platform independent.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made the test suite work with clang and gcc-llvm on OS X.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Various other improvements of the test suite.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_18">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Any previous <code>.stderr</code> is now removed from the cache when recaching.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed an issue when handling the <code>-arch</code> compiler option with an argument.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed race condition when creating the initial cache directory.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed test suite failures when <code>CC</code> is a ccache-wrapped compiler.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_12">ccache 3.1.12</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2016-07-12</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_19">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed a bug where (due to ccache rewriting paths) the compiler could choose\r
+ incorrect include files if <code>CCACHE_BASEDIR</code> is used and the source file path\r
+ is absolute and is a symlink.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_11">ccache 3.1.11</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2015-03-07</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_20">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed bug which could result in false cache hits when source code contains\r
+ <code>'"'</code> followed by <code>" /*"</code> or <code>" //"</code> (with variations).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made hash of cached result created with and without <code>CCACHE_CPP2</code> different.\r
+ This makes it possible to rebuild with <code>CCACHE_CPP2</code> set without having to\r
+ clear the cache to get new results.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Don’t try to reset a non-existing stats file. This avoids “No such file or\r
+ directory” messages in the ccache log when the cache directory doesn’t\r
+ exist.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_10">ccache 3.1.10</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2014-10-19</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_10">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Added support for the <code>-Xclang</code> compiler option.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved handling of exit code of internally executed processes.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Zero length object files in the cache are now rejected as invalid.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Bail out on option <code>-gsplit-dwarf</code> (since it produces multiple output files).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Compiler option <code>-fdebug-prefix-map</code> is now ignored (not part of the hash).\r
+ (The <code>-fdebug-prefix-map</code> option may be used in combination with\r
+ <code>CCACHE_BASEDIR</code> to reuse results across different directories.)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added note in documentation that <code>--ccache-skip</code> currently does not mean\r
+ “don’t hash the following option”.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+To enable support for precompiled headers (PCH), <code>CCACHE_SLOPPINESS</code> now also\r
+ needs to include the new <code>pch_defines</code> sloppiness. This is because ccache\r
+ can’t detect changes in the source code when only defined macros have been\r
+ changed.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Stale files in the internal temporary directory (<code><ccache_dir>/tmp</code>) are now\r
+ cleaned up if they are older than one hour.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_21">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed path canonicalization in <code>make_relative_path()</code> when path doesn’t\r
+ exist.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed bug in <code>common_dir_prefix_length()</code>. This corrects the <code>CCACHE_BASEDIR</code>\r
+ behavior.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache no longer tries to create the cache directory when <code>CCACHE_DISABLE</code> is\r
+ set.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed bug when reading manifests with a very large number of file info\r
+ entries.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed problem with logging of current working directory.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_9">ccache 3.1.9</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2013-01-06</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_22">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+The EAGAIN signal is now handled correctly when emitting cached stderr\r
+ output. This fixes a problem triggered by large error outputs from the\r
+ compiler.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Subdirectories in the cache are no longer created in read-only mode.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed so that ccache’s log file descriptor is not made available to the\r
+ compiler.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved error reporting when failing to create temporary stdout/stderr files\r
+ when executing the compiler.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Disappearing temporary stdout/stderr files are now handled gracefully.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_other">Other</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed test suite to work on ecryptfs.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_8">ccache 3.1.8</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2012-08-11</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_11">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Made paths to dependency files relative in order to increase cache hits.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added work-around to make ccache work with buggy GCC 4.1 when creating a\r
+ pre-compiled header.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Clang plugins are now hashed to catch plugin upgrades.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_23">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed crash when the current working directory has been removed.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed crash when stderr is closed.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Corrected a corner case when parsing backslash escapes in string\r
+ literals.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Paths are now correctly canonicalized when computing paths relative to the\r
+ base directory.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_other_2">Other</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Made git version macro work when compiling outside of the source directory.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed <code>static_assert</code> macro definition clash with GCC 4.7.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_7">ccache 3.1.7</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2012-01-08</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_24">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Non-writable <code>CCACHE_DIR</code> is now handled gracefully when <code>CCACHE_READONLY</code> is\r
+ set.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made failure to create files (typically due to bad directory permissions) in\r
+ the cache directory fatal. Previously, such failures were silently and\r
+ erroneously flagged as "compiler produced stdout".\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Both the <code>-specs=file</code> and <code>--specs=file</code> forms are now recognized.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added recognition and hashing of GCC plugins specified with <code>-fplugin=file</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+<code>CCACHE_COMPILERCHECK</code> now also determines how to hash explicit specs files\r
+ (<code>-specs=file</code>).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added <code>CPATH</code>, <code>C_INCLUDE_PATH</code> and similar environment variables to the hash\r
+ to avoid false cache hits when such variables have changed.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Corrected log message when unify mode is enabled.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Reverted the GCC bug compatibility introduced in ccache 3.1.5 for <code>-MT</code>/<code>-MQ</code>\r
+ options with concatenated arguments. (The bug is fixed in recent GCC\r
+ versions.)\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_other_3">Other</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Corrected license header for <code>mdfour.c</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved documentation on how to fix bad object files in the cache.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_6">ccache 3.1.6</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2011-08-21</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_12">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Rewrite argument to <code>--sysroot</code> if <code>CCACHE_BASEDIR</code> is used.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_25">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Don’t crash if <code>getcwd()</code> fails.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed alignment of “called for preprocessing” counter.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_5">ccache 3.1.5</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2011-05-29</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_13">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Added a new statistics counter named “called for preprocessing”.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The original command line is now logged to the file specified with\r
+ <code>CCACHE_LOGFILE</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved error logging when system calls fail.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for rewriting absolute paths in <code>-F</code>/<code>-iframework</code> GCC\r
+ options.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Improved order of statistics counters in <code>ccache -s</code> output.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_26">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+The <code>-MF</code>/<code>-MT</code>/<code>-MQ</code> options with concatenated argument are now handled\r
+ correctly when they are last on the command line.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache is now bug compatible with GCC for the <code>-MT</code>/<code>-MQ</code> options with\r
+ concatenated arguments.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed a minor memory leak.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Systems that lack (and don’t need to be linked with) libm are now supported.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_4">ccache 3.1.4</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2011-01-09</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_27">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Made a work-around for a bug in <code>gzputc()</code> in zlib 1.2.5.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Corrupt manifest files are now removed so that they won’t block direct mode\r
+ hits.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache now copes with file systems that don’t know about symbolic links.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The file handle in now correctly closed on write error when trying to create\r
+ a cache dir tag.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_3">ccache 3.1.3</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2010-11-28</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_28">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+The -MFarg, -MTarg and -MQarg compiler options (i.e, without space between\r
+ option and argument) are now handled correctly.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_other_4">Other</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Portability fixes for HP-UX 11.00 and other esoteric systems.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_2">ccache 3.1.2</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2010-11-21</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_29">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Bail out on too hard compiler options <code>-fdump-*</code>.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+NULL return values from malloc/calloc of zero bytes are now handled\r
+ correctly.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed issue when parsing precompiler output on AIX.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_other_5">Other</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Improved documentation on which information is included in the hash sum.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Made the “too new header file” test case work on file systems with\r
+ unsynchronized clocks.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+The test suite now also works on systems that lack a /dev/zero.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1_1">ccache 3.1.1</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2010-11-07</p></div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes_30">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+ccache now falls back to preprocessor mode when a non-regular include file\r
+ (device, socket, etc) has been detected so that potential hanging due to\r
+ blocking reads is avoided.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+CRC errors are now detected when decompressing compressed files in the cache.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed potential object file corruption race on NFS.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Minor documentation corrections.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed configure detection of ar.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+ccache development version (set by dev.mk) now works with gits whose\r
+ <code>describe</code> command doesn’t understand <code>--dirty</code>.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_other_6">Other</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Minor debug log message improvements.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
+<h2 id="_ccache_3_1">ccache 3.1</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2010-09-16</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_enhancements_14">New features and enhancements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Added support for hashing the output of a custom command (e.g. <code>%compiler%\r
+ --version</code>) to identify the compiler instead of stat-ing or hashing the\r
+ compiler binary. This can improve robustness when the compiler (as seen by\r
+ ccache) actually isn’t the real compiler but another compiler wrapper.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added support for caching compilations that use precompiled headers. (See the\r
+ manual for important instructions regarding this.)\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Locking of the files containing statistics counters is now done using\r
+ symlinks instead of POSIX locks. This should make ccache behave a lot better\r
+ on file systems where POSIX locks are slow or broken (e.g. NFS on some\r
+ systems).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Manifest files are now updated without the need of taking locks.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Added <tt>.cp</tt> and <tt>.CP</tt> as known C++ suffixes.\r
+Updates of statistics counters are now always done in one of the sub-level\r
+ statistics files. This reduces lock contention, which especially improves\r
+ performance on slow NFS mounts.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Reading and writing of statistics counters has been made forward-compatible\r
+ (unknown counters are retained).\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Files are now read without using <code>mmap()</code>. This has two benefits: it’s more\r
+ robust against file changes during reading and it improves performance on\r
+ poor systems where <code>mmap()</code> doesn’t use the disk cache.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added <code>.cp</code> and <code>.CP</code> as known C++ suffixes.\r
</p>\r
</li>\r
<li>\r
</li>\r
<li>\r
<p>\r
-Added <tt>-install_name</tt> as an option known to take an argument. (This\r
- improves statistics when using the Darwin linker.)\r
+Added <code>-install_name</code> as an option known to take an argument. (This improves\r
+ statistics when using the Darwin linker.)\r
</p>\r
</li>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_7">Bug fixes</h3>\r
+<h3 id="_bug_fixes_31">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-Non-fatal error messages are now never printed to stderr but logged\r
- instead.\r
+Non-fatal error messages are now never printed to stderr but logged instead.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Fixed a bug affecting failing commands when <tt>--ccache-skip</tt> is used.\r
+Fixed a bug affecting failing commands when <code>--ccache-skip</code> is used.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Made <tt>--ccache-skip</tt> work for all options.\r
+Made <code>--ccache-skip</code> work for all options.\r
</p>\r
</li>\r
<li>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_other_4">Other</h3>\r
+<h3 id="_other_7">Other</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-Work on porting ccache to win32 (native), mostly done by Ramiro Polla.\r
- The port is not yet finished, but will hopefully be complete in some\r
- subsequent release.\r
+Work on porting ccache to win32 (native), mostly done by Ramiro Polla. The\r
+ port is not yet finished, but will hopefully be complete in some subsequent\r
+ release.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Added a <tt>--nostats</tt> flag to the performance benchmark program.\r
+Added a <code>--nostats</code> flag to the performance benchmark program.\r
</p>\r
</li>\r
<li>\r
<p>\r
Made the performance benchmark program more accurate when measuring cache\r
- hits.\r
+ hits.\r
</p>\r
</li>\r
<li>\r
</li>\r
<li>\r
<p>\r
-Got rid of <tt>configure-dev</tt>; dev mode is now given by <tt>dev.mk.in</tt>\r
- presence.\r
+Got rid of <code>configure-dev</code>; dev mode is now given by <code>dev.mk.in</code> presence.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Improved documentation on how to combine ccache with other compiler\r
- wrappers (like <tt>distcc</tt>).\r
+Improved documentation on how to combine ccache with other compiler wrappers\r
+ (like <code>distcc</code>).\r
</p>\r
</li>\r
<li>\r
<p>\r
-New <tt>LICENSE.txt</tt> file with licensing and copyright details about bundled\r
- source code.\r
+New <code>LICENSE.txt</code> file with licensing and copyright details about bundled\r
+ source code.\r
</p>\r
</li>\r
<li>\r
<p>\r
-New <tt>AUTHORS.txt</tt> file with a list of ccache contributors.\r
+New <code>AUTHORS.txt</code> file with a list of ccache contributors.\r
</p>\r
</li>\r
<li>\r
<p>\r
-New <tt>HACKING.txt</tt> file with some notes about ccache code conventions.\r
+New <code>HACKING.txt</code> file with some notes about ccache code conventions.\r
</p>\r
</li>\r
</ul></div>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-07-15</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_8">Bug fixes</h3>\r
+<h3 id="_bug_fixes_32">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
The statistics counter “called for link” is now correctly updated when\r
- linking with a single object file.\r
+ linking with a single object file.\r
</p>\r
</li>\r
<li>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-ccache is now licensed under the GNU General Public License (GPL) version\r
- 3 or later.\r
+ccache is now licensed under the GNU General Public License (GPL) version 3\r
+ or later.\r
</p>\r
</li>\r
</ul></div>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-The way the hashes are calculated has changed, so you won’t get cache\r
- hits for compilation results stored by older ccache versions. Because of\r
- this, you might as well clear the old cache directory with <tt>ccache\r
- --clear</tt> if you want, unless you plan to keep using an older ccache\r
- version.\r
+The way the hashes are calculated has changed, so you won’t get cache hits\r
+ for compilation results stored by older ccache versions. Because of this, you\r
+ might as well clear the old cache directory with <code>ccache --clear</code> if you\r
+ want, unless you plan to keep using an older ccache version.\r
</p>\r
</li>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_new_features_and_improvements_4">New features and improvements</h3>\r
+<h3 id="_new_features_and_enhancements_15">New features and enhancements</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
-ccache now has a “direct mode” where it computes a hash of the source\r
- code (including all included files) and compiler options without\r
- running the preprocessor. By not running the preprocessor, CPU usage is\r
- reduced; the speed is somewhere between 1 and 5 times that of ccache\r
- running in traditional mode, depending on the circumstances. The speedup\r
- will be higher when I/O is fast (e.g., when files are in the disk cache).\r
- The direct mode can be disabled by setting <tt>CCACHE_NODIRECT</tt>.\r
+ccache now has a “direct mode” where it computes a hash of the source code\r
+ (including all included files) and compiler options without running the\r
+ preprocessor. By not running the preprocessor, CPU usage is reduced; the\r
+ speed is somewhere between 1 and 5 times that of ccache running in\r
+ traditional mode, depending on the circumstances. The speedup will be higher\r
+ when I/O is fast (e.g., when files are in the disk cache). The direct mode\r
+ can be disabled by setting <code>CCACHE_NODIRECT</code>.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Support has been added for rewriting absolute paths to relative paths\r
- when hashing, in order to increase cache hit rate when building the same\r
- source code in different directories even when compiling with <tt>-g</tt> and\r
- when using absolute include directory paths. This is done by setting the\r
- <tt>CCACHE_BASEDIR</tt> environment variable to an absolute path that specifies\r
- which paths to rewrite.\r
+Support has been added for rewriting absolute paths to relative paths when\r
+ hashing, in order to increase cache hit rate when building the same source\r
+ code in different directories even when compiling with <code>-g</code> and when using\r
+ absolute include directory paths. This is done by setting the\r
+ <code>CCACHE_BASEDIR</code> environment variable to an absolute path that specifies\r
+ which paths to rewrite.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Object files are now optionally stored compressed in the cache. The\r
- runtime cost is negligible, and more files will fit in the ccache\r
- directory and in the disk cache. Set <tt>CCACHE_COMPRESS</tt> to enable object\r
- file compression. Note that you can’t use compression in combination with\r
- the hard link feature.\r
+Object files are now optionally stored compressed in the cache. The runtime\r
+ cost is negligible, and more files will fit in the ccache directory and in\r
+ the disk cache. Set <code>CCACHE_COMPRESS</code> to enable object file compression. Note\r
+ that you can’t use compression in combination with the hard link feature.\r
</p>\r
</li>\r
<li>\r
<p>\r
-A <tt>CCACHE_COMPILERCHECK</tt> option has been added. This option tells ccache\r
- what compiler-identifying information to hash to ensure that results\r
- retrieved from the cache are accurate. Possible values are: none (don’t\r
- hash anything), mtime (hash the compiler’s mtime and size) and content\r
- (hash the content of the compiler binary). The default is mtime.\r
+A <code>CCACHE_COMPILERCHECK</code> option has been added. This option tells ccache what\r
+ compiler-identifying information to hash to ensure that results retrieved\r
+ from the cache are accurate. Possible values are: none (don’t hash anything),\r
+ mtime (hash the compiler’s mtime and size) and content (hash the content of\r
+ the compiler binary). The default is mtime.\r
</p>\r
</li>\r
<li>\r
<p>\r
-It is now possible to specify extra files whose contents should be\r
- included in the hash sum by setting the <tt>CCACHE_EXTRAFILES</tt> option.\r
+It is now possible to specify extra files whose contents should be included\r
+ in the hash sum by setting the <code>CCACHE_EXTRAFILES</code> option.\r
</p>\r
</li>\r
<li>\r
<p>\r
Added support for Objective-C and Objective-C++. The statistics counter\r
- “not a C/C++ file” has been renamed to “unsupported source language”.\r
+ “not a C/C++ file” has been renamed to “unsupported source language”.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Added support for the <tt>-x</tt> compiler option.\r
+Added support for the <code>-x</code> compiler option.\r
</p>\r
</li>\r
<li>\r
</li>\r
<li>\r
<p>\r
-A <tt>CACHEDIR.TAG</tt> file is now created in the cache directory. See\r
- <a href="http://www.brynosaurus.com/cachedir/">http://www.brynosaurus.com/cachedir/</a>.\r
+A <code>CACHEDIR.TAG</code> file is now created in the cache directory. See\r
+ <a href="http://www.brynosaurus.com/cachedir/">http://www.brynosaurus.com/cachedir/</a>.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Messages printed to the debug log (specified by <tt>CCACHE_LOGFILE</tt>) have\r
- been improved.\r
+Messages printed to the debug log (specified by <code>CCACHE_LOGFILE</code>) have been\r
+ improved.\r
</p>\r
</li>\r
<li>\r
<p>\r
You can relax some checks that ccache does in direct mode by setting\r
- <tt>CCACHE_SLOPPINESS</tt>. See the manual for more information.\r
+ <code>CCACHE_SLOPPINESS</code>. See the manual for more information.\r
</p>\r
</li>\r
<li>\r
<p>\r
-<tt>CCACHE_TEMPDIR</tt> no longer needs to be on the same filesystem as\r
- <tt>CCACHE_DIR</tt>.\r
+<code>CCACHE_TEMPDIR</code> no longer needs to be on the same filesystem as\r
+ <code>CCACHE_DIR</code>.\r
</p>\r
</li>\r
<li>\r
<p>\r
-The default value of <tt>CCACHE_TEMPDIR</tt> has been changed to\r
- <tt>$CCACHE_DIR/tmp</tt> to avoid cluttering the top directory.\r
+The default value of <code>CCACHE_TEMPDIR</code> has been changed to <code>$CCACHE_DIR/tmp</code>\r
+ to avoid cluttering the top directory.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Temporary files that later will be moved into the cache are now created\r
- in the cache directory they will end up in. This makes ccache more\r
- friendly to Linux’s directory layout.\r
+Temporary files that later will be moved into the cache are now created in\r
+ the cache directory they will end up in. This makes ccache more friendly to\r
+ Linux’s directory layout.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Improved the test suite and added tests for most of the new\r
- functionality. It’s now also possible to specify a subset of tests to\r
- run.\r
+Improved the test suite and added tests for most of the new functionality.\r
+ It’s now also possible to specify a subset of tests to run.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Standard error output from the compiler is now only stored in the cache\r
- if it’s non-empty.\r
+Standard error output from the compiler is now only stored in the cache if\r
+ it’s non-empty.\r
</p>\r
</li>\r
<li>\r
<p>\r
-If the compiler produces no object file or an empty object file, but\r
- gives a zero exit status (could be due to a file system problem, a buggy\r
- program specified by <tt>CCACHE_PREFIX</tt>, etc.), ccache copes with it\r
- properly.\r
+If the compiler produces no object file or an empty object file, but gives a\r
+ zero exit status (could be due to a file system problem, a buggy program\r
+ specified by <code>CCACHE_PREFIX</code>, etc.), ccache copes with it properly.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Added <tt>installcheck</tt> and <tt>distcheck</tt> make targets.\r
+Added <code>installcheck</code> and <code>distcheck</code> make targets.\r
</p>\r
</li>\r
<li>\r
<li>\r
<p>\r
The following options are no longer hashed in the preprocessor mode:\r
- <tt>-imacros</tt>, <tt>-imultilib</tt>, <tt>-iprefix</tt>, <tt>-iquote</tt>, <tt>-isysroot</tt>,\r
- <tt>-iwithprefix</tt>, <tt>-iwithprefixbefore</tt>, <tt>-nostdinc</tt>, <tt>-nostdinc++</tt> and\r
- <tt>-U</tt>.\r
+ <code>-imacros</code>, <code>-imultilib</code>, <code>-iprefix</code>, <code>-iquote</code>, <code>-isysroot</code>, <code>-iwithprefix</code>,\r
+ <code>-iwithprefixbefore</code>, <code>-nostdinc</code>, <code>-nostdinc++</code> and <code>-U</code>.\r
</p>\r
</li>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_9">Bug fixes</h3>\r
+<h3 id="_bug_fixes_33">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</li>\r
<li>\r
<p>\r
-User-defined <tt>CPPFLAGS</tt> and <tt>LDFLAGS</tt> are now respected in the Makefile.\r
+User-defined <code>CPPFLAGS</code> and <code>LDFLAGS</code> are now respected in the Makefile.\r
</p>\r
</li>\r
<li>\r
</li>\r
<li>\r
<p>\r
-Computation of the hash sum has been improved to decrease the risk of\r
- hash collisions. For instance, the compiler options <tt>-X -Y</tt> and <tt>-X-Y</tt>\r
- previously contributed equally to the hash sum.\r
+Computation of the hash sum has been improved to decrease the risk of hash\r
+ collisions. For instance, the compiler options <code>-X -Y</code> and <code>-X-Y</code> previously\r
+ contributed equally to the hash sum.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Bail out on too hard compiler options <tt>--coverage</tt>, <tt>-fprofile-arcs</tt>,\r
- <tt>-fprofile-generate</tt>, <tt>-fprofile-use</tt>, <tt>-frepo</tt>, <tt>-ftest-coverage</tt> and\r
- <tt>-save-temps</tt>. Also bail out on <tt>@file</tt> style options.\r
+Bail out on too hard compiler options <code>--coverage</code>, <code>-fprofile-arcs</code>,\r
+ <code>-fprofile-generate</code>, <code>-fprofile-use</code>, <code>-frepo</code>, <code>-ftest-coverage</code> and\r
+ <code>-save-temps</code>. Also bail out on <code>@file</code> style options.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Errors when using multiple <tt>-arch</tt> compiler options are now noted as\r
- “unsupported compiler option”.\r
+Errors when using multiple <code>-arch</code> compiler options are now noted as\r
+ “unsupported compiler option”.\r
</p>\r
</li>\r
<li>\r
<p>\r
-<tt>-MD</tt>/<tt>-MMD</tt> options without <tt>-MT</tt>/<tt>-MF</tt> are now handled correctly.\r
+<code>-MD</code>/<code>-MMD</code> options without <code>-MT</code>/<code>-MF</code> are now handled correctly.\r
</p>\r
</li>\r
<li>\r
<p>\r
-The <tt>-finput-charset</tt> option is now handled correctly.\r
+The <code>-finput-charset</code> option is now handled correctly.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Added support for <tt>-Wp,-MD</tt> and <tt>-Wp,-MMD</tt> options.\r
+Added support for <code>-Wp,-MD</code> and <code>-Wp,-MMD</code> options.\r
</p>\r
</li>\r
<li>\r
<p>\r
-The compiler options <tt>-Xassembler</tt>, <tt>-b</tt>, <tt>-G</tt> and <tt>-V</tt> are now correctly\r
- recognized as taking an argument.\r
+The compiler options <code>-Xassembler</code>, <code>-b</code>, <code>-G</code> and <code>-V</code> are now correctly\r
+ recognized as taking an argument.\r
</p>\r
</li>\r
<li>\r
<p>\r
Debug information containing line numbers of predefined and command-line\r
- macros (enabled with the compiler option <tt>-g3</tt>) will now be correct.\r
+ macros (enabled with the compiler option <code>-g3</code>) will now be correct.\r
</p>\r
</li>\r
<li>\r
</li>\r
<li>\r
<p>\r
-<tt>utimes()</tt> is now used instead of <tt>utime()</tt> when available.\r
+<code>utimes()</code> is now used instead of <code>utime()</code> when available.\r
</p>\r
</li>\r
<li>\r
</li>\r
<li>\r
<p>\r
-The command specified by <tt>CCACHE_PREFIX</tt> is no longer part of the hash.\r
+The command specified by <code>CCACHE_PREFIX</code> is no longer part of the hash.\r
</p>\r
</li>\r
<li>\r
</li>\r
<li>\r
<p>\r
-Fixed a bug in <tt>x_realloc</tt>.\r
+Fixed a bug in <code>x_realloc</code>.\r
</p>\r
</li>\r
<li>\r
<p>\r
-Freed memory is no longer referenced when compiling a <tt>.i</tt>/<tt>.ii</tt> file and\r
- falling back to running the real compiler.\r
+Freed memory is no longer referenced when compiling a <code>.i</code>/<code>.ii</code> file and\r
+ falling back to running the real compiler.\r
</p>\r
</li>\r
<li>\r
<p>\r
-The test suite is now immune to external values of the <tt>CCACHE_*</tt>\r
- environment variables.\r
+The test suite is now immune to external values of the <code>CCACHE_*</code> environment\r
+ variables.\r
</p>\r
</li>\r
<li>\r
<li>\r
<p>\r
Statistics counters are now correctly updated for -E option failures and\r
- internal errors.\r
+ internal errors.\r
</p>\r
</li>\r
</ul></div>\r
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.1.6<br />\r
-Last updated 2011-08-21 16:34:07 CEST\r
+Version 3.4<br />\r
+Last updated\r
+ 2018-02-11 15:20:55 CET\r
</div>\r
</div>\r
</body>\r