Imported Upstream version 3.5.1
[platform/upstream/ccache.git] / doc / NEWS.html
1 <?xml version="1.0" encoding="UTF-8"?>\r
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
3     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
4 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
5 <head>\r
6 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
7 <meta name="generator" content="AsciiDoc 8.6.10" />\r
8 <title>ccache news</title>\r
9 <style type="text/css">\r
10 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
11 \r
12 /* Default font. */\r
13 body {\r
14   font-family: Georgia,serif;\r
15 }\r
16 \r
17 /* Title font. */\r
18 h1, h2, h3, h4, h5, h6,\r
19 div.title, caption.title,\r
20 thead, p.table.header,\r
21 #toctitle,\r
22 #author, #revnumber, #revdate, #revremark,\r
23 #footer {\r
24   font-family: Arial,Helvetica,sans-serif;\r
25 }\r
26 \r
27 body {\r
28   margin: 1em 5% 1em 5%;\r
29 }\r
30 \r
31 a {\r
32   color: blue;\r
33   text-decoration: underline;\r
34 }\r
35 a:visited {\r
36   color: fuchsia;\r
37 }\r
38 \r
39 em {\r
40   font-style: italic;\r
41   color: navy;\r
42 }\r
43 \r
44 strong {\r
45   font-weight: bold;\r
46   color: #083194;\r
47 }\r
48 \r
49 h1, h2, h3, h4, h5, h6 {\r
50   color: #527bbd;\r
51   margin-top: 1.2em;\r
52   margin-bottom: 0.5em;\r
53   line-height: 1.3;\r
54 }\r
55 \r
56 h1, h2, h3 {\r
57   border-bottom: 2px solid silver;\r
58 }\r
59 h2 {\r
60   padding-top: 0.5em;\r
61 }\r
62 h3 {\r
63   float: left;\r
64 }\r
65 h3 + * {\r
66   clear: left;\r
67 }\r
68 h5 {\r
69   font-size: 1.0em;\r
70 }\r
71 \r
72 div.sectionbody {\r
73   margin-left: 0;\r
74 }\r
75 \r
76 hr {\r
77   border: 1px solid silver;\r
78 }\r
79 \r
80 p {\r
81   margin-top: 0.5em;\r
82   margin-bottom: 0.5em;\r
83 }\r
84 \r
85 ul, ol, li > p {\r
86   margin-top: 0;\r
87 }\r
88 ul > li     { color: #aaa; }\r
89 ul > li > * { color: black; }\r
90 \r
91 .monospaced, code, pre {\r
92   font-family: "Courier New", Courier, monospace;\r
93   font-size: inherit;\r
94   color: navy;\r
95   padding: 0;\r
96   margin: 0;\r
97 }\r
98 pre {\r
99   white-space: pre-wrap;\r
100 }\r
101 \r
102 #author {\r
103   color: #527bbd;\r
104   font-weight: bold;\r
105   font-size: 1.1em;\r
106 }\r
107 #email {\r
108 }\r
109 #revnumber, #revdate, #revremark {\r
110 }\r
111 \r
112 #footer {\r
113   font-size: small;\r
114   border-top: 2px solid silver;\r
115   padding-top: 0.5em;\r
116   margin-top: 4.0em;\r
117 }\r
118 #footer-text {\r
119   float: left;\r
120   padding-bottom: 0.5em;\r
121 }\r
122 #footer-badges {\r
123   float: right;\r
124   padding-bottom: 0.5em;\r
125 }\r
126 \r
127 #preamble {\r
128   margin-top: 1.5em;\r
129   margin-bottom: 1.5em;\r
130 }\r
131 div.imageblock, div.exampleblock, div.verseblock,\r
132 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
133 div.admonitionblock {\r
134   margin-top: 1.0em;\r
135   margin-bottom: 1.5em;\r
136 }\r
137 div.admonitionblock {\r
138   margin-top: 2.0em;\r
139   margin-bottom: 2.0em;\r
140   margin-right: 10%;\r
141   color: #606060;\r
142 }\r
143 \r
144 div.content { /* Block element content. */\r
145   padding: 0;\r
146 }\r
147 \r
148 /* Block element titles. */\r
149 div.title, caption.title {\r
150   color: #527bbd;\r
151   font-weight: bold;\r
152   text-align: left;\r
153   margin-top: 1.0em;\r
154   margin-bottom: 0.5em;\r
155 }\r
156 div.title + * {\r
157   margin-top: 0;\r
158 }\r
159 \r
160 td div.title:first-child {\r
161   margin-top: 0.0em;\r
162 }\r
163 div.content div.title:first-child {\r
164   margin-top: 0.0em;\r
165 }\r
166 div.content + div.title {\r
167   margin-top: 0.0em;\r
168 }\r
169 \r
170 div.sidebarblock > div.content {\r
171   background: #ffffee;\r
172   border: 1px solid #dddddd;\r
173   border-left: 4px solid #f0f0f0;\r
174   padding: 0.5em;\r
175 }\r
176 \r
177 div.listingblock > div.content {\r
178   border: 1px solid #dddddd;\r
179   border-left: 5px solid #f0f0f0;\r
180   background: #f8f8f8;\r
181   padding: 0.5em;\r
182 }\r
183 \r
184 div.quoteblock, div.verseblock {\r
185   padding-left: 1.0em;\r
186   margin-left: 1.0em;\r
187   margin-right: 10%;\r
188   border-left: 5px solid #f0f0f0;\r
189   color: #888;\r
190 }\r
191 \r
192 div.quoteblock > div.attribution {\r
193   padding-top: 0.5em;\r
194   text-align: right;\r
195 }\r
196 \r
197 div.verseblock > pre.content {\r
198   font-family: inherit;\r
199   font-size: inherit;\r
200 }\r
201 div.verseblock > div.attribution {\r
202   padding-top: 0.75em;\r
203   text-align: left;\r
204 }\r
205 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */\r
206 div.verseblock + div.attribution {\r
207   text-align: left;\r
208 }\r
209 \r
210 div.admonitionblock .icon {\r
211   vertical-align: top;\r
212   font-size: 1.1em;\r
213   font-weight: bold;\r
214   text-decoration: underline;\r
215   color: #527bbd;\r
216   padding-right: 0.5em;\r
217 }\r
218 div.admonitionblock td.content {\r
219   padding-left: 0.5em;\r
220   border-left: 3px solid #dddddd;\r
221 }\r
222 \r
223 div.exampleblock > div.content {\r
224   border-left: 3px solid #dddddd;\r
225   padding-left: 0.5em;\r
226 }\r
227 \r
228 div.imageblock div.content { padding-left: 0; }\r
229 span.image img { border-style: none; vertical-align: text-bottom; }\r
230 a.image:visited { color: white; }\r
231 \r
232 dl {\r
233   margin-top: 0.8em;\r
234   margin-bottom: 0.8em;\r
235 }\r
236 dt {\r
237   margin-top: 0.5em;\r
238   margin-bottom: 0;\r
239   font-style: normal;\r
240   color: navy;\r
241 }\r
242 dd > *:first-child {\r
243   margin-top: 0.1em;\r
244 }\r
245 \r
246 ul, ol {\r
247     list-style-position: outside;\r
248 }\r
249 ol.arabic {\r
250   list-style-type: decimal;\r
251 }\r
252 ol.loweralpha {\r
253   list-style-type: lower-alpha;\r
254 }\r
255 ol.upperalpha {\r
256   list-style-type: upper-alpha;\r
257 }\r
258 ol.lowerroman {\r
259   list-style-type: lower-roman;\r
260 }\r
261 ol.upperroman {\r
262   list-style-type: upper-roman;\r
263 }\r
264 \r
265 div.compact ul, div.compact ol,\r
266 div.compact p, div.compact p,\r
267 div.compact div, div.compact div {\r
268   margin-top: 0.1em;\r
269   margin-bottom: 0.1em;\r
270 }\r
271 \r
272 tfoot {\r
273   font-weight: bold;\r
274 }\r
275 td > div.verse {\r
276   white-space: pre;\r
277 }\r
278 \r
279 div.hdlist {\r
280   margin-top: 0.8em;\r
281   margin-bottom: 0.8em;\r
282 }\r
283 div.hdlist tr {\r
284   padding-bottom: 15px;\r
285 }\r
286 dt.hdlist1.strong, td.hdlist1.strong {\r
287   font-weight: bold;\r
288 }\r
289 td.hdlist1 {\r
290   vertical-align: top;\r
291   font-style: normal;\r
292   padding-right: 0.8em;\r
293   color: navy;\r
294 }\r
295 td.hdlist2 {\r
296   vertical-align: top;\r
297 }\r
298 div.hdlist.compact tr {\r
299   margin: 0;\r
300   padding-bottom: 0;\r
301 }\r
302 \r
303 .comment {\r
304   background: yellow;\r
305 }\r
306 \r
307 .footnote, .footnoteref {\r
308   font-size: 0.8em;\r
309 }\r
310 \r
311 span.footnote, span.footnoteref {\r
312   vertical-align: super;\r
313 }\r
314 \r
315 #footnotes {\r
316   margin: 20px 0 20px 0;\r
317   padding: 7px 0 0 0;\r
318 }\r
319 \r
320 #footnotes div.footnote {\r
321   margin: 0 0 5px 0;\r
322 }\r
323 \r
324 #footnotes hr {\r
325   border: none;\r
326   border-top: 1px solid silver;\r
327   height: 1px;\r
328   text-align: left;\r
329   margin-left: 0;\r
330   width: 20%;\r
331   min-width: 100px;\r
332 }\r
333 \r
334 div.colist td {\r
335   padding-right: 0.5em;\r
336   padding-bottom: 0.3em;\r
337   vertical-align: top;\r
338 }\r
339 div.colist td img {\r
340   margin-top: 0.3em;\r
341 }\r
342 \r
343 @media print {\r
344   #footer-badges { display: none; }\r
345 }\r
346 \r
347 #toc {\r
348   margin-bottom: 2.5em;\r
349 }\r
350 \r
351 #toctitle {\r
352   color: #527bbd;\r
353   font-size: 1.1em;\r
354   font-weight: bold;\r
355   margin-top: 1.0em;\r
356   margin-bottom: 0.1em;\r
357 }\r
358 \r
359 div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
360   margin-top: 0;\r
361   margin-bottom: 0;\r
362 }\r
363 div.toclevel2 {\r
364   margin-left: 2em;\r
365   font-size: 0.9em;\r
366 }\r
367 div.toclevel3 {\r
368   margin-left: 4em;\r
369   font-size: 0.9em;\r
370 }\r
371 div.toclevel4 {\r
372   margin-left: 6em;\r
373   font-size: 0.9em;\r
374 }\r
375 \r
376 span.aqua { color: aqua; }\r
377 span.black { color: black; }\r
378 span.blue { color: blue; }\r
379 span.fuchsia { color: fuchsia; }\r
380 span.gray { color: gray; }\r
381 span.green { color: green; }\r
382 span.lime { color: lime; }\r
383 span.maroon { color: maroon; }\r
384 span.navy { color: navy; }\r
385 span.olive { color: olive; }\r
386 span.purple { color: purple; }\r
387 span.red { color: red; }\r
388 span.silver { color: silver; }\r
389 span.teal { color: teal; }\r
390 span.white { color: white; }\r
391 span.yellow { color: yellow; }\r
392 \r
393 span.aqua-background { background: aqua; }\r
394 span.black-background { background: black; }\r
395 span.blue-background { background: blue; }\r
396 span.fuchsia-background { background: fuchsia; }\r
397 span.gray-background { background: gray; }\r
398 span.green-background { background: green; }\r
399 span.lime-background { background: lime; }\r
400 span.maroon-background { background: maroon; }\r
401 span.navy-background { background: navy; }\r
402 span.olive-background { background: olive; }\r
403 span.purple-background { background: purple; }\r
404 span.red-background { background: red; }\r
405 span.silver-background { background: silver; }\r
406 span.teal-background { background: teal; }\r
407 span.white-background { background: white; }\r
408 span.yellow-background { background: yellow; }\r
409 \r
410 span.big { font-size: 2em; }\r
411 span.small { font-size: 0.6em; }\r
412 \r
413 span.underline { text-decoration: underline; }\r
414 span.overline { text-decoration: overline; }\r
415 span.line-through { text-decoration: line-through; }\r
416 \r
417 div.unbreakable { page-break-inside: avoid; }\r
418 \r
419 \r
420 /*\r
421  * xhtml11 specific\r
422  *\r
423  * */\r
424 \r
425 div.tableblock {\r
426   margin-top: 1.0em;\r
427   margin-bottom: 1.5em;\r
428 }\r
429 div.tableblock > table {\r
430   border: 3px solid #527bbd;\r
431 }\r
432 thead, p.table.header {\r
433   font-weight: bold;\r
434   color: #527bbd;\r
435 }\r
436 p.table {\r
437   margin-top: 0;\r
438 }\r
439 /* Because the table frame attribute is overriden by CSS in most browsers. */\r
440 div.tableblock > table[frame="void"] {\r
441   border-style: none;\r
442 }\r
443 div.tableblock > table[frame="hsides"] {\r
444   border-left-style: none;\r
445   border-right-style: none;\r
446 }\r
447 div.tableblock > table[frame="vsides"] {\r
448   border-top-style: none;\r
449   border-bottom-style: none;\r
450 }\r
451 \r
452 \r
453 /*\r
454  * html5 specific\r
455  *\r
456  * */\r
457 \r
458 table.tableblock {\r
459   margin-top: 1.0em;\r
460   margin-bottom: 1.5em;\r
461 }\r
462 thead, p.tableblock.header {\r
463   font-weight: bold;\r
464   color: #527bbd;\r
465 }\r
466 p.tableblock {\r
467   margin-top: 0;\r
468 }\r
469 table.tableblock {\r
470   border-width: 3px;\r
471   border-spacing: 0px;\r
472   border-style: solid;\r
473   border-color: #527bbd;\r
474   border-collapse: collapse;\r
475 }\r
476 th.tableblock, td.tableblock {\r
477   border-width: 1px;\r
478   padding: 4px;\r
479   border-style: solid;\r
480   border-color: #527bbd;\r
481 }\r
482 \r
483 table.tableblock.frame-topbot {\r
484   border-left-style: hidden;\r
485   border-right-style: hidden;\r
486 }\r
487 table.tableblock.frame-sides {\r
488   border-top-style: hidden;\r
489   border-bottom-style: hidden;\r
490 }\r
491 table.tableblock.frame-none {\r
492   border-style: hidden;\r
493 }\r
494 \r
495 th.tableblock.halign-left, td.tableblock.halign-left {\r
496   text-align: left;\r
497 }\r
498 th.tableblock.halign-center, td.tableblock.halign-center {\r
499   text-align: center;\r
500 }\r
501 th.tableblock.halign-right, td.tableblock.halign-right {\r
502   text-align: right;\r
503 }\r
504 \r
505 th.tableblock.valign-top, td.tableblock.valign-top {\r
506   vertical-align: top;\r
507 }\r
508 th.tableblock.valign-middle, td.tableblock.valign-middle {\r
509   vertical-align: middle;\r
510 }\r
511 th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
512   vertical-align: bottom;\r
513 }\r
514 \r
515 \r
516 /*\r
517  * manpage specific\r
518  *\r
519  * */\r
520 \r
521 body.manpage h1 {\r
522   padding-top: 0.5em;\r
523   padding-bottom: 0.5em;\r
524   border-top: 2px solid silver;\r
525   border-bottom: 2px solid silver;\r
526 }\r
527 body.manpage h2 {\r
528   border-style: none;\r
529 }\r
530 body.manpage div.sectionbody {\r
531   margin-left: 3em;\r
532 }\r
533 \r
534 @media print {\r
535   body.manpage div#toc { display: none; }\r
536 }\r
537 \r
538 \r
539 </style>\r
540 <script type="text/javascript">\r
541 /*<![CDATA[*/\r
542 var asciidoc = {  // Namespace.\r
543 \r
544 /////////////////////////////////////////////////////////////////////\r
545 // Table Of Contents generator\r
546 /////////////////////////////////////////////////////////////////////\r
547 \r
548 /* Author: Mihai Bazon, September 2002\r
549  * http://students.infoiasi.ro/~mishoo\r
550  *\r
551  * Table Of Content generator\r
552  * Version: 0.4\r
553  *\r
554  * Feel free to use this script under the terms of the GNU General Public\r
555  * License, as long as you do not remove or alter this notice.\r
556  */\r
557 \r
558  /* modified by Troy D. Hanson, September 2006. License: GPL */\r
559  /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
560 \r
561 // toclevels = 1..4.\r
562 toc: function (toclevels) {\r
563 \r
564   function getText(el) {\r
565     var text = "";\r
566     for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
567       if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
568         text += i.data;\r
569       else if (i.firstChild != null)\r
570         text += getText(i);\r
571     }\r
572     return text;\r
573   }\r
574 \r
575   function TocEntry(el, text, toclevel) {\r
576     this.element = el;\r
577     this.text = text;\r
578     this.toclevel = toclevel;\r
579   }\r
580 \r
581   function tocEntries(el, toclevels) {\r
582     var result = new Array;\r
583     var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
584     // Function that scans the DOM tree for header elements (the DOM2\r
585     // nodeIterator API would be a better technique but not supported by all\r
586     // browsers).\r
587     var iterate = function (el) {\r
588       for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
589         if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
590           var mo = re.exec(i.tagName);\r
591           if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
592             result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
593           }\r
594           iterate(i);\r
595         }\r
596       }\r
597     }\r
598     iterate(el);\r
599     return result;\r
600   }\r
601 \r
602   var toc = document.getElementById("toc");\r
603   if (!toc) {\r
604     return;\r
605   }\r
606 \r
607   // Delete existing TOC entries in case we're reloading the TOC.\r
608   var tocEntriesToRemove = [];\r
609   var i;\r
610   for (i = 0; i < toc.childNodes.length; i++) {\r
611     var entry = toc.childNodes[i];\r
612     if (entry.nodeName.toLowerCase() == 'div'\r
613      && entry.getAttribute("class")\r
614      && entry.getAttribute("class").match(/^toclevel/))\r
615       tocEntriesToRemove.push(entry);\r
616   }\r
617   for (i = 0; i < tocEntriesToRemove.length; i++) {\r
618     toc.removeChild(tocEntriesToRemove[i]);\r
619   }\r
620 \r
621   // Rebuild TOC entries.\r
622   var entries = tocEntries(document.getElementById("content"), toclevels);\r
623   for (var i = 0; i < entries.length; ++i) {\r
624     var entry = entries[i];\r
625     if (entry.element.id == "")\r
626       entry.element.id = "_toc_" + i;\r
627     var a = document.createElement("a");\r
628     a.href = "#" + entry.element.id;\r
629     a.appendChild(document.createTextNode(entry.text));\r
630     var div = document.createElement("div");\r
631     div.appendChild(a);\r
632     div.className = "toclevel" + entry.toclevel;\r
633     toc.appendChild(div);\r
634   }\r
635   if (entries.length == 0)\r
636     toc.parentNode.removeChild(toc);\r
637 },\r
638 \r
639 \r
640 /////////////////////////////////////////////////////////////////////\r
641 // Footnotes generator\r
642 /////////////////////////////////////////////////////////////////////\r
643 \r
644 /* Based on footnote generation code from:\r
645  * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
646  */\r
647 \r
648 footnotes: function () {\r
649   // Delete existing footnote entries in case we're reloading the footnodes.\r
650   var i;\r
651   var noteholder = document.getElementById("footnotes");\r
652   if (!noteholder) {\r
653     return;\r
654   }\r
655   var entriesToRemove = [];\r
656   for (i = 0; i < noteholder.childNodes.length; i++) {\r
657     var entry = noteholder.childNodes[i];\r
658     if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
659       entriesToRemove.push(entry);\r
660   }\r
661   for (i = 0; i < entriesToRemove.length; i++) {\r
662     noteholder.removeChild(entriesToRemove[i]);\r
663   }\r
664 \r
665   // Rebuild footnote entries.\r
666   var cont = document.getElementById("content");\r
667   var spans = cont.getElementsByTagName("span");\r
668   var refs = {};\r
669   var n = 0;\r
670   for (i=0; i<spans.length; i++) {\r
671     if (spans[i].className == "footnote") {\r
672       n++;\r
673       var note = spans[i].getAttribute("data-note");\r
674       if (!note) {\r
675         // Use [\s\S] in place of . so multi-line matches work.\r
676         // Because JavaScript has no s (dotall) regex flag.\r
677         note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
678         spans[i].innerHTML =\r
679           "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
680           "' title='View footnote' class='footnote'>" + n + "</a>]";\r
681         spans[i].setAttribute("data-note", note);\r
682       }\r
683       noteholder.innerHTML +=\r
684         "<div class='footnote' id='_footnote_" + n + "'>" +\r
685         "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
686         n + "</a>. " + note + "</div>";\r
687       var id =spans[i].getAttribute("id");\r
688       if (id != null) refs["#"+id] = n;\r
689     }\r
690   }\r
691   if (n == 0)\r
692     noteholder.parentNode.removeChild(noteholder);\r
693   else {\r
694     // Process footnoterefs.\r
695     for (i=0; i<spans.length; i++) {\r
696       if (spans[i].className == "footnoteref") {\r
697         var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
698         href = href.match(/#.*/)[0];  // Because IE return full URL.\r
699         n = refs[href];\r
700         spans[i].innerHTML =\r
701           "[<a href='#_footnote_" + n +\r
702           "' title='View footnote' class='footnote'>" + n + "</a>]";\r
703       }\r
704     }\r
705   }\r
706 },\r
707 \r
708 install: function(toclevels) {\r
709   var timerId;\r
710 \r
711   function reinstall() {\r
712     asciidoc.footnotes();\r
713     if (toclevels) {\r
714       asciidoc.toc(toclevels);\r
715     }\r
716   }\r
717 \r
718   function reinstallAndRemoveTimer() {\r
719     clearInterval(timerId);\r
720     reinstall();\r
721   }\r
722 \r
723   timerId = setInterval(reinstall, 500);\r
724   if (document.addEventListener)\r
725     document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
726   else\r
727     window.onload = reinstallAndRemoveTimer;\r
728 }\r
729 \r
730 }\r
731 asciidoc.install(2);\r
732 /*]]>*/\r
733 </script>\r
734 </head>\r
735 <body class="article">\r
736 <div id="header">\r
737 <h1>ccache news</h1>\r
738 <span id="revnumber">version 3.5.1</span>\r
739 <div id="toc">
740   <div id="toctitle">Table of Contents</div>
741   <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
742 </div>\r
743 </div>\r
744 <div id="content">\r
745 <div class="sect1">\r
746 <h2 id="_ccache_3_5_1">ccache 3.5.1</h2>\r
747 <div class="sectionbody">\r
748 <div class="paragraph"><p>Release date: 2019-01-02</p></div>\r
749 <div class="sect2">\r
750 <h3 id="_changes">Changes</h3>\r
751 <div class="ulist"><ul>\r
752 <li>\r
753 <p>\r
754 Added missing getopt_long.c source file to release archive.\r
755 </p>\r
756 </li>\r
757 <li>\r
758 <p>\r
759 Fixed (harmless) compiler warnings when building ccache object files.\r
760 </p>\r
761 </li>\r
762 <li>\r
763 <p>\r
764 CFLAGS is no longer passed to the linker when linking ccache.\r
765 </p>\r
766 </li>\r
767 <li>\r
768 <p>\r
769 Improved development mode build flags.\r
770 </p>\r
771 </li>\r
772 </ul></div>\r
773 </div>\r
774 </div>\r
775 </div>\r
776 <div class="sect1">\r
777 <h2 id="_ccache_3_5">ccache 3.5</h2>\r
778 <div class="sectionbody">\r
779 <div class="paragraph"><p>Release date: 2018-10-15</p></div>\r
780 <div class="sect2">\r
781 <h3 id="_changes_2">Changes</h3>\r
782 <div class="ulist"><ul>\r
783 <li>\r
784 <p>\r
785 Added a boolean <code>debug</code> (<code>CCACHE_DEBUG</code>) configuration option. When enabled,\r
786   ccache will create per-object debug files that are helpful e.g. when\r
787   debugging unexpected cache misses. See also the new &#8220;Cache debugging&#8221;\r
788   section in the manual.\r
789 </p>\r
790 </li>\r
791 <li>\r
792 <p>\r
793 Renamed <code>CCACHE_CC</code> to <code>CCACHE_COMPILER</code> (keeping the former as a deprecated\r
794   alias).\r
795 </p>\r
796 </li>\r
797 <li>\r
798 <p>\r
799 Added a new command-line option <code>-k/--get-config</code> that prints the value of a\r
800   config key.\r
801 </p>\r
802 </li>\r
803 <li>\r
804 <p>\r
805 It is now possible to let ccache hash a precomputed checksum file instead of\r
806   the full content of a precompiled header. This can save time for large\r
807   precompiled headers. Note that the build system needs to keep the checksum\r
808   file in sync with the precompiled header for this to work.\r
809 </p>\r
810 </li>\r
811 <li>\r
812 <p>\r
813 Improved performance substantially when using <code>hash_dir = false</code> on platforms\r
814   like macOS where <code>getcwd()</code> is slow.\r
815 </p>\r
816 </li>\r
817 <li>\r
818 <p>\r
819 Added &#8220;stats updated&#8221; timestamp in <code>ccache -s</code> output. This can be useful\r
820   if you wonder whether ccache actually was used for your last build.\r
821 </p>\r
822 </li>\r
823 <li>\r
824 <p>\r
825 Renamed &#8220;stats zero time&#8221; to &#8220;stats zeroed&#8221; and documented it. The\r
826   counter is also now only present in <code>ccache -s</code> output when <code>ccache -z</code>\r
827   actually has been called.\r
828 </p>\r
829 </li>\r
830 <li>\r
831 <p>\r
832 The content of the <code>-fsanitize-blacklist</code> file is now included in the hash,\r
833   so updates to the file will now correctly result in separate cache entries.\r
834 </p>\r
835 </li>\r
836 <li>\r
837 <p>\r
838 It&#8217;s now possible to opt out of building and installing man pages when\r
839   running <code>make install</code> in the source repository.\r
840 </p>\r
841 </li>\r
842 <li>\r
843 <p>\r
844 If the compiler type can&#8217;t be detected (e.g. if it is named <strong>cc</strong>), use safer\r
845   defaults that won&#8217;t trip up Clang.\r
846 </p>\r
847 </li>\r
848 <li>\r
849 <p>\r
850 Made the ccache test suite work on FreeBSD.\r
851 </p>\r
852 </li>\r
853 <li>\r
854 <p>\r
855 Added <code>file_stat_matches_ctime</code> option to disable ctime check if\r
856   <code>file_stat_matches</code> is enabled.\r
857 </p>\r
858 </li>\r
859 <li>\r
860 <p>\r
861 Made “./configure --without-bundled-zlib” do what’s intended.\r
862 </p>\r
863 </li>\r
864 </ul></div>\r
865 </div>\r
866 </div>\r
867 </div>\r
868 <div class="sect1">\r
869 <h2 id="_ccache_3_4_3">ccache 3.4.3</h2>\r
870 <div class="sectionbody">\r
871 <div class="paragraph"><p>Release date: 2018-09-02</p></div>\r
872 <div class="sect2">\r
873 <h3 id="_bug_fixes">Bug fixes</h3>\r
874 <div class="ulist"><ul>\r
875 <li>\r
876 <p>\r
877 Fixed a race condition when creating the initial config file in the cache\r
878   directory.\r
879 </p>\r
880 </li>\r
881 <li>\r
882 <p>\r
883 Bail out on too hard Clang option <code>-MJ</code>.\r
884 </p>\r
885 </li>\r
886 <li>\r
887 <p>\r
888 Bail out on too hard option <code>-save-temps=obj</code>.\r
889 </p>\r
890 </li>\r
891 <li>\r
892 <p>\r
893 Handle separate parameter to Clang option <code>-target</code> correctly.\r
894 </p>\r
895 </li>\r
896 <li>\r
897 <p>\r
898 Upgraded bundled zlib to version 1.2.11.\r
899 </p>\r
900 </li>\r
901 </ul></div>\r
902 </div>\r
903 </div>\r
904 </div>\r
905 <div class="sect1">\r
906 <h2 id="_ccache_3_4_2">ccache 3.4.2</h2>\r
907 <div class="sectionbody">\r
908 <div class="paragraph"><p>Release date: 2018-03-25</p></div>\r
909 <div class="sect2">\r
910 <h3 id="_bug_fixes_2">Bug fixes</h3>\r
911 <div class="ulist"><ul>\r
912 <li>\r
913 <p>\r
914 The cleanup algorithm has been fixed to not misbehave when files are removed\r
915   by another process while the cleanup process is running. Previously, too many\r
916   files could be removed from the cache if multiple cleanup processes were\r
917   triggered at the same time, in extreme cases trimming the cache to a much\r
918   smaller size than the configured limits.\r
919 </p>\r
920 </li>\r
921 <li>\r
922 <p>\r
923 Correctly hash preprocessed headers located in a &#8220;.gch directory&#8221;.\r
924   Previously, ccache would not pick up changes to such precompiled headers,\r
925   risking false positive cache hits.\r
926 </p>\r
927 </li>\r
928 <li>\r
929 <p>\r
930 Fixed build failure when using the bundled zlib sources.\r
931 </p>\r
932 </li>\r
933 <li>\r
934 <p>\r
935 ccache 3.3.5 added a workaround for not triggering Clang errors when a\r
936   precompiled header&#8217;s dependency has an updated timestamp (but identical\r
937   content). That workaround is now only applied when the compiler is Clang.\r
938 </p>\r
939 </li>\r
940 <li>\r
941 <p>\r
942 Made it possible to perform out-of-source builds in dev mode again.\r
943 </p>\r
944 </li>\r
945 </ul></div>\r
946 </div>\r
947 </div>\r
948 </div>\r
949 <div class="sect1">\r
950 <h2 id="_ccache_3_4_1">ccache 3.4.1</h2>\r
951 <div class="sectionbody">\r
952 <div class="paragraph"><p>Release date: 2018-02-11</p></div>\r
953 <div class="sect2">\r
954 <h3 id="_bug_fixes_3">Bug fixes</h3>\r
955 <div class="ulist"><ul>\r
956 <li>\r
957 <p>\r
958 Fixed printing of version number in <code>ccache --version</code>.\r
959 </p>\r
960 </li>\r
961 </ul></div>\r
962 </div>\r
963 </div>\r
964 </div>\r
965 <div class="sect1">\r
966 <h2 id="_ccache_3_4">ccache 3.4</h2>\r
967 <div class="sectionbody">\r
968 <div class="paragraph"><p>Release date: 2018-02-11</p></div>\r
969 <div class="sect2">\r
970 <h3 id="_new_features_and_enhancements">New features and enhancements</h3>\r
971 <div class="ulist"><ul>\r
972 <li>\r
973 <p>\r
974 The compiler option form <code>--sysroot arg</code> is now handled like the documented\r
975   <code>--sysroot=arg</code> form.\r
976 </p>\r
977 </li>\r
978 <li>\r
979 <p>\r
980 Added support for caching <code>.su</code> files generated by GCC flag <code>-fstack-usage</code>.\r
981 </p>\r
982 </li>\r
983 <li>\r
984 <p>\r
985 ccache should now work with distcc&#8217;s &#8220;pump&#8221; wrapper.\r
986 </p>\r
987 </li>\r
988 <li>\r
989 <p>\r
990 The optional unifier is no longer disabled when the direct mode is enabled.\r
991 </p>\r
992 </li>\r
993 <li>\r
994 <p>\r
995 Added support for NVCC compiler options <code>--compiler-bindir/-ccbin</code>,\r
996   <code>--output-directory/-odir</code> and <code>--libdevice-directory/-ldir</code>.\r
997 </p>\r
998 </li>\r
999 <li>\r
1000 <p>\r
1001 Boolean environment variable settings no longer accept the following\r
1002   (case-insensitive) values: <code>0</code>, <code>false</code>, <code>disable</code> and <code>no</code>. All other values\r
1003   are accepted and taken to mean &#8220;true&#8221;. This is to stop users from setting\r
1004   e.g. <code>CCACHE_DISABLE=0</code> and then expect the cache to be used.\r
1005 </p>\r
1006 </li>\r
1007 <li>\r
1008 <p>\r
1009 Improved support for <code>run_second_cpp = false</code>: If combined with passing\r
1010   <code>-fdirectives-only</code> (GCC) or <code>frewrite-includes</code> (Clang) to the compiler,\r
1011   diagnostics warnings and similar will be correct.\r
1012 </p>\r
1013 </li>\r
1014 <li>\r
1015 <p>\r
1016 An implicit <code>-MQ</code> is now passed to the preprocessor only if the object file\r
1017   extension is non-standard. This should make it easier to use EDG-based\r
1018   compilers (e.g. GHS) which don&#8217;t understand <code>-MQ</code>.\r
1019 </p>\r
1020 </li>\r
1021 <li>\r
1022 <p>\r
1023 ccache now treats an unreadable configuration file just like a missing\r
1024   configuration file.\r
1025 </p>\r
1026 </li>\r
1027 <li>\r
1028 <p>\r
1029 Documented more pitfalls with enabling <code>hard_links</code> (<code>CCACHE_HARDLINK</code>).\r
1030 </p>\r
1031 </li>\r
1032 <li>\r
1033 <p>\r
1034 Documented caveats related to colored warnings from compilers.\r
1035 </p>\r
1036 </li>\r
1037 </ul></div>\r
1038 </div>\r
1039 <div class="sect2">\r
1040 <h3 id="_bug_fixes_4">Bug fixes</h3>\r
1041 <div class="ulist"><ul>\r
1042 <li>\r
1043 <p>\r
1044 File size and number counters are now updated correctly when files are\r
1045   overwritten in the cache, e.g. when using <code>CCACHE_RECACHE</code>.\r
1046 </p>\r
1047 </li>\r
1048 <li>\r
1049 <p>\r
1050 <code>run_second_cpp</code> is now forced for NVCC.\r
1051 </p>\r
1052 </li>\r
1053 <li>\r
1054 <p>\r
1055 Fixed how the NVCC options <code>-optf</code> and <code>-odir</code> are handled.\r
1056 </p>\r
1057 </li>\r
1058 </ul></div>\r
1059 </div>\r
1060 </div>\r
1061 </div>\r
1062 <div class="sect1">\r
1063 <h2 id="_ccache_3_3_6">ccache 3.3.6</h2>\r
1064 <div class="sectionbody">\r
1065 <div class="paragraph"><p>Release date: 2018-01-28</p></div>\r
1066 <div class="sect2">\r
1067 <h3 id="_new_features_and_enhancements_2">New features and enhancements</h3>\r
1068 <div class="ulist"><ul>\r
1069 <li>\r
1070 <p>\r
1071 Improved instructions on how to get cache hits between different working\r
1072   directories.\r
1073 </p>\r
1074 </li>\r
1075 </ul></div>\r
1076 </div>\r
1077 <div class="sect2">\r
1078 <h3 id="_bug_fixes_5">Bug fixes</h3>\r
1079 <div class="ulist"><ul>\r
1080 <li>\r
1081 <p>\r
1082 Fixed regression in ccache 3.3.5 related to the <code>UNCACHED_ERR_FD</code> feature.\r
1083 </p>\r
1084 </li>\r
1085 </ul></div>\r
1086 </div>\r
1087 </div>\r
1088 </div>\r
1089 <div class="sect1">\r
1090 <h2 id="_ccache_3_3_5">ccache 3.3.5</h2>\r
1091 <div class="sectionbody">\r
1092 <div class="paragraph"><p>Release date: 2018-01-13</p></div>\r
1093 <div class="sect2">\r
1094 <h3 id="_new_features_and_enhancements_3">New features and enhancements</h3>\r
1095 <div class="ulist"><ul>\r
1096 <li>\r
1097 <p>\r
1098 Documented how automatic cache cleanup works.\r
1099 </p>\r
1100 </li>\r
1101 </ul></div>\r
1102 </div>\r
1103 <div class="sect2">\r
1104 <h3 id="_bug_fixes_6">Bug fixes</h3>\r
1105 <div class="ulist"><ul>\r
1106 <li>\r
1107 <p>\r
1108 Fixed a regression where the original order of debug options could be lost.\r
1109   This reverts the &#8220;Improved parsing of <code>-g*</code> options&#8221; feature in ccache 3.3.\r
1110 </p>\r
1111 </li>\r
1112 <li>\r
1113 <p>\r
1114 Multiple <code>-fdebug-prefix-map</code> options should now be handled correctly.\r
1115 </p>\r
1116 </li>\r
1117 <li>\r
1118 <p>\r
1119 Fixed matching of directories in the <code>ignore_headers_in_manifest</code>\r
1120   configuration option.\r
1121 </p>\r
1122 </li>\r
1123 <li>\r
1124 <p>\r
1125 Fixed detection of missing argument to <code>-opt</code>/<code>--options-file</code>.\r
1126 </p>\r
1127 </li>\r
1128 <li>\r
1129 <p>\r
1130 ccache now bails out when building a precompiled header if any of the\r
1131   corresponding header files has an updated timestamp. This fixes complaints\r
1132   from Clang.\r
1133 </p>\r
1134 </li>\r
1135 <li>\r
1136 <p>\r
1137 Fixed a bug related to erroneously storing a dependency file with absolute\r
1138   paths in the cache on a preprocessed hit.\r
1139 </p>\r
1140 </li>\r
1141 <li>\r
1142 <p>\r
1143 <code>ccache -c/--cleanup</code> now works like documented: it just recalculates size\r
1144   counters and trims the cache to not exceed the max size and file number\r
1145   limits. Previously, the forced cleanup took &#8220;limit_multiple&#8221; into account,\r
1146   so that <code>ccache -c/--cleanup</code> by default would trim the cache to 80% of the\r
1147   max limit.\r
1148 </p>\r
1149 </li>\r
1150 <li>\r
1151 <p>\r
1152 ccache no longer ignores linker arguments for Clang since Clang warns about\r
1153   them.\r
1154 </p>\r
1155 </li>\r
1156 <li>\r
1157 <p>\r
1158 Plugged a couple of file descriptor leaks.\r
1159 </p>\r
1160 </li>\r
1161 <li>\r
1162 <p>\r
1163 Fixed a bug where ccache would skip hashing the compiler argument following a\r
1164   <code>-fno-working-directory</code>, <code>-fworking-directory</code>, <code>-nostdinc</code>, <code>-nostdinc++</code>,\r
1165   <code>-remap</code> or <code>-trigraphs</code> option in preprocessor mode.\r
1166 </p>\r
1167 </li>\r
1168 </ul></div>\r
1169 </div>\r
1170 </div>\r
1171 </div>\r
1172 <div class="sect1">\r
1173 <h2 id="_ccache_3_3_4">ccache 3.3.4</h2>\r
1174 <div class="sectionbody">\r
1175 <div class="paragraph"><p>Release date: 2017-02-17</p></div>\r
1176 <div class="sect2">\r
1177 <h3 id="_new_features_and_enhancements_4">New features and enhancements</h3>\r
1178 <div class="ulist"><ul>\r
1179 <li>\r
1180 <p>\r
1181 Documented the different cache statistics counters.\r
1182 </p>\r
1183 </li>\r
1184 </ul></div>\r
1185 </div>\r
1186 <div class="sect2">\r
1187 <h3 id="_bug_fixes_7">Bug fixes</h3>\r
1188 <div class="ulist"><ul>\r
1189 <li>\r
1190 <p>\r
1191 Fixed a regression in ccache 3.3 related to potentially bad content of\r
1192   dependency files when compiling identical source code but with different\r
1193   source paths. This was only partially fixed in 3.3.2 and reverts the new\r
1194   &#8220;Names of included files are no longer included in the hash of the\r
1195   compiler&#8217;s preprocessed output&#8221; feature in 3.3.\r
1196 </p>\r
1197 </li>\r
1198 <li>\r
1199 <p>\r
1200 Corrected statistics counter for <code>-optf</code>/<code>--options-file</code> failure.\r
1201 </p>\r
1202 </li>\r
1203 <li>\r
1204 <p>\r
1205 Fixed undefined behavior warnings in ccache found by <code>-fsanitize=undefined</code>.\r
1206 </p>\r
1207 </li>\r
1208 </ul></div>\r
1209 </div>\r
1210 </div>\r
1211 </div>\r
1212 <div class="sect1">\r
1213 <h2 id="_ccache_3_3_3">ccache 3.3.3</h2>\r
1214 <div class="sectionbody">\r
1215 <div class="paragraph"><p>Release date: 2016-10-26</p></div>\r
1216 <div class="sect2">\r
1217 <h3 id="_bug_fixes_8">Bug fixes</h3>\r
1218 <div class="ulist"><ul>\r
1219 <li>\r
1220 <p>\r
1221 ccache now detects usage of <code>.incbin</code> assembler directives in the source code\r
1222   and avoids caching such compilations.\r
1223 </p>\r
1224 </li>\r
1225 </ul></div>\r
1226 </div>\r
1227 </div>\r
1228 </div>\r
1229 <div class="sect1">\r
1230 <h2 id="_ccache_3_3_2">ccache 3.3.2</h2>\r
1231 <div class="sectionbody">\r
1232 <div class="paragraph"><p>Release date: 2016-09-28</p></div>\r
1233 <div class="sect2">\r
1234 <h3 id="_bug_fixes_9">Bug fixes</h3>\r
1235 <div class="ulist"><ul>\r
1236 <li>\r
1237 <p>\r
1238 Fixed a regression in ccache 3.3 related to potentially bad content of\r
1239   dependency files when compiling identical source code but with different\r
1240   source paths.\r
1241 </p>\r
1242 </li>\r
1243 <li>\r
1244 <p>\r
1245 Fixed a regression in ccache 3.3.1: ccache could get confused when using the\r
1246   compiler option <code>-Wp,</code> to pass multiple options to the preprocessor,\r
1247   resulting in missing dependency files from direct mode cache hits.\r
1248 </p>\r
1249 </li>\r
1250 </ul></div>\r
1251 </div>\r
1252 </div>\r
1253 </div>\r
1254 <div class="sect1">\r
1255 <h2 id="_ccache_3_3_1">ccache 3.3.1</h2>\r
1256 <div class="sectionbody">\r
1257 <div class="paragraph"><p>Release date: 2016-09-07</p></div>\r
1258 <div class="sect2">\r
1259 <h3 id="_bug_fixes_10">Bug fixes</h3>\r
1260 <div class="ulist"><ul>\r
1261 <li>\r
1262 <p>\r
1263 Fixed a problem in the &#8220;multiple <code>-arch</code> options&#8221; support introduced in\r
1264   3.3. When using the direct mode (the default), different combinations of\r
1265   <code>-arch</code> options were not detected properly.\r
1266 </p>\r
1267 </li>\r
1268 <li>\r
1269 <p>\r
1270 Fixed an issue when compiler option <code>-Wp,-MT,path</code> is used instead of <code>-MT\r
1271   path</code> (and similar for <code>-MF</code>, <code>-MP</code> and <code>-MQ</code>) and <code>run_second_cpp</code>\r
1272   (<code>CCACHE_CPP2</code>) is enabled.\r
1273 </p>\r
1274 </li>\r
1275 </ul></div>\r
1276 </div>\r
1277 </div>\r
1278 </div>\r
1279 <div class="sect1">\r
1280 <h2 id="_ccache_3_3">ccache 3.3</h2>\r
1281 <div class="sectionbody">\r
1282 <div class="paragraph"><p>Release date: 2016-08-27</p></div>\r
1283 <div class="sect2">\r
1284 <h3 id="_notes">Notes</h3>\r
1285 <div class="ulist"><ul>\r
1286 <li>\r
1287 <p>\r
1288 A C99-compatible compiler is now required to build ccache.\r
1289 </p>\r
1290 </li>\r
1291 </ul></div>\r
1292 </div>\r
1293 <div class="sect2">\r
1294 <h3 id="_new_features_and_enhancements_5">New features and enhancements</h3>\r
1295 <div class="ulist"><ul>\r
1296 <li>\r
1297 <p>\r
1298 The configuration option <code>run_second_cpp</code> (<code>CCACHE_CPP2</code>) now defaults to\r
1299   true. This improves ccache&#8217;s out-of-the-box experience for compilers that\r
1300   can&#8217;t compile their own preprocessed output with the same outcome as if they\r
1301   compiled the real source code directly, e.g. newer versions of GCC and Clang.\r
1302 </p>\r
1303 </li>\r
1304 <li>\r
1305 <p>\r
1306 The configuration option <code>hash_dir</code> (<code>CCACHE_HASHDIR</code>) now defaults to true.\r
1307 </p>\r
1308 </li>\r
1309 <li>\r
1310 <p>\r
1311 Added a new <code>ignore_headers_in_manifest</code> configuration option, which\r
1312   specifies headers that should be ignored in the direct mode.\r
1313 </p>\r
1314 </li>\r
1315 <li>\r
1316 <p>\r
1317 Added a new <code>prefix_command_cpp</code> (<code>CCACHE_PREFIX_CPP</code>) configuration option,\r
1318   which specifies one or several prefixes to add to the command line ccache\r
1319   uses when invoking the preprocessor.\r
1320 </p>\r
1321 </li>\r
1322 <li>\r
1323 <p>\r
1324 Added a new <code>limit_multiple</code> (<code>CCACHE_LIMIT_MULTIPLE</code>) configuration option,\r
1325   which specifies how much of the cache to remove when cleaning.\r
1326 </p>\r
1327 </li>\r
1328 <li>\r
1329 <p>\r
1330 Added a new <code>keep_comments_cpp</code> (<code>CCACHE_COMMENTS</code>) configuration option,\r
1331   which tells ccache not to discard the comments before hashing preprocessor\r
1332   output. This can be used to check documentation with <strong>-Wdocumentation</strong>.\r
1333 </p>\r
1334 </li>\r
1335 <li>\r
1336 <p>\r
1337 Added a new sloppiness option <code>no_system_headers</code>, which tells ccache not to\r
1338   include system headers in manifest files.\r
1339 </p>\r
1340 </li>\r
1341 <li>\r
1342 <p>\r
1343 Added a new statistics counter that tracks the number of performed cleanups\r
1344   due to the cache size being over the limit. The value is shown in the output\r
1345   of &#8220;ccache -s&#8221;.\r
1346 </p>\r
1347 </li>\r
1348 <li>\r
1349 <p>\r
1350 Added support for relocating debug info directory using <code>-fdebug-prefix-map</code>.\r
1351   This allows for cache hits even when <code>hash_dir</code> is used in combination with\r
1352   <code>base_dir</code>.\r
1353 </p>\r
1354 </li>\r
1355 <li>\r
1356 <p>\r
1357 Added a new &#8220;cache hit rate&#8221; field to the output of &#8220;ccache -s&#8221;.\r
1358 </p>\r
1359 </li>\r
1360 <li>\r
1361 <p>\r
1362 Added support for caching compilation of assembler code produced by e.g.\r
1363   &#8220;gcc -S file.c&#8221;.\r
1364 </p>\r
1365 </li>\r
1366 <li>\r
1367 <p>\r
1368 Added support for cuda including the -optf/--options-file option.\r
1369 </p>\r
1370 </li>\r
1371 <li>\r
1372 <p>\r
1373 Added support for Fortran 77.\r
1374 </p>\r
1375 </li>\r
1376 <li>\r
1377 <p>\r
1378 Added support for multiple <code>-arch</code> options to produce "fat binaries".\r
1379 </p>\r
1380 </li>\r
1381 <li>\r
1382 <p>\r
1383 Multiple identical <code>-arch</code> arguments are now handled without bailing.\r
1384 </p>\r
1385 </li>\r
1386 <li>\r
1387 <p>\r
1388 The concatenated form of some long compiler options is now recognized, for\r
1389   example when using <code>-isystemPATH</code> instead of <code>-isystem PATH</code>.\r
1390 </p>\r
1391 </li>\r
1392 <li>\r
1393 <p>\r
1394 If hard-linking is enabled and but fails (e.g. due to cross-device linking),\r
1395   ccache now falls back to copying instead of running the compiler.\r
1396 </p>\r
1397 </li>\r
1398 <li>\r
1399 <p>\r
1400 Made the <code>hash_dir</code> option only have effect when generating debug info.\r
1401 </p>\r
1402 </li>\r
1403 <li>\r
1404 <p>\r
1405 ccache now knows how to convert absolute paths to relative paths inside\r
1406   dependency files when using <code>base_dir</code>.\r
1407 </p>\r
1408 </li>\r
1409 <li>\r
1410 <p>\r
1411 Improved parsing of <code>-g*</code> options.\r
1412 </p>\r
1413 </li>\r
1414 <li>\r
1415 <p>\r
1416 Made ccache understand <code>-Wp,-D*</code> options.\r
1417 </p>\r
1418 </li>\r
1419 <li>\r
1420 <p>\r
1421 ccache now understands the undocumented <code>-coverage</code> (only one dash) GCC\r
1422   option.\r
1423 </p>\r
1424 </li>\r
1425 <li>\r
1426 <p>\r
1427 Names of included files are no longer included in the hash of the compiler&#8217;s\r
1428   preprocessed output. This leads to more potential cache hits when not using\r
1429   the direct mode.\r
1430 </p>\r
1431 </li>\r
1432 <li>\r
1433 <p>\r
1434 Increased buffer size used when reading file data. This improves performance\r
1435   slightly.\r
1436 </p>\r
1437 </li>\r
1438 </ul></div>\r
1439 </div>\r
1440 <div class="sect2">\r
1441 <h3 id="_bug_fixes_11">Bug fixes</h3>\r
1442 <div class="ulist"><ul>\r
1443 <li>\r
1444 <p>\r
1445 Bail out on too hard compiler option <code>-P</code>.\r
1446 </p>\r
1447 </li>\r
1448 <li>\r
1449 <p>\r
1450 Fixed Clang test suite when running on Linux.\r
1451 </p>\r
1452 </li>\r
1453 <li>\r
1454 <p>\r
1455 Fixed build and test for MinGW32 and Windows.\r
1456 </p>\r
1457 </li>\r
1458 </ul></div>\r
1459 </div>\r
1460 </div>\r
1461 </div>\r
1462 <div class="sect1">\r
1463 <h2 id="_ccache_3_2_9">ccache 3.2.9</h2>\r
1464 <div class="sectionbody">\r
1465 <div class="paragraph"><p>Release date: 2016-09-28</p></div>\r
1466 <div class="sect2">\r
1467 <h3 id="_bug_fixes_12">Bug fixes</h3>\r
1468 <div class="ulist"><ul>\r
1469 <li>\r
1470 <p>\r
1471 Fixed a regression in ccache 3.2.8: ccache could get confused when using the\r
1472   compiler option <code>-Wp,</code> to pass multiple options to the preprocessor,\r
1473   resulting in missing dependency files from direct mode cache hits.\r
1474 </p>\r
1475 </li>\r
1476 </ul></div>\r
1477 </div>\r
1478 </div>\r
1479 </div>\r
1480 <div class="sect1">\r
1481 <h2 id="_ccache_3_2_8">ccache 3.2.8</h2>\r
1482 <div class="sectionbody">\r
1483 <div class="paragraph"><p>Release date: 2016-09-07</p></div>\r
1484 <div class="sect2">\r
1485 <h3 id="_bug_fixes_13">Bug fixes</h3>\r
1486 <div class="ulist"><ul>\r
1487 <li>\r
1488 <p>\r
1489 Fixed an issue when compiler option <code>-Wp,-MT,path</code> is used instead of <code>-MT\r
1490   path</code> (and similar for <code>-MF</code>, <code>-MP</code> and <code>-MQ</code>) and <code>run_second_cpp</code>\r
1491   (<code>CCACHE_CPP2</code>) is enabled.\r
1492 </p>\r
1493 </li>\r
1494 <li>\r
1495 <p>\r
1496 ccache now understands the undocumented <code>-coverage</code> (only one dash) GCC\r
1497   option.\r
1498 </p>\r
1499 </li>\r
1500 </ul></div>\r
1501 </div>\r
1502 </div>\r
1503 </div>\r
1504 <div class="sect1">\r
1505 <h2 id="_ccache_3_2_7">ccache 3.2.7</h2>\r
1506 <div class="sectionbody">\r
1507 <div class="paragraph"><p>Release date: 2016-07-20</p></div>\r
1508 <div class="sect2">\r
1509 <h3 id="_bug_fixes_14">Bug fixes</h3>\r
1510 <div class="ulist"><ul>\r
1511 <li>\r
1512 <p>\r
1513 Fixed a bug which could lead to false cache hits for compiler command lines\r
1514   with a missing argument to an option that takes an argument.\r
1515 </p>\r
1516 </li>\r
1517 <li>\r
1518 <p>\r
1519 ccache now knows how to work around a glitch in the output of GCC 6&#8217;s\r
1520   preprocessor.\r
1521 </p>\r
1522 </li>\r
1523 </ul></div>\r
1524 </div>\r
1525 </div>\r
1526 </div>\r
1527 <div class="sect1">\r
1528 <h2 id="_ccache_3_2_6">ccache 3.2.6</h2>\r
1529 <div class="sectionbody">\r
1530 <div class="paragraph"><p>Release date: 2016-07-12</p></div>\r
1531 <div class="sect2">\r
1532 <h3 id="_bug_fixes_15">Bug fixes</h3>\r
1533 <div class="ulist"><ul>\r
1534 <li>\r
1535 <p>\r
1536 Fixed build problem on QNX, which lacks &#8220;SA_RESTART&#8221;.\r
1537 </p>\r
1538 </li>\r
1539 <li>\r
1540 <p>\r
1541 Bail out on compiler option <code>-fstack-usage</code> since it creates a <code>.su</code> file\r
1542   which ccache currently doesn&#8217;t handle.\r
1543 </p>\r
1544 </li>\r
1545 <li>\r
1546 <p>\r
1547 Fixed a bug where (due to ccache rewriting paths) the compiler could choose\r
1548   incorrect include files if <code>CCACHE_BASEDIR</code> is used and the source file path\r
1549   is absolute and is a symlink.\r
1550 </p>\r
1551 </li>\r
1552 </ul></div>\r
1553 </div>\r
1554 </div>\r
1555 </div>\r
1556 <div class="sect1">\r
1557 <h2 id="_ccache_3_2_5">ccache 3.2.5</h2>\r
1558 <div class="sectionbody">\r
1559 <div class="paragraph"><p>Release date: 2016-04-17</p></div>\r
1560 <div class="sect2">\r
1561 <h3 id="_new_features_and_enhancements_6">New features and enhancements</h3>\r
1562 <div class="ulist"><ul>\r
1563 <li>\r
1564 <p>\r
1565 Only pass Clang-specific <code>-stdlib=</code> to the preprocessor.\r
1566 </p>\r
1567 </li>\r
1568 <li>\r
1569 <p>\r
1570 Improved handling of stale NFS handles.\r
1571 </p>\r
1572 </li>\r
1573 <li>\r
1574 <p>\r
1575 Made it harder to misinterpret documentation of boolean environment settings'\r
1576   semantics.\r
1577 </p>\r
1578 </li>\r
1579 </ul></div>\r
1580 </div>\r
1581 <div class="sect2">\r
1582 <h3 id="_bug_fixes_16">Bug fixes</h3>\r
1583 <div class="ulist"><ul>\r
1584 <li>\r
1585 <p>\r
1586 Include m4 files used by configure.ac in the source dist archives.\r
1587 </p>\r
1588 </li>\r
1589 <li>\r
1590 <p>\r
1591 Corrected "Performance" section in the manual regarding <code>__DATE_</code>, <code>__TIME__</code>\r
1592   and <code>__FILE__</code> macros.\r
1593 </p>\r
1594 </li>\r
1595 <li>\r
1596 <p>\r
1597 Fixed build on Solaris 10+ and AIX 7.\r
1598 </p>\r
1599 </li>\r
1600 <li>\r
1601 <p>\r
1602 Fixed failure to create directories on QNX.\r
1603 </p>\r
1604 </li>\r
1605 <li>\r
1606 <p>\r
1607 Don&#8217;t (try to) update manifest file in &#8220;read-only&#8221; and &#8220;read-only direct&#8221;\r
1608   modes.\r
1609 </p>\r
1610 </li>\r
1611 <li>\r
1612 <p>\r
1613 Fixed a bug in caching of <code>stat</code> system calls in &#8220;file_stat_matches\r
1614   sloppiness mode&#8221;.\r
1615 </p>\r
1616 </li>\r
1617 <li>\r
1618 <p>\r
1619 Fixed bug in hashing of Clang plugins, leading to unnecessary cache misses.\r
1620 </p>\r
1621 </li>\r
1622 <li>\r
1623 <p>\r
1624 Fixed --print-config to show &#8220;pch_defines sloppiness&#8221;.\r
1625 </p>\r
1626 </li>\r
1627 <li>\r
1628 <p>\r
1629 The man page is now built when running &#8220;make install&#8221; from Git repository\r
1630   sources.\r
1631 </p>\r
1632 </li>\r
1633 </ul></div>\r
1634 </div>\r
1635 </div>\r
1636 </div>\r
1637 <div class="sect1">\r
1638 <h2 id="_ccache_3_2_4">ccache 3.2.4</h2>\r
1639 <div class="sectionbody">\r
1640 <div class="paragraph"><p>Release date: 2015-10-08</p></div>\r
1641 <div class="sect2">\r
1642 <h3 id="_bug_fixes_17">Bug fixes</h3>\r
1643 <div class="ulist"><ul>\r
1644 <li>\r
1645 <p>\r
1646 Fixed build error related to zlib on systems with older make versions\r
1647   (regression in ccache 3.2.3).\r
1648 </p>\r
1649 </li>\r
1650 <li>\r
1651 <p>\r
1652 Made conversion-to-bool explicit to avoid build warnings (and potential\r
1653   runtime errors) on legacy systems.\r
1654 </p>\r
1655 </li>\r
1656 <li>\r
1657 <p>\r
1658 Improved signal handling: Kill compiler on SIGTERM; wait for compiler to exit\r
1659   before exiting; die appropriately.\r
1660 </p>\r
1661 </li>\r
1662 <li>\r
1663 <p>\r
1664 Minor fixes related to Windows support.\r
1665 </p>\r
1666 </li>\r
1667 <li>\r
1668 <p>\r
1669 The correct compression level is now used if compression is requested.\r
1670 </p>\r
1671 </li>\r
1672 <li>\r
1673 <p>\r
1674 Fixed a bug where cache cleanup could be run too early for caches larger than\r
1675   64 GiB on 32-bit systems.\r
1676 </p>\r
1677 </li>\r
1678 </ul></div>\r
1679 </div>\r
1680 </div>\r
1681 </div>\r
1682 <div class="sect1">\r
1683 <h2 id="_ccache_3_2_3">ccache 3.2.3</h2>\r
1684 <div class="sectionbody">\r
1685 <div class="paragraph"><p>Release date: 2015-08-16</p></div>\r
1686 <div class="sect2">\r
1687 <h3 id="_new_features_and_enhancements_7">New features and enhancements</h3>\r
1688 <div class="ulist"><ul>\r
1689 <li>\r
1690 <p>\r
1691 Added support for compiler option <code>-gsplit-dwarf</code>.\r
1692 </p>\r
1693 </li>\r
1694 </ul></div>\r
1695 </div>\r
1696 <div class="sect2">\r
1697 <h3 id="_bug_fixes_18">Bug fixes</h3>\r
1698 <div class="ulist"><ul>\r
1699 <li>\r
1700 <p>\r
1701 Support external zlib in nonstandard directory.\r
1702 </p>\r
1703 </li>\r
1704 <li>\r
1705 <p>\r
1706 Avoid calling <code>exit()</code> inside an exit handler.\r
1707 </p>\r
1708 </li>\r
1709 <li>\r
1710 <p>\r
1711 Let exit handler terminate properly.\r
1712 </p>\r
1713 </li>\r
1714 <li>\r
1715 <p>\r
1716 Bail out on compiler option <code>--save-temps</code> in addition to <code>-save-temps</code>.\r
1717 </p>\r
1718 </li>\r
1719 <li>\r
1720 <p>\r
1721 Only log "Disabling direct mode" once when failing to read potential include\r
1722   files.\r
1723 </p>\r
1724 </li>\r
1725 </ul></div>\r
1726 </div>\r
1727 </div>\r
1728 </div>\r
1729 <div class="sect1">\r
1730 <h2 id="_ccache_3_2_2">ccache 3.2.2</h2>\r
1731 <div class="sectionbody">\r
1732 <div class="paragraph"><p>Release date: 2015-05-10</p></div>\r
1733 <div class="sect2">\r
1734 <h3 id="_new_features_and_enhancements_8">New features and enhancements</h3>\r
1735 <div class="ulist"><ul>\r
1736 <li>\r
1737 <p>\r
1738 Added support for <code>CCACHE_COMPILERCHECK=string:&lt;value&gt;</code>. This is a faster\r
1739   alternative to <code>CCACHE_COMPILERCHECK=&lt;command&gt;</code> if the command&#8217;s output can\r
1740   be precalculated by the build system.\r
1741 </p>\r
1742 </li>\r
1743 <li>\r
1744 <p>\r
1745 Add support for caching code coverage results (compiling for gcov).\r
1746 </p>\r
1747 </li>\r
1748 </ul></div>\r
1749 </div>\r
1750 <div class="sect2">\r
1751 <h3 id="_bug_fixes_19">Bug fixes</h3>\r
1752 <div class="ulist"><ul>\r
1753 <li>\r
1754 <p>\r
1755 Made hash of cached result created with and without <code>CCACHE_CPP2</code> different.\r
1756   This makes it possible to rebuild with <code>CCACHE_CPP2</code> set without having to\r
1757   clear the cache to get new results.\r
1758 </p>\r
1759 </li>\r
1760 <li>\r
1761 <p>\r
1762 Don&#8217;t try to reset a non-existing stats file. This avoids &#8220;No such file or\r
1763   directory&#8221; messages in the ccache log when the cache directory doesn&#8217;t\r
1764   exist.\r
1765 </p>\r
1766 </li>\r
1767 <li>\r
1768 <p>\r
1769 Fixed a bug where ccache deleted Clang diagnostics after compiler failures.\r
1770 </p>\r
1771 </li>\r
1772 <li>\r
1773 <p>\r
1774 Avoid performing an unnecessary copy of the object file on a cache miss.\r
1775 </p>\r
1776 </li>\r
1777 <li>\r
1778 <p>\r
1779 Bail out on too hard compiler option <code>-fmodules</code>.\r
1780 </p>\r
1781 </li>\r
1782 <li>\r
1783 <p>\r
1784 Bail out on too hard compiler option <code>-fplugin=libcc1plugin</code> (interaction\r
1785   with GDB).\r
1786 </p>\r
1787 </li>\r
1788 <li>\r
1789 <p>\r
1790 Fixed build error when compiling ccache with recent Clang versions.\r
1791 </p>\r
1792 </li>\r
1793 <li>\r
1794 <p>\r
1795 Removed signal-unsafe code from signal handler.\r
1796 </p>\r
1797 </li>\r
1798 <li>\r
1799 <p>\r
1800 Corrected logic for when to output cached stderr.\r
1801 </p>\r
1802 </li>\r
1803 <li>\r
1804 <p>\r
1805 Wipe the whole cached result on failure retrieving a cached file.\r
1806 </p>\r
1807 </li>\r
1808 <li>\r
1809 <p>\r
1810 Fixed build error when compiling ccache with recent Clang versions.\r
1811 </p>\r
1812 </li>\r
1813 </ul></div>\r
1814 </div>\r
1815 </div>\r
1816 </div>\r
1817 <div class="sect1">\r
1818 <h2 id="_ccache_3_2_1">ccache 3.2.1</h2>\r
1819 <div class="sectionbody">\r
1820 <div class="paragraph"><p>Release date: 2014-12-10</p></div>\r
1821 <div class="sect2">\r
1822 <h3 id="_bug_fixes_20">Bug fixes</h3>\r
1823 <div class="ulist"><ul>\r
1824 <li>\r
1825 <p>\r
1826 Fixed regression in temporary file handling, which lead to incorrect\r
1827   permissions for stats, manifest and ccache.conf files in the cache.\r
1828 </p>\r
1829 </li>\r
1830 <li>\r
1831 <p>\r
1832 <code>CACHEDIR.TAG</code> files are now created in the [0-9a-f] subdirectories so that\r
1833   ccache.conf is not lost in backups.\r
1834 </p>\r
1835 </li>\r
1836 <li>\r
1837 <p>\r
1838 Made the default cache size suffix <code>G</code>, as previously documented.\r
1839 </p>\r
1840 </li>\r
1841 <li>\r
1842 <p>\r
1843 <code>-fdiagnostics-color=auto</code> is now passed to the compiler even if stderr is\r
1844   redirected. This fixes a problem when, for instance, a configure test probes\r
1845   if the compiler (wrapped via ccache) supports <code>-fdiagnostics-color=auto</code>.\r
1846 </p>\r
1847 </li>\r
1848 <li>\r
1849 <p>\r
1850 Added missing documentation for <code>max_files</code> and <code>max_size</code> configuration\r
1851   options.\r
1852 </p>\r
1853 </li>\r
1854 </ul></div>\r
1855 </div>\r
1856 </div>\r
1857 </div>\r
1858 <div class="sect1">\r
1859 <h2 id="_ccache_3_2">ccache 3.2</h2>\r
1860 <div class="sectionbody">\r
1861 <div class="paragraph"><p>Release date: 2014-11-17</p></div>\r
1862 <div class="sect2">\r
1863 <h3 id="_new_features_and_enhancements_9">New features and enhancements</h3>\r
1864 <div class="ulist"><ul>\r
1865 <li>\r
1866 <p>\r
1867 Added support for configuring ccache via one or several configuration files\r
1868   instead of via environment variables. Environment variables still have\r
1869   priority but are no longer the recommended way of customizing ccache\r
1870   behavior. See the manual for more information.\r
1871 </p>\r
1872 </li>\r
1873 <li>\r
1874 <p>\r
1875 Added support for compiler error/warning messages with color.\r
1876 </p>\r
1877 </li>\r
1878 <li>\r
1879 <p>\r
1880 Made creation of temporary directories and cache directories smarter to avoid\r
1881   unnecessary <code>stat</code> calls.\r
1882 </p>\r
1883 </li>\r
1884 <li>\r
1885 <p>\r
1886 Improved efficiency of the algorithm that scans for <code>__DATE_</code> and <code>__TIME__</code>\r
1887   tokens in the hashed source code.\r
1888 </p>\r
1889 </li>\r
1890 <li>\r
1891 <p>\r
1892 Added support for several binaries (separated by space) in <code>CCACHE_PREFIX</code>.\r
1893 </p>\r
1894 </li>\r
1895 <li>\r
1896 <p>\r
1897 The <code>-c</code> option is no longer passed to the preprocessor. This fixes problems\r
1898   with Clang and Solaris&#8217;s C++ compiler.\r
1899 </p>\r
1900 </li>\r
1901 <li>\r
1902 <p>\r
1903 ccache no longer passes preprocessor options like <code>-D</code> and <code>-I</code> to the\r
1904   compiler when compiling preprocessed output. This fixes warnings emitted by\r
1905   Clang.\r
1906 </p>\r
1907 </li>\r
1908 <li>\r
1909 <p>\r
1910 Compiler options <code>-fprofile-generate</code>, <code>-fprofile-arcs</code>, <code>-fprofile-use</code> and\r
1911   <code>-fbranch-probabilities</code> are now handled without bailing.\r
1912 </p>\r
1913 </li>\r
1914 <li>\r
1915 <p>\r
1916 Added support for Clang&#8217;s <code>--serialize-diagnostic</code> option, storing the\r
1917   diagnostic file (<code>.dia</code>) in the cache.\r
1918 </p>\r
1919 </li>\r
1920 <li>\r
1921 <p>\r
1922 Added support for precompiled headers when using Clang.\r
1923 </p>\r
1924 </li>\r
1925 <li>\r
1926 <p>\r
1927 Added support for Clang <code>.pth</code> (pretokenized header) files.\r
1928 </p>\r
1929 </li>\r
1930 <li>\r
1931 <p>\r
1932 Changed the <code>-x</code> language option to use the new objective C standard for GCC\r
1933   and Clang.\r
1934 </p>\r
1935 </li>\r
1936 <li>\r
1937 <p>\r
1938 On a cache miss, ccache now instructs the compiler to create the object file\r
1939   at the real destination and then copies the file into the cache instead of\r
1940   the other way around. This is needed to support compiler options like\r
1941   <code>-fprofile-arcs</code> and <code>--serialize-diagnostics</code>.\r
1942 </p>\r
1943 </li>\r
1944 <li>\r
1945 <p>\r
1946 ccache now checks that included files' ctimes aren&#8217;t too new. This check can\r
1947   be turned off by adding <code>include_file_ctime</code> to the &#8220;ccache sloppiness&#8221;\r
1948   setting.\r
1949 </p>\r
1950 </li>\r
1951 <li>\r
1952 <p>\r
1953 Added possibility to get cache hits based on filename, size, mtime and ctime\r
1954   only. On other words, source code files are not even read, only stat-ed. This\r
1955   operation mode is opt-in by adding <code>file_stat_matches</code> to the &#8220;ccache\r
1956   sloppiness&#8221; setting.\r
1957 </p>\r
1958 </li>\r
1959 <li>\r
1960 <p>\r
1961 The filename part of options like <code>-Wp,-MDfilename</code> is no longer included in\r
1962   the hash since the filename doesn&#8217;t have any bearing on the result.\r
1963 </p>\r
1964 </li>\r
1965 <li>\r
1966 <p>\r
1967 Added a &#8220;read-only direct&#8221; configuration setting, which is like the\r
1968   ordinary read-only setting except that ccache will only try to retrieve\r
1969   results from the cache using the direct mode, not the preprocessor mode.\r
1970 </p>\r
1971 </li>\r
1972 <li>\r
1973 <p>\r
1974 The display and interpretation of cache size has been changed to use SI\r
1975   units.\r
1976 </p>\r
1977 </li>\r
1978 <li>\r
1979 <p>\r
1980 Default cache size is now 5 GB (was previously 1 GiB).\r
1981 </p>\r
1982 </li>\r
1983 <li>\r
1984 <p>\r
1985 Added configuration option to set the compression level of compressed object\r
1986   files in the cache.\r
1987 </p>\r
1988 </li>\r
1989 <li>\r
1990 <p>\r
1991 Added support for <code>@file</code> and <code>-@file</code> arguments (reading options from a\r
1992   file).\r
1993 </p>\r
1994 </li>\r
1995 <li>\r
1996 <p>\r
1997 <code>-Wl,</code> options are no longer included in the hash since they don&#8217;t affect\r
1998   compilation.\r
1999 </p>\r
2000 </li>\r
2001 <li>\r
2002 <p>\r
2003 Bail out on too hard compiler option <code>-Wp,-P</code>.\r
2004 </p>\r
2005 </li>\r
2006 <li>\r
2007 <p>\r
2008 Optimized MD4 calculation code on little-endian systems.\r
2009 </p>\r
2010 </li>\r
2011 <li>\r
2012 <p>\r
2013 Various improvements and fixes on win32.\r
2014 </p>\r
2015 </li>\r
2016 <li>\r
2017 <p>\r
2018 Improved logging to the ccache log file.\r
2019 </p>\r
2020 </li>\r
2021 <li>\r
2022 <p>\r
2023 Added <code>--dump-manifest</code> command-line option for debugging purposes.\r
2024 </p>\r
2025 </li>\r
2026 <li>\r
2027 <p>\r
2028 Added <code>--with-bundled-zlib</code> configure option.\r
2029 </p>\r
2030 </li>\r
2031 <li>\r
2032 <p>\r
2033 Upgraded bundled zlib to version 1.2.8.\r
2034 </p>\r
2035 </li>\r
2036 <li>\r
2037 <p>\r
2038 Improved <code>dev.mk</code> to be more platform independent.\r
2039 </p>\r
2040 </li>\r
2041 <li>\r
2042 <p>\r
2043 Made the test suite work with Clang and gcc-llvm on OS X.\r
2044 </p>\r
2045 </li>\r
2046 <li>\r
2047 <p>\r
2048 Various other improvements of the test suite.\r
2049 </p>\r
2050 </li>\r
2051 </ul></div>\r
2052 </div>\r
2053 <div class="sect2">\r
2054 <h3 id="_bug_fixes_21">Bug fixes</h3>\r
2055 <div class="ulist"><ul>\r
2056 <li>\r
2057 <p>\r
2058 Any previous <code>.stderr</code> is now removed from the cache when recaching.\r
2059 </p>\r
2060 </li>\r
2061 <li>\r
2062 <p>\r
2063 Fixed an issue when handling the <code>-arch</code> compiler option with an argument.\r
2064 </p>\r
2065 </li>\r
2066 <li>\r
2067 <p>\r
2068 Fixed race condition when creating the initial cache directory.\r
2069 </p>\r
2070 </li>\r
2071 <li>\r
2072 <p>\r
2073 Fixed test suite failures when <code>CC</code> is a ccache-wrapped compiler.\r
2074 </p>\r
2075 </li>\r
2076 </ul></div>\r
2077 </div>\r
2078 </div>\r
2079 </div>\r
2080 <div class="sect1">\r
2081 <h2 id="_ccache_3_1_12">ccache 3.1.12</h2>\r
2082 <div class="sectionbody">\r
2083 <div class="paragraph"><p>Release date: 2016-07-12</p></div>\r
2084 <div class="sect2">\r
2085 <h3 id="_bug_fixes_22">Bug fixes</h3>\r
2086 <div class="ulist"><ul>\r
2087 <li>\r
2088 <p>\r
2089 Fixed a bug where (due to ccache rewriting paths) the compiler could choose\r
2090   incorrect include files if <code>CCACHE_BASEDIR</code> is used and the source file path\r
2091   is absolute and is a symlink.\r
2092 </p>\r
2093 </li>\r
2094 </ul></div>\r
2095 </div>\r
2096 </div>\r
2097 </div>\r
2098 <div class="sect1">\r
2099 <h2 id="_ccache_3_1_11">ccache 3.1.11</h2>\r
2100 <div class="sectionbody">\r
2101 <div class="paragraph"><p>Release date: 2015-03-07</p></div>\r
2102 <div class="sect2">\r
2103 <h3 id="_bug_fixes_23">Bug fixes</h3>\r
2104 <div class="ulist"><ul>\r
2105 <li>\r
2106 <p>\r
2107 Fixed bug which could result in false cache hits when source code contains\r
2108   <code>'"'</code> followed by <code>" /*"</code> or <code>" //"</code> (with variations).\r
2109 </p>\r
2110 </li>\r
2111 <li>\r
2112 <p>\r
2113 Made hash of cached result created with and without <code>CCACHE_CPP2</code> different.\r
2114   This makes it possible to rebuild with <code>CCACHE_CPP2</code> set without having to\r
2115   clear the cache to get new results.\r
2116 </p>\r
2117 </li>\r
2118 <li>\r
2119 <p>\r
2120 Don&#8217;t try to reset a non-existing stats file. This avoids &#8220;No such file or\r
2121   directory&#8221; messages in the ccache log when the cache directory doesn&#8217;t\r
2122   exist.\r
2123 </p>\r
2124 </li>\r
2125 </ul></div>\r
2126 </div>\r
2127 </div>\r
2128 </div>\r
2129 <div class="sect1">\r
2130 <h2 id="_ccache_3_1_10">ccache 3.1.10</h2>\r
2131 <div class="sectionbody">\r
2132 <div class="paragraph"><p>Release date: 2014-10-19</p></div>\r
2133 <div class="sect2">\r
2134 <h3 id="_new_features_and_enhancements_10">New features and enhancements</h3>\r
2135 <div class="ulist"><ul>\r
2136 <li>\r
2137 <p>\r
2138 Added support for the <code>-Xclang</code> compiler option.\r
2139 </p>\r
2140 </li>\r
2141 <li>\r
2142 <p>\r
2143 Improved handling of exit code of internally executed processes.\r
2144 </p>\r
2145 </li>\r
2146 <li>\r
2147 <p>\r
2148 Zero length object files in the cache are now rejected as invalid.\r
2149 </p>\r
2150 </li>\r
2151 <li>\r
2152 <p>\r
2153 Bail out on option <code>-gsplit-dwarf</code> (since it produces multiple output files).\r
2154 </p>\r
2155 </li>\r
2156 <li>\r
2157 <p>\r
2158 Compiler option <code>-fdebug-prefix-map</code> is now ignored (not part of the hash).\r
2159   (The <code>-fdebug-prefix-map</code> option may be used in combination with\r
2160   <code>CCACHE_BASEDIR</code> to reuse results across different directories.)\r
2161 </p>\r
2162 </li>\r
2163 <li>\r
2164 <p>\r
2165 Added note in documentation that <code>--ccache-skip</code> currently does not mean\r
2166   &#8220;don&#8217;t hash the following option&#8221;.\r
2167 </p>\r
2168 </li>\r
2169 <li>\r
2170 <p>\r
2171 To enable support for precompiled headers (PCH), <code>CCACHE_SLOPPINESS</code> now also\r
2172   needs to include the new <code>pch_defines</code> sloppiness. This is because ccache\r
2173   can&#8217;t detect changes in the source code when only defined macros have been\r
2174   changed.\r
2175 </p>\r
2176 </li>\r
2177 <li>\r
2178 <p>\r
2179 Stale files in the internal temporary directory (<code>&lt;ccache_dir&gt;/tmp</code>) are now\r
2180   cleaned up if they are older than one hour.\r
2181 </p>\r
2182 </li>\r
2183 </ul></div>\r
2184 </div>\r
2185 <div class="sect2">\r
2186 <h3 id="_bug_fixes_24">Bug fixes</h3>\r
2187 <div class="ulist"><ul>\r
2188 <li>\r
2189 <p>\r
2190 Fixed path canonicalization in <code>make_relative_path()</code> when path doesn&#8217;t\r
2191   exist.\r
2192 </p>\r
2193 </li>\r
2194 <li>\r
2195 <p>\r
2196 Fixed bug in <code>common_dir_prefix_length()</code>. This corrects the <code>CCACHE_BASEDIR</code>\r
2197   behavior.\r
2198 </p>\r
2199 </li>\r
2200 <li>\r
2201 <p>\r
2202 ccache no longer tries to create the cache directory when <code>CCACHE_DISABLE</code> is\r
2203   set.\r
2204 </p>\r
2205 </li>\r
2206 <li>\r
2207 <p>\r
2208 Fixed bug when reading manifests with a very large number of file info\r
2209   entries.\r
2210 </p>\r
2211 </li>\r
2212 <li>\r
2213 <p>\r
2214 Fixed problem with logging of current working directory.\r
2215 </p>\r
2216 </li>\r
2217 </ul></div>\r
2218 </div>\r
2219 </div>\r
2220 </div>\r
2221 <div class="sect1">\r
2222 <h2 id="_ccache_3_1_9">ccache 3.1.9</h2>\r
2223 <div class="sectionbody">\r
2224 <div class="paragraph"><p>Release date: 2013-01-06</p></div>\r
2225 <div class="sect2">\r
2226 <h3 id="_bug_fixes_25">Bug fixes</h3>\r
2227 <div class="ulist"><ul>\r
2228 <li>\r
2229 <p>\r
2230 The EAGAIN signal is now handled correctly when emitting cached stderr\r
2231   output. This fixes a problem triggered by large error outputs from the\r
2232   compiler.\r
2233 </p>\r
2234 </li>\r
2235 <li>\r
2236 <p>\r
2237 Subdirectories in the cache are no longer created in read-only mode.\r
2238 </p>\r
2239 </li>\r
2240 <li>\r
2241 <p>\r
2242 Fixed so that ccache&#8217;s log file descriptor is not made available to the\r
2243   compiler.\r
2244 </p>\r
2245 </li>\r
2246 <li>\r
2247 <p>\r
2248 Improved error reporting when failing to create temporary stdout/stderr files\r
2249   when executing the compiler.\r
2250 </p>\r
2251 </li>\r
2252 <li>\r
2253 <p>\r
2254 Disappearing temporary stdout/stderr files are now handled gracefully.\r
2255 </p>\r
2256 </li>\r
2257 </ul></div>\r
2258 </div>\r
2259 <div class="sect2">\r
2260 <h3 id="_other">Other</h3>\r
2261 <div class="ulist"><ul>\r
2262 <li>\r
2263 <p>\r
2264 Fixed test suite to work on ecryptfs.\r
2265 </p>\r
2266 </li>\r
2267 </ul></div>\r
2268 </div>\r
2269 </div>\r
2270 </div>\r
2271 <div class="sect1">\r
2272 <h2 id="_ccache_3_1_8">ccache 3.1.8</h2>\r
2273 <div class="sectionbody">\r
2274 <div class="paragraph"><p>Release date: 2012-08-11</p></div>\r
2275 <div class="sect2">\r
2276 <h3 id="_new_features_and_enhancements_11">New features and enhancements</h3>\r
2277 <div class="ulist"><ul>\r
2278 <li>\r
2279 <p>\r
2280 Made paths to dependency files relative in order to increase cache hits.\r
2281 </p>\r
2282 </li>\r
2283 <li>\r
2284 <p>\r
2285 Added work-around to make ccache work with buggy GCC 4.1 when creating a\r
2286   pre-compiled header.\r
2287 </p>\r
2288 </li>\r
2289 <li>\r
2290 <p>\r
2291 Clang plugins are now hashed to catch plugin upgrades.\r
2292 </p>\r
2293 </li>\r
2294 </ul></div>\r
2295 </div>\r
2296 <div class="sect2">\r
2297 <h3 id="_bug_fixes_26">Bug fixes</h3>\r
2298 <div class="ulist"><ul>\r
2299 <li>\r
2300 <p>\r
2301 Fixed crash when the current working directory has been removed.\r
2302 </p>\r
2303 </li>\r
2304 <li>\r
2305 <p>\r
2306 Fixed crash when stderr is closed.\r
2307 </p>\r
2308 </li>\r
2309 <li>\r
2310 <p>\r
2311 Corrected a corner case when parsing backslash escapes in string\r
2312   literals.\r
2313 </p>\r
2314 </li>\r
2315 <li>\r
2316 <p>\r
2317 Paths are now correctly canonicalized when computing paths relative to the\r
2318   base directory.\r
2319 </p>\r
2320 </li>\r
2321 </ul></div>\r
2322 </div>\r
2323 <div class="sect2">\r
2324 <h3 id="_other_2">Other</h3>\r
2325 <div class="ulist"><ul>\r
2326 <li>\r
2327 <p>\r
2328 Made git version macro work when compiling outside of the source directory.\r
2329 </p>\r
2330 </li>\r
2331 <li>\r
2332 <p>\r
2333 Fixed <code>static_assert</code> macro definition clash with GCC 4.7.\r
2334 </p>\r
2335 </li>\r
2336 </ul></div>\r
2337 </div>\r
2338 </div>\r
2339 </div>\r
2340 <div class="sect1">\r
2341 <h2 id="_ccache_3_1_7">ccache 3.1.7</h2>\r
2342 <div class="sectionbody">\r
2343 <div class="paragraph"><p>Release date: 2012-01-08</p></div>\r
2344 <div class="sect2">\r
2345 <h3 id="_bug_fixes_27">Bug fixes</h3>\r
2346 <div class="ulist"><ul>\r
2347 <li>\r
2348 <p>\r
2349 Non-writable <code>CCACHE_DIR</code> is now handled gracefully when <code>CCACHE_READONLY</code> is\r
2350   set.\r
2351 </p>\r
2352 </li>\r
2353 <li>\r
2354 <p>\r
2355 Made failure to create files (typically due to bad directory permissions) in\r
2356   the cache directory fatal. Previously, such failures were silently and\r
2357   erroneously flagged as "compiler produced stdout".\r
2358 </p>\r
2359 </li>\r
2360 <li>\r
2361 <p>\r
2362 Both the <code>-specs=file</code> and <code>--specs=file</code> forms are now recognized.\r
2363 </p>\r
2364 </li>\r
2365 <li>\r
2366 <p>\r
2367 Added recognition and hashing of GCC plugins specified with <code>-fplugin=file</code>.\r
2368 </p>\r
2369 </li>\r
2370 <li>\r
2371 <p>\r
2372 <code>CCACHE_COMPILERCHECK</code> now also determines how to hash explicit specs files\r
2373   (<code>-specs=file</code>).\r
2374 </p>\r
2375 </li>\r
2376 <li>\r
2377 <p>\r
2378 Added <code>CPATH</code>, <code>C_INCLUDE_PATH</code> and similar environment variables to the hash\r
2379   to avoid false cache hits when such variables have changed.\r
2380 </p>\r
2381 </li>\r
2382 <li>\r
2383 <p>\r
2384 Corrected log message when unify mode is enabled.\r
2385 </p>\r
2386 </li>\r
2387 <li>\r
2388 <p>\r
2389 Reverted the GCC bug compatibility introduced in ccache 3.1.5 for <code>-MT</code>/<code>-MQ</code>\r
2390   options with concatenated arguments. (The bug is fixed in recent GCC\r
2391   versions.)\r
2392 </p>\r
2393 </li>\r
2394 </ul></div>\r
2395 </div>\r
2396 <div class="sect2">\r
2397 <h3 id="_other_3">Other</h3>\r
2398 <div class="ulist"><ul>\r
2399 <li>\r
2400 <p>\r
2401 Corrected license header for <code>mdfour.c</code>.\r
2402 </p>\r
2403 </li>\r
2404 <li>\r
2405 <p>\r
2406 Improved documentation on how to fix bad object files in the cache.\r
2407 </p>\r
2408 </li>\r
2409 </ul></div>\r
2410 </div>\r
2411 </div>\r
2412 </div>\r
2413 <div class="sect1">\r
2414 <h2 id="_ccache_3_1_6">ccache 3.1.6</h2>\r
2415 <div class="sectionbody">\r
2416 <div class="paragraph"><p>Release date: 2011-08-21</p></div>\r
2417 <div class="sect2">\r
2418 <h3 id="_new_features_and_enhancements_12">New features and enhancements</h3>\r
2419 <div class="ulist"><ul>\r
2420 <li>\r
2421 <p>\r
2422 Rewrite argument to <code>--sysroot</code> if <code>CCACHE_BASEDIR</code> is used.\r
2423 </p>\r
2424 </li>\r
2425 </ul></div>\r
2426 </div>\r
2427 <div class="sect2">\r
2428 <h3 id="_bug_fixes_28">Bug fixes</h3>\r
2429 <div class="ulist"><ul>\r
2430 <li>\r
2431 <p>\r
2432 Don&#8217;t crash if <code>getcwd()</code> fails.\r
2433 </p>\r
2434 </li>\r
2435 <li>\r
2436 <p>\r
2437 Fixed alignment of &#8220;called for preprocessing&#8221; counter.\r
2438 </p>\r
2439 </li>\r
2440 </ul></div>\r
2441 </div>\r
2442 </div>\r
2443 </div>\r
2444 <div class="sect1">\r
2445 <h2 id="_ccache_3_1_5">ccache 3.1.5</h2>\r
2446 <div class="sectionbody">\r
2447 <div class="paragraph"><p>Release date: 2011-05-29</p></div>\r
2448 <div class="sect2">\r
2449 <h3 id="_new_features_and_enhancements_13">New features and enhancements</h3>\r
2450 <div class="ulist"><ul>\r
2451 <li>\r
2452 <p>\r
2453 Added a new statistics counter named &#8220;called for preprocessing&#8221;.\r
2454 </p>\r
2455 </li>\r
2456 <li>\r
2457 <p>\r
2458 The original command line is now logged to the file specified with\r
2459   <code>CCACHE_LOGFILE</code>.\r
2460 </p>\r
2461 </li>\r
2462 <li>\r
2463 <p>\r
2464 Improved error logging when system calls fail.\r
2465 </p>\r
2466 </li>\r
2467 <li>\r
2468 <p>\r
2469 Added support for rewriting absolute paths in <code>-F</code>/<code>-iframework</code> GCC\r
2470   options.\r
2471 </p>\r
2472 </li>\r
2473 <li>\r
2474 <p>\r
2475 Improved order of statistics counters in <code>ccache -s</code> output.\r
2476 </p>\r
2477 </li>\r
2478 </ul></div>\r
2479 </div>\r
2480 <div class="sect2">\r
2481 <h3 id="_bug_fixes_29">Bug fixes</h3>\r
2482 <div class="ulist"><ul>\r
2483 <li>\r
2484 <p>\r
2485 The <code>-MF</code>/<code>-MT</code>/<code>-MQ</code> options with concatenated argument are now handled\r
2486   correctly when they are last on the command line.\r
2487 </p>\r
2488 </li>\r
2489 <li>\r
2490 <p>\r
2491 ccache is now bug compatible with GCC for the <code>-MT</code>/<code>-MQ</code> options with\r
2492   concatenated arguments.\r
2493 </p>\r
2494 </li>\r
2495 <li>\r
2496 <p>\r
2497 Fixed a minor memory leak.\r
2498 </p>\r
2499 </li>\r
2500 <li>\r
2501 <p>\r
2502 Systems that lack (and don&#8217;t need to be linked with) libm are now supported.\r
2503 </p>\r
2504 </li>\r
2505 </ul></div>\r
2506 </div>\r
2507 </div>\r
2508 </div>\r
2509 <div class="sect1">\r
2510 <h2 id="_ccache_3_1_4">ccache 3.1.4</h2>\r
2511 <div class="sectionbody">\r
2512 <div class="paragraph"><p>Release date: 2011-01-09</p></div>\r
2513 <div class="sect2">\r
2514 <h3 id="_bug_fixes_30">Bug fixes</h3>\r
2515 <div class="ulist"><ul>\r
2516 <li>\r
2517 <p>\r
2518 Made a work-around for a bug in <code>gzputc()</code> in zlib 1.2.5.\r
2519 </p>\r
2520 </li>\r
2521 <li>\r
2522 <p>\r
2523 Corrupt manifest files are now removed so that they won&#8217;t block direct mode\r
2524   hits.\r
2525 </p>\r
2526 </li>\r
2527 <li>\r
2528 <p>\r
2529 ccache now copes with file systems that don&#8217;t know about symbolic links.\r
2530 </p>\r
2531 </li>\r
2532 <li>\r
2533 <p>\r
2534 The file handle in now correctly closed on write error when trying to create\r
2535   a cache dir tag.\r
2536 </p>\r
2537 </li>\r
2538 </ul></div>\r
2539 </div>\r
2540 </div>\r
2541 </div>\r
2542 <div class="sect1">\r
2543 <h2 id="_ccache_3_1_3">ccache 3.1.3</h2>\r
2544 <div class="sectionbody">\r
2545 <div class="paragraph"><p>Release date: 2010-11-28</p></div>\r
2546 <div class="sect2">\r
2547 <h3 id="_bug_fixes_31">Bug fixes</h3>\r
2548 <div class="ulist"><ul>\r
2549 <li>\r
2550 <p>\r
2551 The -MFarg, -MTarg and -MQarg compiler options (i.e, without space between\r
2552   option and argument) are now handled correctly.\r
2553 </p>\r
2554 </li>\r
2555 </ul></div>\r
2556 </div>\r
2557 <div class="sect2">\r
2558 <h3 id="_other_4">Other</h3>\r
2559 <div class="ulist"><ul>\r
2560 <li>\r
2561 <p>\r
2562 Portability fixes for HP-UX 11.00 and other esoteric systems.\r
2563 </p>\r
2564 </li>\r
2565 </ul></div>\r
2566 </div>\r
2567 </div>\r
2568 </div>\r
2569 <div class="sect1">\r
2570 <h2 id="_ccache_3_1_2">ccache 3.1.2</h2>\r
2571 <div class="sectionbody">\r
2572 <div class="paragraph"><p>Release date: 2010-11-21</p></div>\r
2573 <div class="sect2">\r
2574 <h3 id="_bug_fixes_32">Bug fixes</h3>\r
2575 <div class="ulist"><ul>\r
2576 <li>\r
2577 <p>\r
2578 Bail out on too hard compiler options <code>-fdump-*</code>.\r
2579 </p>\r
2580 </li>\r
2581 <li>\r
2582 <p>\r
2583 NULL return values from malloc/calloc of zero bytes are now handled\r
2584   correctly.\r
2585 </p>\r
2586 </li>\r
2587 <li>\r
2588 <p>\r
2589 Fixed issue when parsing precompiler output on AIX.\r
2590 </p>\r
2591 </li>\r
2592 </ul></div>\r
2593 </div>\r
2594 <div class="sect2">\r
2595 <h3 id="_other_5">Other</h3>\r
2596 <div class="ulist"><ul>\r
2597 <li>\r
2598 <p>\r
2599 Improved documentation on which information is included in the hash sum.\r
2600 </p>\r
2601 </li>\r
2602 <li>\r
2603 <p>\r
2604 Made the &#8220;too new header file&#8221; test case work on file systems with\r
2605   unsynchronized clocks.\r
2606 </p>\r
2607 </li>\r
2608 <li>\r
2609 <p>\r
2610 The test suite now also works on systems that lack a /dev/zero.\r
2611 </p>\r
2612 </li>\r
2613 </ul></div>\r
2614 </div>\r
2615 </div>\r
2616 </div>\r
2617 <div class="sect1">\r
2618 <h2 id="_ccache_3_1_1">ccache 3.1.1</h2>\r
2619 <div class="sectionbody">\r
2620 <div class="paragraph"><p>Release date: 2010-11-07</p></div>\r
2621 <div class="sect2">\r
2622 <h3 id="_bug_fixes_33">Bug fixes</h3>\r
2623 <div class="ulist"><ul>\r
2624 <li>\r
2625 <p>\r
2626 ccache now falls back to preprocessor mode when a non-regular include file\r
2627   (device, socket, etc) has been detected so that potential hanging due to\r
2628   blocking reads is avoided.\r
2629 </p>\r
2630 </li>\r
2631 <li>\r
2632 <p>\r
2633 CRC errors are now detected when decompressing compressed files in the cache.\r
2634 </p>\r
2635 </li>\r
2636 <li>\r
2637 <p>\r
2638 Fixed potential object file corruption race on NFS.\r
2639 </p>\r
2640 </li>\r
2641 <li>\r
2642 <p>\r
2643 Minor documentation corrections.\r
2644 </p>\r
2645 </li>\r
2646 <li>\r
2647 <p>\r
2648 Fixed configure detection of ar.\r
2649 </p>\r
2650 </li>\r
2651 <li>\r
2652 <p>\r
2653 ccache development version (set by dev.mk) now works with gits whose\r
2654   <code>describe</code> command doesn&#8217;t understand <code>--dirty</code>.\r
2655 </p>\r
2656 </li>\r
2657 </ul></div>\r
2658 </div>\r
2659 <div class="sect2">\r
2660 <h3 id="_other_6">Other</h3>\r
2661 <div class="ulist"><ul>\r
2662 <li>\r
2663 <p>\r
2664 Minor debug log message improvements.\r
2665 </p>\r
2666 </li>\r
2667 </ul></div>\r
2668 </div>\r
2669 </div>\r
2670 </div>\r
2671 <div class="sect1">\r
2672 <h2 id="_ccache_3_1">ccache 3.1</h2>\r
2673 <div class="sectionbody">\r
2674 <div class="paragraph"><p>Release date: 2010-09-16</p></div>\r
2675 <div class="sect2">\r
2676 <h3 id="_new_features_and_enhancements_14">New features and enhancements</h3>\r
2677 <div class="ulist"><ul>\r
2678 <li>\r
2679 <p>\r
2680 Added support for hashing the output of a custom command (e.g. <code>%compiler%\r
2681   --version</code>) to identify the compiler instead of stat-ing or hashing the\r
2682   compiler binary. This can improve robustness when the compiler (as seen by\r
2683   ccache) actually isn&#8217;t the real compiler but another compiler wrapper.\r
2684 </p>\r
2685 </li>\r
2686 <li>\r
2687 <p>\r
2688 Added support for caching compilations that use precompiled headers. (See the\r
2689   manual for important instructions regarding this.)\r
2690 </p>\r
2691 </li>\r
2692 <li>\r
2693 <p>\r
2694 Locking of the files containing statistics counters is now done using\r
2695   symlinks instead of POSIX locks. This should make ccache behave a lot better\r
2696   on file systems where POSIX locks are slow or broken (e.g. NFS on some\r
2697   systems).\r
2698 </p>\r
2699 </li>\r
2700 <li>\r
2701 <p>\r
2702 Manifest files are now updated without the need of taking locks.\r
2703 </p>\r
2704 </li>\r
2705 <li>\r
2706 <p>\r
2707 Updates of statistics counters are now always done in one of the sub-level\r
2708   statistics files. This reduces lock contention, which especially improves\r
2709   performance on slow NFS mounts.\r
2710 </p>\r
2711 </li>\r
2712 <li>\r
2713 <p>\r
2714 Reading and writing of statistics counters has been made forward-compatible\r
2715   (unknown counters are retained).\r
2716 </p>\r
2717 </li>\r
2718 <li>\r
2719 <p>\r
2720 Files are now read without using <code>mmap()</code>. This has two benefits: it&#8217;s more\r
2721   robust against file changes during reading and it improves performance on\r
2722   poor systems where <code>mmap()</code> doesn&#8217;t use the disk cache.\r
2723 </p>\r
2724 </li>\r
2725 <li>\r
2726 <p>\r
2727 Added <code>.cp</code> and <code>.CP</code> as known C++ suffixes.\r
2728 </p>\r
2729 </li>\r
2730 <li>\r
2731 <p>\r
2732 Improved logging.\r
2733 </p>\r
2734 </li>\r
2735 <li>\r
2736 <p>\r
2737 Added <code>-install_name</code> as an option known to take an argument. (This improves\r
2738   statistics when using the Darwin linker.)\r
2739 </p>\r
2740 </li>\r
2741 </ul></div>\r
2742 </div>\r
2743 <div class="sect2">\r
2744 <h3 id="_bug_fixes_34">Bug fixes</h3>\r
2745 <div class="ulist"><ul>\r
2746 <li>\r
2747 <p>\r
2748 Non-fatal error messages are now never printed to stderr but logged instead.\r
2749 </p>\r
2750 </li>\r
2751 <li>\r
2752 <p>\r
2753 Fixed a bug affecting failing commands when <code>--ccache-skip</code> is used.\r
2754 </p>\r
2755 </li>\r
2756 <li>\r
2757 <p>\r
2758 Made <code>--ccache-skip</code> work for all options.\r
2759 </p>\r
2760 </li>\r
2761 <li>\r
2762 <p>\r
2763 EINTR is now handled correctly.\r
2764 </p>\r
2765 </li>\r
2766 </ul></div>\r
2767 </div>\r
2768 <div class="sect2">\r
2769 <h3 id="_other_7">Other</h3>\r
2770 <div class="ulist"><ul>\r
2771 <li>\r
2772 <p>\r
2773 Work on porting ccache to win32 (native), mostly done by Ramiro Polla. The\r
2774   port is not yet finished, but will hopefully be complete in some subsequent\r
2775   release.\r
2776 </p>\r
2777 </li>\r
2778 <li>\r
2779 <p>\r
2780 Added a <code>--nostats</code> flag to the performance benchmark program.\r
2781 </p>\r
2782 </li>\r
2783 <li>\r
2784 <p>\r
2785 Made the performance benchmark program more accurate when measuring cache\r
2786   hits.\r
2787 </p>\r
2788 </li>\r
2789 <li>\r
2790 <p>\r
2791 Added a new test framework for unit tests written in C.\r
2792 </p>\r
2793 </li>\r
2794 <li>\r
2795 <p>\r
2796 Got rid of <code>configure-dev</code>; dev mode is now given by <code>dev.mk.in</code> presence.\r
2797 </p>\r
2798 </li>\r
2799 <li>\r
2800 <p>\r
2801 Improved documentation on how to combine ccache with other compiler wrappers\r
2802   (like <code>distcc</code>).\r
2803 </p>\r
2804 </li>\r
2805 <li>\r
2806 <p>\r
2807 New <code>LICENSE.txt</code> file with licensing and copyright details about bundled\r
2808   source code.\r
2809 </p>\r
2810 </li>\r
2811 <li>\r
2812 <p>\r
2813 New <code>AUTHORS.txt</code> file with a list of ccache contributors.\r
2814 </p>\r
2815 </li>\r
2816 <li>\r
2817 <p>\r
2818 New <code>HACKING.txt</code> file with some notes about ccache code conventions.\r
2819 </p>\r
2820 </li>\r
2821 </ul></div>\r
2822 </div>\r
2823 </div>\r
2824 </div>\r
2825 <div class="sect1">\r
2826 <h2 id="_ccache_3_0_1">ccache 3.0.1</h2>\r
2827 <div class="sectionbody">\r
2828 <div class="paragraph"><p>Release date: 2010-07-15</p></div>\r
2829 <div class="sect2">\r
2830 <h3 id="_bug_fixes_35">Bug fixes</h3>\r
2831 <div class="ulist"><ul>\r
2832 <li>\r
2833 <p>\r
2834 The statistics counter &#8220;called for link&#8221; is now correctly updated when\r
2835   linking with a single object file.\r
2836 </p>\r
2837 </li>\r
2838 <li>\r
2839 <p>\r
2840 Fixed a problem with out-of-source builds.\r
2841 </p>\r
2842 </li>\r
2843 </ul></div>\r
2844 </div>\r
2845 </div>\r
2846 </div>\r
2847 <div class="sect1">\r
2848 <h2 id="_ccache_3_0">ccache 3.0</h2>\r
2849 <div class="sectionbody">\r
2850 <div class="paragraph"><p>Release date: 2010-06-20</p></div>\r
2851 <div class="sect2">\r
2852 <h3 id="_general">General</h3>\r
2853 <div class="ulist"><ul>\r
2854 <li>\r
2855 <p>\r
2856 ccache is now licensed under the GNU General Public License (GPL) version 3\r
2857   or later.\r
2858 </p>\r
2859 </li>\r
2860 </ul></div>\r
2861 </div>\r
2862 <div class="sect2">\r
2863 <h3 id="_upgrade_notes">Upgrade notes</h3>\r
2864 <div class="ulist"><ul>\r
2865 <li>\r
2866 <p>\r
2867 The way the hashes are calculated has changed, so you won&#8217;t get cache hits\r
2868   for compilation results stored by older ccache versions. Because of this, you\r
2869   might as well clear the old cache directory with <code>ccache --clear</code> if you\r
2870   want, unless you plan to keep using an older ccache version.\r
2871 </p>\r
2872 </li>\r
2873 </ul></div>\r
2874 </div>\r
2875 <div class="sect2">\r
2876 <h3 id="_new_features_and_enhancements_15">New features and enhancements</h3>\r
2877 <div class="ulist"><ul>\r
2878 <li>\r
2879 <p>\r
2880 ccache now has a &#8220;direct mode&#8221; where it computes a hash of the source code\r
2881   (including all included files) and compiler options without running the\r
2882   preprocessor. By not running the preprocessor, CPU usage is reduced; the\r
2883   speed is somewhere between 1 and 5 times that of ccache running in\r
2884   traditional mode, depending on the circumstances. The speedup will be higher\r
2885   when I/O is fast (e.g., when files are in the disk cache). The direct mode\r
2886   can be disabled by setting <code>CCACHE_NODIRECT</code>.\r
2887 </p>\r
2888 </li>\r
2889 <li>\r
2890 <p>\r
2891 Support has been added for rewriting absolute paths to relative paths when\r
2892   hashing, in order to increase cache hit rate when building the same source\r
2893   code in different directories even when compiling with <code>-g</code> and when using\r
2894   absolute include directory paths. This is done by setting the\r
2895   <code>CCACHE_BASEDIR</code> environment variable to an absolute path that specifies\r
2896   which paths to rewrite.\r
2897 </p>\r
2898 </li>\r
2899 <li>\r
2900 <p>\r
2901 Object files are now optionally stored compressed in the cache. The runtime\r
2902   cost is negligible, and more files will fit in the ccache directory and in\r
2903   the disk cache. Set <code>CCACHE_COMPRESS</code> to enable object file compression. Note\r
2904   that you can&#8217;t use compression in combination with the hard link feature.\r
2905 </p>\r
2906 </li>\r
2907 <li>\r
2908 <p>\r
2909 A <code>CCACHE_COMPILERCHECK</code> option has been added. This option tells ccache what\r
2910   compiler-identifying information to hash to ensure that results retrieved\r
2911   from the cache are accurate. Possible values are: none (don&#8217;t hash anything),\r
2912   mtime (hash the compiler&#8217;s mtime and size) and content (hash the content of\r
2913   the compiler binary). The default is mtime.\r
2914 </p>\r
2915 </li>\r
2916 <li>\r
2917 <p>\r
2918 It is now possible to specify extra files whose contents should be included\r
2919   in the hash sum by setting the <code>CCACHE_EXTRAFILES</code> option.\r
2920 </p>\r
2921 </li>\r
2922 <li>\r
2923 <p>\r
2924 Added support for Objective-C and Objective-C++. The statistics counter\r
2925   &#8220;not a C/C++ file&#8221; has been renamed to &#8220;unsupported source language&#8221;.\r
2926 </p>\r
2927 </li>\r
2928 <li>\r
2929 <p>\r
2930 Added support for the <code>-x</code> compiler option.\r
2931 </p>\r
2932 </li>\r
2933 <li>\r
2934 <p>\r
2935 Added support for long command-line options.\r
2936 </p>\r
2937 </li>\r
2938 <li>\r
2939 <p>\r
2940 A <code>CACHEDIR.TAG</code> file is now created in the cache directory. See\r
2941   <a href="http://www.brynosaurus.com/cachedir/">http://www.brynosaurus.com/cachedir/</a>.\r
2942 </p>\r
2943 </li>\r
2944 <li>\r
2945 <p>\r
2946 Messages printed to the debug log (specified by <code>CCACHE_LOGFILE</code>) have been\r
2947   improved.\r
2948 </p>\r
2949 </li>\r
2950 <li>\r
2951 <p>\r
2952 You can relax some checks that ccache does in direct mode by setting\r
2953   <code>CCACHE_SLOPPINESS</code>. See the manual for more information.\r
2954 </p>\r
2955 </li>\r
2956 <li>\r
2957 <p>\r
2958 <code>CCACHE_TEMPDIR</code> no longer needs to be on the same filesystem as\r
2959   <code>CCACHE_DIR</code>.\r
2960 </p>\r
2961 </li>\r
2962 <li>\r
2963 <p>\r
2964 The default value of <code>CCACHE_TEMPDIR</code> has been changed to <code>$CCACHE_DIR/tmp</code>\r
2965   to avoid cluttering the top directory.\r
2966 </p>\r
2967 </li>\r
2968 <li>\r
2969 <p>\r
2970 Temporary files that later will be moved into the cache are now created in\r
2971   the cache directory they will end up in. This makes ccache more friendly to\r
2972   Linux&#8217;s directory layout.\r
2973 </p>\r
2974 </li>\r
2975 <li>\r
2976 <p>\r
2977 Improved the test suite and added tests for most of the new functionality.\r
2978   It&#8217;s now also possible to specify a subset of tests to run.\r
2979 </p>\r
2980 </li>\r
2981 <li>\r
2982 <p>\r
2983 Standard error output from the compiler is now only stored in the cache if\r
2984   it&#8217;s non-empty.\r
2985 </p>\r
2986 </li>\r
2987 <li>\r
2988 <p>\r
2989 If the compiler produces no object file or an empty object file, but gives a\r
2990   zero exit status (could be due to a file system problem, a buggy program\r
2991   specified by <code>CCACHE_PREFIX</code>, etc.), ccache copes with it properly.\r
2992 </p>\r
2993 </li>\r
2994 <li>\r
2995 <p>\r
2996 Added <code>installcheck</code> and <code>distcheck</code> make targets.\r
2997 </p>\r
2998 </li>\r
2999 <li>\r
3000 <p>\r
3001 Clarified cache size limit options' and cleanup semantics.\r
3002 </p>\r
3003 </li>\r
3004 <li>\r
3005 <p>\r
3006 Improved display of cache max size values.\r
3007 </p>\r
3008 </li>\r
3009 <li>\r
3010 <p>\r
3011 The following options are no longer hashed in the preprocessor mode:\r
3012   <code>-imacros</code>, <code>-imultilib</code>, <code>-iprefix</code>, <code>-iquote</code>, <code>-isysroot</code>, <code>-iwithprefix</code>,\r
3013   <code>-iwithprefixbefore</code>, <code>-nostdinc</code>, <code>-nostdinc++</code> and <code>-U</code>.\r
3014 </p>\r
3015 </li>\r
3016 </ul></div>\r
3017 </div>\r
3018 <div class="sect2">\r
3019 <h3 id="_bug_fixes_36">Bug fixes</h3>\r
3020 <div class="ulist"><ul>\r
3021 <li>\r
3022 <p>\r
3023 Various portability improvements.\r
3024 </p>\r
3025 </li>\r
3026 <li>\r
3027 <p>\r
3028 Improved detection of home directory.\r
3029 </p>\r
3030 </li>\r
3031 <li>\r
3032 <p>\r
3033 User-defined <code>CPPFLAGS</code> and <code>LDFLAGS</code> are now respected in the Makefile.\r
3034 </p>\r
3035 </li>\r
3036 <li>\r
3037 <p>\r
3038 Fixed NFS issues.\r
3039 </p>\r
3040 </li>\r
3041 <li>\r
3042 <p>\r
3043 Computation of the hash sum has been improved to decrease the risk of hash\r
3044   collisions. For instance, the compiler options <code>-X -Y</code> and <code>-X-Y</code> previously\r
3045   contributed equally to the hash sum.\r
3046 </p>\r
3047 </li>\r
3048 <li>\r
3049 <p>\r
3050 Bail out on too hard compiler options <code>--coverage</code>, <code>-fprofile-arcs</code>,\r
3051   <code>-fprofile-generate</code>, <code>-fprofile-use</code>, <code>-frepo</code>, <code>-ftest-coverage</code> and\r
3052   <code>-save-temps</code>. Also bail out on <code>@file</code> style options.\r
3053 </p>\r
3054 </li>\r
3055 <li>\r
3056 <p>\r
3057 Errors when using multiple <code>-arch</code> compiler options are now noted as\r
3058   &#8220;unsupported compiler option&#8221;.\r
3059 </p>\r
3060 </li>\r
3061 <li>\r
3062 <p>\r
3063 <code>-MD</code>/<code>-MMD</code> options without <code>-MT</code>/<code>-MF</code> are now handled correctly.\r
3064 </p>\r
3065 </li>\r
3066 <li>\r
3067 <p>\r
3068 The <code>-finput-charset</code> option is now handled correctly.\r
3069 </p>\r
3070 </li>\r
3071 <li>\r
3072 <p>\r
3073 Added support for <code>-Wp,-MD</code> and <code>-Wp,-MMD</code> options.\r
3074 </p>\r
3075 </li>\r
3076 <li>\r
3077 <p>\r
3078 The compiler options <code>-Xassembler</code>, <code>-b</code>, <code>-G</code> and <code>-V</code> are now correctly\r
3079   recognized as taking an argument.\r
3080 </p>\r
3081 </li>\r
3082 <li>\r
3083 <p>\r
3084 Debug information containing line numbers of predefined and command-line\r
3085   macros (enabled with the compiler option <code>-g3</code>) will now be correct.\r
3086 </p>\r
3087 </li>\r
3088 <li>\r
3089 <p>\r
3090 Corrected LRU cleanup handling of object files.\r
3091 </p>\r
3092 </li>\r
3093 <li>\r
3094 <p>\r
3095 <code>utimes()</code> is now used instead of <code>utime()</code> when available.\r
3096 </p>\r
3097 </li>\r
3098 <li>\r
3099 <p>\r
3100 Non-writable cache directories are now handled gracefully.\r
3101 </p>\r
3102 </li>\r
3103 <li>\r
3104 <p>\r
3105 Corrected documentation about sharing the cache directory.\r
3106 </p>\r
3107 </li>\r
3108 <li>\r
3109 <p>\r
3110 Fixed compilation warnings from GCC 4.3.\r
3111 </p>\r
3112 </li>\r
3113 <li>\r
3114 <p>\r
3115 The command specified by <code>CCACHE_PREFIX</code> is no longer part of the hash.\r
3116 </p>\r
3117 </li>\r
3118 <li>\r
3119 <p>\r
3120 Fixed bad memory access spotted by Valgrind.\r
3121 </p>\r
3122 </li>\r
3123 <li>\r
3124 <p>\r
3125 Fixed a bug in <code>x_realloc</code>.\r
3126 </p>\r
3127 </li>\r
3128 <li>\r
3129 <p>\r
3130 Freed memory is no longer referenced when compiling a <code>.i</code>/<code>.ii</code> file and\r
3131   falling back to running the real compiler.\r
3132 </p>\r
3133 </li>\r
3134 <li>\r
3135 <p>\r
3136 The test suite is now immune to external values of the <code>CCACHE_*</code> environment\r
3137   variables.\r
3138 </p>\r
3139 </li>\r
3140 <li>\r
3141 <p>\r
3142 Improved detection of recursive invocation.\r
3143 </p>\r
3144 </li>\r
3145 <li>\r
3146 <p>\r
3147 The ccache binary is now not unconditionally stripped when installing.\r
3148 </p>\r
3149 </li>\r
3150 <li>\r
3151 <p>\r
3152 Statistics counters are now correctly updated for -E option failures and\r
3153   internal errors.\r
3154 </p>\r
3155 </li>\r
3156 </ul></div>\r
3157 </div>\r
3158 </div>\r
3159 </div>\r
3160 </div>\r
3161 <div id="footnotes"><hr /></div>\r
3162 <div id="footer">\r
3163 <div id="footer-text">\r
3164 Version 3.5.1<br />\r
3165 Last updated\r
3166  2019-01-03 21:16:33 CET\r
3167 </div>\r
3168 </div>\r
3169 </body>\r
3170 </html>\r