<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.3" />\r
+<meta name="generator" content="AsciiDoc 8.6.6" />\r
<title>ccache authors</title>\r
<style type="text/css">\r
-/* Sans-serif font. */\r
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
+\r
+/* Default font. */\r
+body {\r
+ font-family: Georgia,serif;\r
+}\r
+\r
+/* Title font. */\r
h1, h2, h3, h4, h5, h6,\r
div.title, caption.title,\r
thead, p.table.header,\r
-div#toctitle,\r
-span#author, span#revnumber, span#revdate, span#revremark,\r
-div#footer {\r
+#toctitle,\r
+#author, #revnumber, #revdate, #revremark,\r
+#footer {\r
font-family: Arial,Helvetica,sans-serif;\r
}\r
\r
-/* Serif font. */\r
-div.sectionbody {\r
- font-family: Georgia,"Times New Roman",Times,serif;\r
-}\r
-\r
-/* Monospace font. */\r
-tt {\r
- font-size: inherit;\r
-}\r
-\r
body {\r
margin: 1em 5% 1em 5%;\r
}\r
color: #083194;\r
}\r
\r
-tt {\r
- font-size: inherit;\r
- color: navy;\r
-}\r
-\r
h1, h2, h3, h4, h5, h6 {\r
color: #527bbd;\r
margin-top: 1.2em;\r
h3 + * {\r
clear: left;\r
}\r
+h5 {\r
+ font-size: 1.0em;\r
+}\r
\r
div.sectionbody {\r
margin-left: 0;\r
margin: 0;\r
}\r
\r
-span#author {\r
+#author {\r
color: #527bbd;\r
font-weight: bold;\r
font-size: 1.1em;\r
}\r
-span#email {\r
+#email {\r
}\r
-span#revnumber, span#revdate, span#revremark {\r
+#revnumber, #revdate, #revremark {\r
}\r
\r
-div#footer {\r
+#footer {\r
font-size: small;\r
border-top: 2px solid silver;\r
padding-top: 0.5em;\r
margin-top: 4.0em;\r
}\r
-div#footer-text {\r
+#footer-text {\r
float: left;\r
padding-bottom: 0.5em;\r
}\r
-div#footer-badges {\r
+#footer-badges {\r
float: right;\r
padding-bottom: 0.5em;\r
}\r
\r
-div#preamble {\r
+#preamble {\r
margin-top: 1.5em;\r
margin-bottom: 1.5em;\r
}\r
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.imageblock, div.exampleblock, div.verseblock,\r
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
div.admonitionblock {\r
margin-top: 1.0em;\r
margin-left: 1.0em;\r
margin-right: 10%;\r
border-left: 5px solid #f0f0f0;\r
- color: #777777;\r
+ color: #888;\r
}\r
\r
div.quoteblock > div.attribution {\r
margin-bottom: 0.1em;\r
}\r
\r
-div.tableblock > table {\r
- border: 3px solid #527bbd;\r
-}\r
-thead, p.table.header {\r
- font-weight: bold;\r
- color: #527bbd;\r
-}\r
tfoot {\r
font-weight: bold;\r
}\r
td > div.verse {\r
white-space: pre;\r
}\r
-p.table {\r
- margin-top: 0;\r
-}\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
-div.tableblock > table[frame="void"] {\r
- border-style: none;\r
-}\r
-div.tableblock > table[frame="hsides"] {\r
- border-left-style: none;\r
- border-right-style: none;\r
-}\r
-div.tableblock > table[frame="vsides"] {\r
- border-top-style: none;\r
- border-bottom-style: none;\r
-}\r
-\r
\r
div.hdlist {\r
margin-top: 0.8em;\r
}\r
\r
@media print {\r
- div#footer-badges { display: none; }\r
+ #footer-badges { display: none; }\r
}\r
\r
-div#toc {\r
+#toc {\r
margin-bottom: 2.5em;\r
}\r
\r
-div#toctitle {\r
+#toctitle {\r
color: #527bbd;\r
font-size: 1.1em;\r
font-weight: bold;\r
font-size: 0.9em;\r
}\r
\r
+span.aqua { color: aqua; }\r
+span.black { color: black; }\r
+span.blue { color: blue; }\r
+span.fuchsia { color: fuchsia; }\r
+span.gray { color: gray; }\r
+span.green { color: green; }\r
+span.lime { color: lime; }\r
+span.maroon { color: maroon; }\r
+span.navy { color: navy; }\r
+span.olive { color: olive; }\r
+span.purple { color: purple; }\r
+span.red { color: red; }\r
+span.silver { color: silver; }\r
+span.teal { color: teal; }\r
+span.white { color: white; }\r
+span.yellow { color: yellow; }\r
+\r
+span.aqua-background { background: aqua; }\r
+span.black-background { background: black; }\r
+span.blue-background { background: blue; }\r
+span.fuchsia-background { background: fuchsia; }\r
+span.gray-background { background: gray; }\r
+span.green-background { background: green; }\r
+span.lime-background { background: lime; }\r
+span.maroon-background { background: maroon; }\r
+span.navy-background { background: navy; }\r
+span.olive-background { background: olive; }\r
+span.purple-background { background: purple; }\r
+span.red-background { background: red; }\r
+span.silver-background { background: silver; }\r
+span.teal-background { background: teal; }\r
+span.white-background { background: white; }\r
+span.yellow-background { background: yellow; }\r
+\r
+span.big { font-size: 2em; }\r
+span.small { font-size: 0.6em; }\r
+\r
+span.underline { text-decoration: underline; }\r
+span.overline { text-decoration: overline; }\r
+span.line-through { text-decoration: line-through; }\r
+\r
+\r
+/*\r
+ * xhtml11 specific\r
+ *\r
+ * */\r
+\r
+tt {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+div.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+div.tableblock > table {\r
+ border: 3px solid #527bbd;\r
+}\r
+thead, p.table.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.table {\r
+ margin-top: 0;\r
+}\r
+/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+div.tableblock > table[frame="void"] {\r
+ border-style: none;\r
+}\r
+div.tableblock > table[frame="hsides"] {\r
+ border-left-style: none;\r
+ border-right-style: none;\r
+}\r
+div.tableblock > table[frame="vsides"] {\r
+ border-top-style: none;\r
+ border-bottom-style: none;\r
+}\r
+\r
+\r
+/*\r
+ * html5 specific\r
+ *\r
+ * */\r
+\r
+.monospaced {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+table.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+thead, p.tableblock.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.tableblock {\r
+ margin-top: 0;\r
+}\r
+table.tableblock {\r
+ border-width: 3px;\r
+ border-spacing: 0px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+ border-collapse: collapse;\r
+}\r
+th.tableblock, td.tableblock {\r
+ border-width: 1px;\r
+ padding: 4px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+}\r
+\r
+table.tableblock.frame-topbot {\r
+ border-left-style: hidden;\r
+ border-right-style: hidden;\r
+}\r
+table.tableblock.frame-sides {\r
+ border-top-style: hidden;\r
+ border-bottom-style: hidden;\r
+}\r
+table.tableblock.frame-none {\r
+ border-style: hidden;\r
+}\r
+\r
+th.tableblock.halign-left, td.tableblock.halign-left {\r
+ text-align: left;\r
+}\r
+th.tableblock.halign-center, td.tableblock.halign-center {\r
+ text-align: center;\r
+}\r
+th.tableblock.halign-right, td.tableblock.halign-right {\r
+ text-align: right;\r
+}\r
+\r
+th.tableblock.valign-top, td.tableblock.valign-top {\r
+ vertical-align: top;\r
+}\r
+th.tableblock.valign-middle, td.tableblock.valign-middle {\r
+ vertical-align: middle;\r
+}\r
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
+ vertical-align: bottom;\r
+}\r
+\r
+\r
+/*\r
+ * manpage specific\r
+ *\r
+ * */\r
+\r
+body.manpage h1 {\r
+ padding-top: 0.5em;\r
+ padding-bottom: 0.5em;\r
+ border-top: 2px solid silver;\r
+ border-bottom: 2px solid silver;\r
+}\r
+body.manpage h2 {\r
+ border-style: none;\r
+}\r
+body.manpage div.sectionbody {\r
+ margin-left: 3em;\r
+}\r
+\r
+@media print {\r
+ body.manpage div#toc { display: none; }\r
+}\r
</style>\r
<script type="text/javascript">\r
/*<![CDATA[*/\r
-window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
var asciidoc = { // Namespace.\r
\r
/////////////////////////////////////////////////////////////////////\r
}\r
\r
var toc = document.getElementById("toc");\r
+ if (!toc) {\r
+ return;\r
+ }\r
+\r
+ // Delete existing TOC entries in case we're reloading the TOC.\r
+ var tocEntriesToRemove = [];\r
+ var i;\r
+ for (i = 0; i < toc.childNodes.length; i++) {\r
+ var entry = toc.childNodes[i];\r
+ if (entry.nodeName == 'div'\r
+ && entry.getAttribute("class")\r
+ && entry.getAttribute("class").match(/^toclevel/))\r
+ tocEntriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+ toc.removeChild(tocEntriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild TOC entries.\r
var entries = tocEntries(document.getElementById("content"), toclevels);\r
for (var i = 0; i < entries.length; ++i) {\r
var entry = entries[i];\r
*/\r
\r
footnotes: function () {\r
- var cont = document.getElementById("content");\r
+ // Delete existing footnote entries in case we're reloading the footnodes.\r
+ var i;\r
var noteholder = document.getElementById("footnotes");\r
+ if (!noteholder) {\r
+ return;\r
+ }\r
+ var entriesToRemove = [];\r
+ for (i = 0; i < noteholder.childNodes.length; i++) {\r
+ var entry = noteholder.childNodes[i];\r
+ if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")\r
+ entriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < entriesToRemove.length; i++) {\r
+ noteholder.removeChild(entriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild footnote entries.\r
+ var cont = document.getElementById("content");\r
var spans = cont.getElementsByTagName("span");\r
var refs = {};\r
var n = 0;\r
for (i=0; i<spans.length; i++) {\r
if (spans[i].className == "footnote") {\r
n++;\r
- // Use [\s\S] in place of . so multi-line matches work.\r
- // Because JavaScript has no s (dotall) regex flag.\r
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ var note = spans[i].getAttribute("data-note");\r
+ if (!note) {\r
+ // Use [\s\S] in place of . so multi-line matches work.\r
+ // Because JavaScript has no s (dotall) regex flag.\r
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ spans[i].innerHTML =\r
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ spans[i].setAttribute("data-note", note);\r
+ }\r
noteholder.innerHTML +=\r
"<div class='footnote' id='_footnote_" + n + "'>" +\r
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
n + "</a>. " + note + "</div>";\r
- spans[i].innerHTML =\r
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
- "' title='View footnote' class='footnote'>" + n + "</a>]";\r
var id =spans[i].getAttribute("id");\r
if (id != null) refs["#"+id] = n;\r
}\r
}\r
}\r
}\r
+},\r
+\r
+install: function(toclevels) {\r
+ var timerId;\r
+\r
+ function reinstall() {\r
+ asciidoc.footnotes();\r
+ if (toclevels) {\r
+ asciidoc.toc(toclevels);\r
+ }\r
+ }\r
+\r
+ function reinstallAndRemoveTimer() {\r
+ clearInterval(timerId);\r
+ reinstall();\r
+ }\r
+\r
+ timerId = setInterval(reinstall, 500);\r
+ if (document.addEventListener)\r
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+ else\r
+ window.onload = reinstallAndRemoveTimer;\r
}\r
\r
}\r
+asciidoc.install(2);\r
/*]]>*/\r
</script>\r
</head>\r
<body class="article">\r
<div id="header">\r
<h1>ccache authors</h1>\r
-<span id="revnumber">version 3.1.7</span>\r
+<span id="revnumber">version 3.1.8</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
</li>\r
<li>\r
<p>\r
+Eric Blau <<a href="mailto:Eric.Blau@tekelec.com">Eric.Blau@tekelec.com</a>>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
Francois Marier <<a href="mailto:francois@debian.org">francois@debian.org</a>>\r
</p>\r
</li>\r
</li>\r
<li>\r
<p>\r
+Lalit Chhabra <<a href="mailto:lchhabra@linuxmail.org">lchhabra@linuxmail.org</a>>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
Lars Gustäbel <<a href="mailto:lars@gustaebel.de">lars@gustaebel.de</a>>\r
</p>\r
</li>\r
<li>\r
<p>\r
+Lubos Lunak <<a href="mailto:l.lunak@suse.cz">l.lunak@suse.cz</a>>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
Martin Pool <<a href="mailto:mbp@sourcefrog.net">mbp@sourcefrog.net</a>>\r
</p>\r
</li>\r
</li>\r
<li>\r
<p>\r
+Patrick von Reth <<a href="mailto:vonreth@kde.org">vonreth@kde.org</a>>\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
Paul Griffith <<a href="mailto:paulg@cse.yorku.ca">paulg@cse.yorku.ca</a>>\r
</p>\r
</li>\r
<li>\r
<p>\r
-Ramiro Polla <<a href="mailto:ramiro.polla@gmail.com">ramiro.polla@gmail.com</a>>\r
+RW <<a href="mailto:fbsd06@mlists.homeunix.com">fbsd06@mlists.homeunix.com</a>>\r
</p>\r
</li>\r
<li>\r
<p>\r
-Robin H. Johnson <<a href="mailto:robbat2@gentoo.org">robbat2@gentoo.org</a>>\r
+Ramiro Polla <<a href="mailto:ramiro.polla@gmail.com">ramiro.polla@gmail.com</a>>\r
</p>\r
</li>\r
<li>\r
<p>\r
-RW <<a href="mailto:fbsd06@mlists.homeunix.com">fbsd06@mlists.homeunix.com</a>>\r
+Robin H. Johnson <<a href="mailto:robbat2@gentoo.org">robbat2@gentoo.org</a>>\r
</p>\r
</li>\r
<li>\r
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.1.7<br />\r
-Last updated 2012-01-08 15:29:34 CET\r
+Version 3.1.8<br />\r
+Last updated 2012-08-11 10:57:17 CEST\r
</div>\r
</div>\r
</body>\r
* Björn Jacke <bj@sernet.de>
* Bo Rydberg <bolry@hotmail.com>
* Clemens Rabe <crabe@gmx.de>
+* Eric Blau <Eric.Blau@tekelec.com>
* Francois Marier <francois@debian.org>
* Joel Rosdahl <joel@rosdahl.net>
* John Coiner <john.coiner@amd.com>
* Karl Chen <quarl@cs.berkeley.edu>
* Kovarththanan Rajaratnam <kovarththanan.rajaratnam@gmail.com>
+* Lalit Chhabra <lchhabra@linuxmail.org>
* Lars Gustäbel <lars@gustaebel.de>
+* Lubos Lunak <l.lunak@suse.cz>
* Martin Pool <mbp@sourcefrog.net>
* Owen Mann <owen@mann.org>
+* Patrick von Reth <vonreth@kde.org>
* Paul Griffith <paulg@cse.yorku.ca>
+* RW <fbsd06@mlists.homeunix.com>
* Ramiro Polla <ramiro.polla@gmail.com>
* Robin H. Johnson <robbat2@gentoo.org>
-* RW <fbsd06@mlists.homeunix.com>
* Tim Potter <tpot@samba.org>
* Tor Arne Vestbø <torarnv@gmail.com>
* Ville Skyttä <ville.skytta@iki.fi>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.3" />\r
+<meta name="generator" content="AsciiDoc 8.6.6" />\r
<title>ccache installation</title>\r
<style type="text/css">\r
-/* Sans-serif font. */\r
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
+\r
+/* Default font. */\r
+body {\r
+ font-family: Georgia,serif;\r
+}\r
+\r
+/* Title font. */\r
h1, h2, h3, h4, h5, h6,\r
div.title, caption.title,\r
thead, p.table.header,\r
-div#toctitle,\r
-span#author, span#revnumber, span#revdate, span#revremark,\r
-div#footer {\r
+#toctitle,\r
+#author, #revnumber, #revdate, #revremark,\r
+#footer {\r
font-family: Arial,Helvetica,sans-serif;\r
}\r
\r
-/* Serif font. */\r
-div.sectionbody {\r
- font-family: Georgia,"Times New Roman",Times,serif;\r
-}\r
-\r
-/* Monospace font. */\r
-tt {\r
- font-size: inherit;\r
-}\r
-\r
body {\r
margin: 1em 5% 1em 5%;\r
}\r
color: #083194;\r
}\r
\r
-tt {\r
- font-size: inherit;\r
- color: navy;\r
-}\r
-\r
h1, h2, h3, h4, h5, h6 {\r
color: #527bbd;\r
margin-top: 1.2em;\r
h3 + * {\r
clear: left;\r
}\r
+h5 {\r
+ font-size: 1.0em;\r
+}\r
\r
div.sectionbody {\r
margin-left: 0;\r
margin: 0;\r
}\r
\r
-span#author {\r
+#author {\r
color: #527bbd;\r
font-weight: bold;\r
font-size: 1.1em;\r
}\r
-span#email {\r
+#email {\r
}\r
-span#revnumber, span#revdate, span#revremark {\r
+#revnumber, #revdate, #revremark {\r
}\r
\r
-div#footer {\r
+#footer {\r
font-size: small;\r
border-top: 2px solid silver;\r
padding-top: 0.5em;\r
margin-top: 4.0em;\r
}\r
-div#footer-text {\r
+#footer-text {\r
float: left;\r
padding-bottom: 0.5em;\r
}\r
-div#footer-badges {\r
+#footer-badges {\r
float: right;\r
padding-bottom: 0.5em;\r
}\r
\r
-div#preamble {\r
+#preamble {\r
margin-top: 1.5em;\r
margin-bottom: 1.5em;\r
}\r
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.imageblock, div.exampleblock, div.verseblock,\r
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
div.admonitionblock {\r
margin-top: 1.0em;\r
margin-left: 1.0em;\r
margin-right: 10%;\r
border-left: 5px solid #f0f0f0;\r
- color: #777777;\r
+ color: #888;\r
}\r
\r
div.quoteblock > div.attribution {\r
margin-bottom: 0.1em;\r
}\r
\r
-div.tableblock > table {\r
- border: 3px solid #527bbd;\r
-}\r
-thead, p.table.header {\r
- font-weight: bold;\r
- color: #527bbd;\r
-}\r
tfoot {\r
font-weight: bold;\r
}\r
td > div.verse {\r
white-space: pre;\r
}\r
-p.table {\r
- margin-top: 0;\r
-}\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
-div.tableblock > table[frame="void"] {\r
- border-style: none;\r
-}\r
-div.tableblock > table[frame="hsides"] {\r
- border-left-style: none;\r
- border-right-style: none;\r
-}\r
-div.tableblock > table[frame="vsides"] {\r
- border-top-style: none;\r
- border-bottom-style: none;\r
-}\r
-\r
\r
div.hdlist {\r
margin-top: 0.8em;\r
}\r
\r
@media print {\r
- div#footer-badges { display: none; }\r
+ #footer-badges { display: none; }\r
}\r
\r
-div#toc {\r
+#toc {\r
margin-bottom: 2.5em;\r
}\r
\r
-div#toctitle {\r
+#toctitle {\r
color: #527bbd;\r
font-size: 1.1em;\r
font-weight: bold;\r
font-size: 0.9em;\r
}\r
\r
+span.aqua { color: aqua; }\r
+span.black { color: black; }\r
+span.blue { color: blue; }\r
+span.fuchsia { color: fuchsia; }\r
+span.gray { color: gray; }\r
+span.green { color: green; }\r
+span.lime { color: lime; }\r
+span.maroon { color: maroon; }\r
+span.navy { color: navy; }\r
+span.olive { color: olive; }\r
+span.purple { color: purple; }\r
+span.red { color: red; }\r
+span.silver { color: silver; }\r
+span.teal { color: teal; }\r
+span.white { color: white; }\r
+span.yellow { color: yellow; }\r
+\r
+span.aqua-background { background: aqua; }\r
+span.black-background { background: black; }\r
+span.blue-background { background: blue; }\r
+span.fuchsia-background { background: fuchsia; }\r
+span.gray-background { background: gray; }\r
+span.green-background { background: green; }\r
+span.lime-background { background: lime; }\r
+span.maroon-background { background: maroon; }\r
+span.navy-background { background: navy; }\r
+span.olive-background { background: olive; }\r
+span.purple-background { background: purple; }\r
+span.red-background { background: red; }\r
+span.silver-background { background: silver; }\r
+span.teal-background { background: teal; }\r
+span.white-background { background: white; }\r
+span.yellow-background { background: yellow; }\r
+\r
+span.big { font-size: 2em; }\r
+span.small { font-size: 0.6em; }\r
+\r
+span.underline { text-decoration: underline; }\r
+span.overline { text-decoration: overline; }\r
+span.line-through { text-decoration: line-through; }\r
+\r
+\r
+/*\r
+ * xhtml11 specific\r
+ *\r
+ * */\r
+\r
+tt {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+div.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+div.tableblock > table {\r
+ border: 3px solid #527bbd;\r
+}\r
+thead, p.table.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.table {\r
+ margin-top: 0;\r
+}\r
+/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+div.tableblock > table[frame="void"] {\r
+ border-style: none;\r
+}\r
+div.tableblock > table[frame="hsides"] {\r
+ border-left-style: none;\r
+ border-right-style: none;\r
+}\r
+div.tableblock > table[frame="vsides"] {\r
+ border-top-style: none;\r
+ border-bottom-style: none;\r
+}\r
+\r
+\r
+/*\r
+ * html5 specific\r
+ *\r
+ * */\r
+\r
+.monospaced {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+table.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+thead, p.tableblock.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.tableblock {\r
+ margin-top: 0;\r
+}\r
+table.tableblock {\r
+ border-width: 3px;\r
+ border-spacing: 0px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+ border-collapse: collapse;\r
+}\r
+th.tableblock, td.tableblock {\r
+ border-width: 1px;\r
+ padding: 4px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+}\r
+\r
+table.tableblock.frame-topbot {\r
+ border-left-style: hidden;\r
+ border-right-style: hidden;\r
+}\r
+table.tableblock.frame-sides {\r
+ border-top-style: hidden;\r
+ border-bottom-style: hidden;\r
+}\r
+table.tableblock.frame-none {\r
+ border-style: hidden;\r
+}\r
+\r
+th.tableblock.halign-left, td.tableblock.halign-left {\r
+ text-align: left;\r
+}\r
+th.tableblock.halign-center, td.tableblock.halign-center {\r
+ text-align: center;\r
+}\r
+th.tableblock.halign-right, td.tableblock.halign-right {\r
+ text-align: right;\r
+}\r
+\r
+th.tableblock.valign-top, td.tableblock.valign-top {\r
+ vertical-align: top;\r
+}\r
+th.tableblock.valign-middle, td.tableblock.valign-middle {\r
+ vertical-align: middle;\r
+}\r
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
+ vertical-align: bottom;\r
+}\r
+\r
+\r
+/*\r
+ * manpage specific\r
+ *\r
+ * */\r
+\r
+body.manpage h1 {\r
+ padding-top: 0.5em;\r
+ padding-bottom: 0.5em;\r
+ border-top: 2px solid silver;\r
+ border-bottom: 2px solid silver;\r
+}\r
+body.manpage h2 {\r
+ border-style: none;\r
+}\r
+body.manpage div.sectionbody {\r
+ margin-left: 3em;\r
+}\r
+\r
+@media print {\r
+ body.manpage div#toc { display: none; }\r
+}\r
</style>\r
<script type="text/javascript">\r
/*<![CDATA[*/\r
-window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
var asciidoc = { // Namespace.\r
\r
/////////////////////////////////////////////////////////////////////\r
}\r
\r
var toc = document.getElementById("toc");\r
+ if (!toc) {\r
+ return;\r
+ }\r
+\r
+ // Delete existing TOC entries in case we're reloading the TOC.\r
+ var tocEntriesToRemove = [];\r
+ var i;\r
+ for (i = 0; i < toc.childNodes.length; i++) {\r
+ var entry = toc.childNodes[i];\r
+ if (entry.nodeName == 'div'\r
+ && entry.getAttribute("class")\r
+ && entry.getAttribute("class").match(/^toclevel/))\r
+ tocEntriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+ toc.removeChild(tocEntriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild TOC entries.\r
var entries = tocEntries(document.getElementById("content"), toclevels);\r
for (var i = 0; i < entries.length; ++i) {\r
var entry = entries[i];\r
*/\r
\r
footnotes: function () {\r
- var cont = document.getElementById("content");\r
+ // Delete existing footnote entries in case we're reloading the footnodes.\r
+ var i;\r
var noteholder = document.getElementById("footnotes");\r
+ if (!noteholder) {\r
+ return;\r
+ }\r
+ var entriesToRemove = [];\r
+ for (i = 0; i < noteholder.childNodes.length; i++) {\r
+ var entry = noteholder.childNodes[i];\r
+ if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")\r
+ entriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < entriesToRemove.length; i++) {\r
+ noteholder.removeChild(entriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild footnote entries.\r
+ var cont = document.getElementById("content");\r
var spans = cont.getElementsByTagName("span");\r
var refs = {};\r
var n = 0;\r
for (i=0; i<spans.length; i++) {\r
if (spans[i].className == "footnote") {\r
n++;\r
- // Use [\s\S] in place of . so multi-line matches work.\r
- // Because JavaScript has no s (dotall) regex flag.\r
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ var note = spans[i].getAttribute("data-note");\r
+ if (!note) {\r
+ // Use [\s\S] in place of . so multi-line matches work.\r
+ // Because JavaScript has no s (dotall) regex flag.\r
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ spans[i].innerHTML =\r
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ spans[i].setAttribute("data-note", note);\r
+ }\r
noteholder.innerHTML +=\r
"<div class='footnote' id='_footnote_" + n + "'>" +\r
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
n + "</a>. " + note + "</div>";\r
- spans[i].innerHTML =\r
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
- "' title='View footnote' class='footnote'>" + n + "</a>]";\r
var id =spans[i].getAttribute("id");\r
if (id != null) refs["#"+id] = n;\r
}\r
}\r
}\r
}\r
+},\r
+\r
+install: function(toclevels) {\r
+ var timerId;\r
+\r
+ function reinstall() {\r
+ asciidoc.footnotes();\r
+ if (toclevels) {\r
+ asciidoc.toc(toclevels);\r
+ }\r
+ }\r
+\r
+ function reinstallAndRemoveTimer() {\r
+ clearInterval(timerId);\r
+ reinstall();\r
+ }\r
+\r
+ timerId = setInterval(reinstall, 500);\r
+ if (document.addEventListener)\r
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+ else\r
+ window.onload = reinstallAndRemoveTimer;\r
}\r
\r
}\r
+asciidoc.install(2);\r
/*]]>*/\r
</script>\r
</head>\r
<body class="article">\r
<div id="header">\r
<h1>ccache installation</h1>\r
-<span id="revnumber">version 3.1.7</span>\r
+<span id="revnumber">version 3.1.8</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.1.7<br />\r
-Last updated 2010-04-28 20:58:43 CEST\r
+Version 3.1.8<br />\r
+Last updated 2012-01-09 20:53:18 CET\r
</div>\r
</div>\r
</body>\r
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.3" />\r
+<meta name="generator" content="AsciiDoc 8.6.6" />\r
<title>ccache copyright and license</title>\r
<style type="text/css">\r
-/* Sans-serif font. */\r
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
+\r
+/* Default font. */\r
+body {\r
+ font-family: Georgia,serif;\r
+}\r
+\r
+/* Title font. */\r
h1, h2, h3, h4, h5, h6,\r
div.title, caption.title,\r
thead, p.table.header,\r
-div#toctitle,\r
-span#author, span#revnumber, span#revdate, span#revremark,\r
-div#footer {\r
+#toctitle,\r
+#author, #revnumber, #revdate, #revremark,\r
+#footer {\r
font-family: Arial,Helvetica,sans-serif;\r
}\r
\r
-/* Serif font. */\r
-div.sectionbody {\r
- font-family: Georgia,"Times New Roman",Times,serif;\r
-}\r
-\r
-/* Monospace font. */\r
-tt {\r
- font-size: inherit;\r
-}\r
-\r
body {\r
margin: 1em 5% 1em 5%;\r
}\r
color: #083194;\r
}\r
\r
-tt {\r
- font-size: inherit;\r
- color: navy;\r
-}\r
-\r
h1, h2, h3, h4, h5, h6 {\r
color: #527bbd;\r
margin-top: 1.2em;\r
h3 + * {\r
clear: left;\r
}\r
+h5 {\r
+ font-size: 1.0em;\r
+}\r
\r
div.sectionbody {\r
margin-left: 0;\r
margin: 0;\r
}\r
\r
-span#author {\r
+#author {\r
color: #527bbd;\r
font-weight: bold;\r
font-size: 1.1em;\r
}\r
-span#email {\r
+#email {\r
}\r
-span#revnumber, span#revdate, span#revremark {\r
+#revnumber, #revdate, #revremark {\r
}\r
\r
-div#footer {\r
+#footer {\r
font-size: small;\r
border-top: 2px solid silver;\r
padding-top: 0.5em;\r
margin-top: 4.0em;\r
}\r
-div#footer-text {\r
+#footer-text {\r
float: left;\r
padding-bottom: 0.5em;\r
}\r
-div#footer-badges {\r
+#footer-badges {\r
float: right;\r
padding-bottom: 0.5em;\r
}\r
\r
-div#preamble {\r
+#preamble {\r
margin-top: 1.5em;\r
margin-bottom: 1.5em;\r
}\r
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.imageblock, div.exampleblock, div.verseblock,\r
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
div.admonitionblock {\r
margin-top: 1.0em;\r
margin-left: 1.0em;\r
margin-right: 10%;\r
border-left: 5px solid #f0f0f0;\r
- color: #777777;\r
+ color: #888;\r
}\r
\r
div.quoteblock > div.attribution {\r
margin-bottom: 0.1em;\r
}\r
\r
-div.tableblock > table {\r
- border: 3px solid #527bbd;\r
-}\r
-thead, p.table.header {\r
- font-weight: bold;\r
- color: #527bbd;\r
-}\r
tfoot {\r
font-weight: bold;\r
}\r
td > div.verse {\r
white-space: pre;\r
}\r
-p.table {\r
- margin-top: 0;\r
-}\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
-div.tableblock > table[frame="void"] {\r
- border-style: none;\r
-}\r
-div.tableblock > table[frame="hsides"] {\r
- border-left-style: none;\r
- border-right-style: none;\r
-}\r
-div.tableblock > table[frame="vsides"] {\r
- border-top-style: none;\r
- border-bottom-style: none;\r
-}\r
-\r
\r
div.hdlist {\r
margin-top: 0.8em;\r
}\r
\r
@media print {\r
- div#footer-badges { display: none; }\r
+ #footer-badges { display: none; }\r
}\r
\r
-div#toc {\r
+#toc {\r
margin-bottom: 2.5em;\r
}\r
\r
-div#toctitle {\r
+#toctitle {\r
color: #527bbd;\r
font-size: 1.1em;\r
font-weight: bold;\r
font-size: 0.9em;\r
}\r
\r
+span.aqua { color: aqua; }\r
+span.black { color: black; }\r
+span.blue { color: blue; }\r
+span.fuchsia { color: fuchsia; }\r
+span.gray { color: gray; }\r
+span.green { color: green; }\r
+span.lime { color: lime; }\r
+span.maroon { color: maroon; }\r
+span.navy { color: navy; }\r
+span.olive { color: olive; }\r
+span.purple { color: purple; }\r
+span.red { color: red; }\r
+span.silver { color: silver; }\r
+span.teal { color: teal; }\r
+span.white { color: white; }\r
+span.yellow { color: yellow; }\r
+\r
+span.aqua-background { background: aqua; }\r
+span.black-background { background: black; }\r
+span.blue-background { background: blue; }\r
+span.fuchsia-background { background: fuchsia; }\r
+span.gray-background { background: gray; }\r
+span.green-background { background: green; }\r
+span.lime-background { background: lime; }\r
+span.maroon-background { background: maroon; }\r
+span.navy-background { background: navy; }\r
+span.olive-background { background: olive; }\r
+span.purple-background { background: purple; }\r
+span.red-background { background: red; }\r
+span.silver-background { background: silver; }\r
+span.teal-background { background: teal; }\r
+span.white-background { background: white; }\r
+span.yellow-background { background: yellow; }\r
+\r
+span.big { font-size: 2em; }\r
+span.small { font-size: 0.6em; }\r
+\r
+span.underline { text-decoration: underline; }\r
+span.overline { text-decoration: overline; }\r
+span.line-through { text-decoration: line-through; }\r
+\r
+\r
+/*\r
+ * xhtml11 specific\r
+ *\r
+ * */\r
+\r
+tt {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+div.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+div.tableblock > table {\r
+ border: 3px solid #527bbd;\r
+}\r
+thead, p.table.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.table {\r
+ margin-top: 0;\r
+}\r
+/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+div.tableblock > table[frame="void"] {\r
+ border-style: none;\r
+}\r
+div.tableblock > table[frame="hsides"] {\r
+ border-left-style: none;\r
+ border-right-style: none;\r
+}\r
+div.tableblock > table[frame="vsides"] {\r
+ border-top-style: none;\r
+ border-bottom-style: none;\r
+}\r
+\r
+\r
+/*\r
+ * html5 specific\r
+ *\r
+ * */\r
+\r
+.monospaced {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+table.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+thead, p.tableblock.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.tableblock {\r
+ margin-top: 0;\r
+}\r
+table.tableblock {\r
+ border-width: 3px;\r
+ border-spacing: 0px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+ border-collapse: collapse;\r
+}\r
+th.tableblock, td.tableblock {\r
+ border-width: 1px;\r
+ padding: 4px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+}\r
+\r
+table.tableblock.frame-topbot {\r
+ border-left-style: hidden;\r
+ border-right-style: hidden;\r
+}\r
+table.tableblock.frame-sides {\r
+ border-top-style: hidden;\r
+ border-bottom-style: hidden;\r
+}\r
+table.tableblock.frame-none {\r
+ border-style: hidden;\r
+}\r
+\r
+th.tableblock.halign-left, td.tableblock.halign-left {\r
+ text-align: left;\r
+}\r
+th.tableblock.halign-center, td.tableblock.halign-center {\r
+ text-align: center;\r
+}\r
+th.tableblock.halign-right, td.tableblock.halign-right {\r
+ text-align: right;\r
+}\r
+\r
+th.tableblock.valign-top, td.tableblock.valign-top {\r
+ vertical-align: top;\r
+}\r
+th.tableblock.valign-middle, td.tableblock.valign-middle {\r
+ vertical-align: middle;\r
+}\r
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
+ vertical-align: bottom;\r
+}\r
+\r
+\r
+/*\r
+ * manpage specific\r
+ *\r
+ * */\r
+\r
+body.manpage h1 {\r
+ padding-top: 0.5em;\r
+ padding-bottom: 0.5em;\r
+ border-top: 2px solid silver;\r
+ border-bottom: 2px solid silver;\r
+}\r
+body.manpage h2 {\r
+ border-style: none;\r
+}\r
+body.manpage div.sectionbody {\r
+ margin-left: 3em;\r
+}\r
+\r
+@media print {\r
+ body.manpage div#toc { display: none; }\r
+}\r
</style>\r
<script type="text/javascript">\r
/*<![CDATA[*/\r
-window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
var asciidoc = { // Namespace.\r
\r
/////////////////////////////////////////////////////////////////////\r
}\r
\r
var toc = document.getElementById("toc");\r
+ if (!toc) {\r
+ return;\r
+ }\r
+\r
+ // Delete existing TOC entries in case we're reloading the TOC.\r
+ var tocEntriesToRemove = [];\r
+ var i;\r
+ for (i = 0; i < toc.childNodes.length; i++) {\r
+ var entry = toc.childNodes[i];\r
+ if (entry.nodeName == 'div'\r
+ && entry.getAttribute("class")\r
+ && entry.getAttribute("class").match(/^toclevel/))\r
+ tocEntriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+ toc.removeChild(tocEntriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild TOC entries.\r
var entries = tocEntries(document.getElementById("content"), toclevels);\r
for (var i = 0; i < entries.length; ++i) {\r
var entry = entries[i];\r
*/\r
\r
footnotes: function () {\r
- var cont = document.getElementById("content");\r
+ // Delete existing footnote entries in case we're reloading the footnodes.\r
+ var i;\r
var noteholder = document.getElementById("footnotes");\r
+ if (!noteholder) {\r
+ return;\r
+ }\r
+ var entriesToRemove = [];\r
+ for (i = 0; i < noteholder.childNodes.length; i++) {\r
+ var entry = noteholder.childNodes[i];\r
+ if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")\r
+ entriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < entriesToRemove.length; i++) {\r
+ noteholder.removeChild(entriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild footnote entries.\r
+ var cont = document.getElementById("content");\r
var spans = cont.getElementsByTagName("span");\r
var refs = {};\r
var n = 0;\r
for (i=0; i<spans.length; i++) {\r
if (spans[i].className == "footnote") {\r
n++;\r
- // Use [\s\S] in place of . so multi-line matches work.\r
- // Because JavaScript has no s (dotall) regex flag.\r
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ var note = spans[i].getAttribute("data-note");\r
+ if (!note) {\r
+ // Use [\s\S] in place of . so multi-line matches work.\r
+ // Because JavaScript has no s (dotall) regex flag.\r
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ spans[i].innerHTML =\r
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ spans[i].setAttribute("data-note", note);\r
+ }\r
noteholder.innerHTML +=\r
"<div class='footnote' id='_footnote_" + n + "'>" +\r
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
n + "</a>. " + note + "</div>";\r
- spans[i].innerHTML =\r
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
- "' title='View footnote' class='footnote'>" + n + "</a>]";\r
var id =spans[i].getAttribute("id");\r
if (id != null) refs["#"+id] = n;\r
}\r
}\r
}\r
}\r
+},\r
+\r
+install: function(toclevels) {\r
+ var timerId;\r
+\r
+ function reinstall() {\r
+ asciidoc.footnotes();\r
+ if (toclevels) {\r
+ asciidoc.toc(toclevels);\r
+ }\r
+ }\r
+\r
+ function reinstallAndRemoveTimer() {\r
+ clearInterval(timerId);\r
+ reinstall();\r
+ }\r
+\r
+ timerId = setInterval(reinstall, 500);\r
+ if (document.addEventListener)\r
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+ else\r
+ window.onload = reinstallAndRemoveTimer;\r
}\r
\r
}\r
+asciidoc.install(2);\r
/*]]>*/\r
</script>\r
</head>\r
<body class="article">\r
<div id="header">\r
<h1>ccache copyright and license</h1>\r
-<span id="revnumber">version 3.1.7</span>\r
+<span id="revnumber">version 3.1.8</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.1.7<br />\r
-Last updated 2012-01-08 15:29:34 CET\r
+Version 3.1.8<br />\r
+Last updated 2012-08-11 10:57:17 CEST\r
</div>\r
</div>\r
</body>\r
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.3" />\r
+<meta name="generator" content="AsciiDoc 8.6.6" />\r
<title>CCACHE(1)</title>\r
<style type="text/css">\r
-/* Sans-serif font. */\r
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
+\r
+/* Default font. */\r
+body {\r
+ font-family: Georgia,serif;\r
+}\r
+\r
+/* Title font. */\r
h1, h2, h3, h4, h5, h6,\r
div.title, caption.title,\r
thead, p.table.header,\r
-div#toctitle,\r
-span#author, span#revnumber, span#revdate, span#revremark,\r
-div#footer {\r
+#toctitle,\r
+#author, #revnumber, #revdate, #revremark,\r
+#footer {\r
font-family: Arial,Helvetica,sans-serif;\r
}\r
\r
-/* Serif font. */\r
-div.sectionbody {\r
- font-family: Georgia,"Times New Roman",Times,serif;\r
-}\r
-\r
-/* Monospace font. */\r
-tt {\r
- font-size: inherit;\r
-}\r
-\r
body {\r
margin: 1em 5% 1em 5%;\r
}\r
color: #083194;\r
}\r
\r
-tt {\r
- font-size: inherit;\r
- color: navy;\r
-}\r
-\r
h1, h2, h3, h4, h5, h6 {\r
color: #527bbd;\r
margin-top: 1.2em;\r
h3 + * {\r
clear: left;\r
}\r
+h5 {\r
+ font-size: 1.0em;\r
+}\r
\r
div.sectionbody {\r
margin-left: 0;\r
margin: 0;\r
}\r
\r
-span#author {\r
+#author {\r
color: #527bbd;\r
font-weight: bold;\r
font-size: 1.1em;\r
}\r
-span#email {\r
+#email {\r
}\r
-span#revnumber, span#revdate, span#revremark {\r
+#revnumber, #revdate, #revremark {\r
}\r
\r
-div#footer {\r
+#footer {\r
font-size: small;\r
border-top: 2px solid silver;\r
padding-top: 0.5em;\r
margin-top: 4.0em;\r
}\r
-div#footer-text {\r
+#footer-text {\r
float: left;\r
padding-bottom: 0.5em;\r
}\r
-div#footer-badges {\r
+#footer-badges {\r
float: right;\r
padding-bottom: 0.5em;\r
}\r
\r
-div#preamble {\r
+#preamble {\r
margin-top: 1.5em;\r
margin-bottom: 1.5em;\r
}\r
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.imageblock, div.exampleblock, div.verseblock,\r
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
div.admonitionblock {\r
margin-top: 1.0em;\r
margin-left: 1.0em;\r
margin-right: 10%;\r
border-left: 5px solid #f0f0f0;\r
- color: #777777;\r
+ color: #888;\r
}\r
\r
div.quoteblock > div.attribution {\r
margin-bottom: 0.1em;\r
}\r
\r
-div.tableblock > table {\r
- border: 3px solid #527bbd;\r
-}\r
-thead, p.table.header {\r
- font-weight: bold;\r
- color: #527bbd;\r
-}\r
tfoot {\r
font-weight: bold;\r
}\r
td > div.verse {\r
white-space: pre;\r
}\r
-p.table {\r
- margin-top: 0;\r
-}\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
-div.tableblock > table[frame="void"] {\r
- border-style: none;\r
-}\r
-div.tableblock > table[frame="hsides"] {\r
- border-left-style: none;\r
- border-right-style: none;\r
-}\r
-div.tableblock > table[frame="vsides"] {\r
- border-top-style: none;\r
- border-bottom-style: none;\r
-}\r
-\r
\r
div.hdlist {\r
margin-top: 0.8em;\r
}\r
\r
@media print {\r
- div#footer-badges { display: none; }\r
+ #footer-badges { display: none; }\r
}\r
\r
-div#toc {\r
+#toc {\r
margin-bottom: 2.5em;\r
}\r
\r
-div#toctitle {\r
+#toctitle {\r
color: #527bbd;\r
font-size: 1.1em;\r
font-weight: bold;\r
font-size: 0.9em;\r
}\r
\r
+span.aqua { color: aqua; }\r
+span.black { color: black; }\r
+span.blue { color: blue; }\r
+span.fuchsia { color: fuchsia; }\r
+span.gray { color: gray; }\r
+span.green { color: green; }\r
+span.lime { color: lime; }\r
+span.maroon { color: maroon; }\r
+span.navy { color: navy; }\r
+span.olive { color: olive; }\r
+span.purple { color: purple; }\r
+span.red { color: red; }\r
+span.silver { color: silver; }\r
+span.teal { color: teal; }\r
+span.white { color: white; }\r
+span.yellow { color: yellow; }\r
+\r
+span.aqua-background { background: aqua; }\r
+span.black-background { background: black; }\r
+span.blue-background { background: blue; }\r
+span.fuchsia-background { background: fuchsia; }\r
+span.gray-background { background: gray; }\r
+span.green-background { background: green; }\r
+span.lime-background { background: lime; }\r
+span.maroon-background { background: maroon; }\r
+span.navy-background { background: navy; }\r
+span.olive-background { background: olive; }\r
+span.purple-background { background: purple; }\r
+span.red-background { background: red; }\r
+span.silver-background { background: silver; }\r
+span.teal-background { background: teal; }\r
+span.white-background { background: white; }\r
+span.yellow-background { background: yellow; }\r
+\r
+span.big { font-size: 2em; }\r
+span.small { font-size: 0.6em; }\r
+\r
+span.underline { text-decoration: underline; }\r
+span.overline { text-decoration: overline; }\r
+span.line-through { text-decoration: line-through; }\r
+\r
+\r
+/*\r
+ * xhtml11 specific\r
+ *\r
+ * */\r
+\r
+tt {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+div.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+div.tableblock > table {\r
+ border: 3px solid #527bbd;\r
+}\r
+thead, p.table.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.table {\r
+ margin-top: 0;\r
+}\r
+/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+div.tableblock > table[frame="void"] {\r
+ border-style: none;\r
+}\r
+div.tableblock > table[frame="hsides"] {\r
+ border-left-style: none;\r
+ border-right-style: none;\r
+}\r
+div.tableblock > table[frame="vsides"] {\r
+ border-top-style: none;\r
+ border-bottom-style: none;\r
+}\r
+\r
+\r
+/*\r
+ * html5 specific\r
+ *\r
+ * */\r
+\r
+.monospaced {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+table.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+thead, p.tableblock.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.tableblock {\r
+ margin-top: 0;\r
+}\r
+table.tableblock {\r
+ border-width: 3px;\r
+ border-spacing: 0px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+ border-collapse: collapse;\r
+}\r
+th.tableblock, td.tableblock {\r
+ border-width: 1px;\r
+ padding: 4px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+}\r
+\r
+table.tableblock.frame-topbot {\r
+ border-left-style: hidden;\r
+ border-right-style: hidden;\r
+}\r
+table.tableblock.frame-sides {\r
+ border-top-style: hidden;\r
+ border-bottom-style: hidden;\r
+}\r
+table.tableblock.frame-none {\r
+ border-style: hidden;\r
+}\r
+\r
+th.tableblock.halign-left, td.tableblock.halign-left {\r
+ text-align: left;\r
+}\r
+th.tableblock.halign-center, td.tableblock.halign-center {\r
+ text-align: center;\r
+}\r
+th.tableblock.halign-right, td.tableblock.halign-right {\r
+ text-align: right;\r
+}\r
+\r
+th.tableblock.valign-top, td.tableblock.valign-top {\r
+ vertical-align: top;\r
+}\r
+th.tableblock.valign-middle, td.tableblock.valign-middle {\r
+ vertical-align: middle;\r
+}\r
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
+ vertical-align: bottom;\r
+}\r
+\r
+\r
+/*\r
+ * manpage specific\r
+ *\r
+ * */\r
+\r
+body.manpage h1 {\r
+ padding-top: 0.5em;\r
+ padding-bottom: 0.5em;\r
+ border-top: 2px solid silver;\r
+ border-bottom: 2px solid silver;\r
+}\r
+body.manpage h2 {\r
+ border-style: none;\r
+}\r
+body.manpage div.sectionbody {\r
+ margin-left: 3em;\r
+}\r
+\r
+@media print {\r
+ body.manpage div#toc { display: none; }\r
+}\r
</style>\r
<script type="text/javascript">\r
/*<![CDATA[*/\r
-window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
var asciidoc = { // Namespace.\r
\r
/////////////////////////////////////////////////////////////////////\r
}\r
\r
var toc = document.getElementById("toc");\r
+ if (!toc) {\r
+ return;\r
+ }\r
+\r
+ // Delete existing TOC entries in case we're reloading the TOC.\r
+ var tocEntriesToRemove = [];\r
+ var i;\r
+ for (i = 0; i < toc.childNodes.length; i++) {\r
+ var entry = toc.childNodes[i];\r
+ if (entry.nodeName == 'div'\r
+ && entry.getAttribute("class")\r
+ && entry.getAttribute("class").match(/^toclevel/))\r
+ tocEntriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+ toc.removeChild(tocEntriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild TOC entries.\r
var entries = tocEntries(document.getElementById("content"), toclevels);\r
for (var i = 0; i < entries.length; ++i) {\r
var entry = entries[i];\r
*/\r
\r
footnotes: function () {\r
- var cont = document.getElementById("content");\r
+ // Delete existing footnote entries in case we're reloading the footnodes.\r
+ var i;\r
var noteholder = document.getElementById("footnotes");\r
+ if (!noteholder) {\r
+ return;\r
+ }\r
+ var entriesToRemove = [];\r
+ for (i = 0; i < noteholder.childNodes.length; i++) {\r
+ var entry = noteholder.childNodes[i];\r
+ if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")\r
+ entriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < entriesToRemove.length; i++) {\r
+ noteholder.removeChild(entriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild footnote entries.\r
+ var cont = document.getElementById("content");\r
var spans = cont.getElementsByTagName("span");\r
var refs = {};\r
var n = 0;\r
for (i=0; i<spans.length; i++) {\r
if (spans[i].className == "footnote") {\r
n++;\r
- // Use [\s\S] in place of . so multi-line matches work.\r
- // Because JavaScript has no s (dotall) regex flag.\r
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ var note = spans[i].getAttribute("data-note");\r
+ if (!note) {\r
+ // Use [\s\S] in place of . so multi-line matches work.\r
+ // Because JavaScript has no s (dotall) regex flag.\r
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ spans[i].innerHTML =\r
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ spans[i].setAttribute("data-note", note);\r
+ }\r
noteholder.innerHTML +=\r
"<div class='footnote' id='_footnote_" + n + "'>" +\r
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
n + "</a>. " + note + "</div>";\r
- spans[i].innerHTML =\r
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
- "' title='View footnote' class='footnote'>" + n + "</a>]";\r
var id =spans[i].getAttribute("id");\r
if (id != null) refs["#"+id] = n;\r
}\r
}\r
}\r
}\r
+},\r
+\r
+install: function(toclevels) {\r
+ var timerId;\r
+\r
+ function reinstall() {\r
+ asciidoc.footnotes();\r
+ if (toclevels) {\r
+ asciidoc.toc(toclevels);\r
+ }\r
+ }\r
+\r
+ function reinstallAndRemoveTimer() {\r
+ clearInterval(timerId);\r
+ reinstall();\r
+ }\r
+\r
+ timerId = setInterval(reinstall, 500);\r
+ if (document.addEventListener)\r
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+ else\r
+ window.onload = reinstallAndRemoveTimer;\r
}\r
\r
}\r
+asciidoc.install(2);\r
/*]]>*/\r
</script>\r
</head>\r
<body class="article">\r
<div id="header">\r
<h1>CCACHE(1)</h1>\r
-<span id="revnumber">version 3.1.7</span>\r
+<span id="revnumber">version 3.1.8</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.1.7<br />\r
-Last updated 2012-01-08 15:29:34 CET\r
+Version 3.1.8<br />\r
+Last updated 2012-08-11 10:57:17 CEST\r
</div>\r
</div>\r
</body>\r
test/main$(EXEEXT)
CC='$(CC)' $(srcdir)/test.sh
+.PHONY: quicktest
+quicktest: test/main$(EXEEXT)
+ test/main$(EXEEXT)
+
test/main$(EXEEXT): $(base_objs) $(test_objs) @extra_deps@
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(base_objs) $(test_objs) $(libs)
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.3" />\r
+<meta name="generator" content="AsciiDoc 8.6.6" />\r
<title>ccache news</title>\r
<style type="text/css">\r
-/* Sans-serif font. */\r
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
+\r
+/* Default font. */\r
+body {\r
+ font-family: Georgia,serif;\r
+}\r
+\r
+/* Title font. */\r
h1, h2, h3, h4, h5, h6,\r
div.title, caption.title,\r
thead, p.table.header,\r
-div#toctitle,\r
-span#author, span#revnumber, span#revdate, span#revremark,\r
-div#footer {\r
+#toctitle,\r
+#author, #revnumber, #revdate, #revremark,\r
+#footer {\r
font-family: Arial,Helvetica,sans-serif;\r
}\r
\r
-/* Serif font. */\r
-div.sectionbody {\r
- font-family: Georgia,"Times New Roman",Times,serif;\r
-}\r
-\r
-/* Monospace font. */\r
-tt {\r
- font-size: inherit;\r
-}\r
-\r
body {\r
margin: 1em 5% 1em 5%;\r
}\r
color: #083194;\r
}\r
\r
-tt {\r
- font-size: inherit;\r
- color: navy;\r
-}\r
-\r
h1, h2, h3, h4, h5, h6 {\r
color: #527bbd;\r
margin-top: 1.2em;\r
h3 + * {\r
clear: left;\r
}\r
+h5 {\r
+ font-size: 1.0em;\r
+}\r
\r
div.sectionbody {\r
margin-left: 0;\r
margin: 0;\r
}\r
\r
-span#author {\r
+#author {\r
color: #527bbd;\r
font-weight: bold;\r
font-size: 1.1em;\r
}\r
-span#email {\r
+#email {\r
}\r
-span#revnumber, span#revdate, span#revremark {\r
+#revnumber, #revdate, #revremark {\r
}\r
\r
-div#footer {\r
+#footer {\r
font-size: small;\r
border-top: 2px solid silver;\r
padding-top: 0.5em;\r
margin-top: 4.0em;\r
}\r
-div#footer-text {\r
+#footer-text {\r
float: left;\r
padding-bottom: 0.5em;\r
}\r
-div#footer-badges {\r
+#footer-badges {\r
float: right;\r
padding-bottom: 0.5em;\r
}\r
\r
-div#preamble {\r
+#preamble {\r
margin-top: 1.5em;\r
margin-bottom: 1.5em;\r
}\r
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.imageblock, div.exampleblock, div.verseblock,\r
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
div.admonitionblock {\r
margin-top: 1.0em;\r
margin-left: 1.0em;\r
margin-right: 10%;\r
border-left: 5px solid #f0f0f0;\r
- color: #777777;\r
+ color: #888;\r
}\r
\r
div.quoteblock > div.attribution {\r
margin-bottom: 0.1em;\r
}\r
\r
-div.tableblock > table {\r
- border: 3px solid #527bbd;\r
-}\r
-thead, p.table.header {\r
- font-weight: bold;\r
- color: #527bbd;\r
-}\r
tfoot {\r
font-weight: bold;\r
}\r
td > div.verse {\r
white-space: pre;\r
}\r
-p.table {\r
- margin-top: 0;\r
-}\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
-div.tableblock > table[frame="void"] {\r
- border-style: none;\r
-}\r
-div.tableblock > table[frame="hsides"] {\r
- border-left-style: none;\r
- border-right-style: none;\r
-}\r
-div.tableblock > table[frame="vsides"] {\r
- border-top-style: none;\r
- border-bottom-style: none;\r
-}\r
-\r
\r
div.hdlist {\r
margin-top: 0.8em;\r
}\r
\r
@media print {\r
- div#footer-badges { display: none; }\r
+ #footer-badges { display: none; }\r
}\r
\r
-div#toc {\r
+#toc {\r
margin-bottom: 2.5em;\r
}\r
\r
-div#toctitle {\r
+#toctitle {\r
color: #527bbd;\r
font-size: 1.1em;\r
font-weight: bold;\r
font-size: 0.9em;\r
}\r
\r
+span.aqua { color: aqua; }\r
+span.black { color: black; }\r
+span.blue { color: blue; }\r
+span.fuchsia { color: fuchsia; }\r
+span.gray { color: gray; }\r
+span.green { color: green; }\r
+span.lime { color: lime; }\r
+span.maroon { color: maroon; }\r
+span.navy { color: navy; }\r
+span.olive { color: olive; }\r
+span.purple { color: purple; }\r
+span.red { color: red; }\r
+span.silver { color: silver; }\r
+span.teal { color: teal; }\r
+span.white { color: white; }\r
+span.yellow { color: yellow; }\r
+\r
+span.aqua-background { background: aqua; }\r
+span.black-background { background: black; }\r
+span.blue-background { background: blue; }\r
+span.fuchsia-background { background: fuchsia; }\r
+span.gray-background { background: gray; }\r
+span.green-background { background: green; }\r
+span.lime-background { background: lime; }\r
+span.maroon-background { background: maroon; }\r
+span.navy-background { background: navy; }\r
+span.olive-background { background: olive; }\r
+span.purple-background { background: purple; }\r
+span.red-background { background: red; }\r
+span.silver-background { background: silver; }\r
+span.teal-background { background: teal; }\r
+span.white-background { background: white; }\r
+span.yellow-background { background: yellow; }\r
+\r
+span.big { font-size: 2em; }\r
+span.small { font-size: 0.6em; }\r
+\r
+span.underline { text-decoration: underline; }\r
+span.overline { text-decoration: overline; }\r
+span.line-through { text-decoration: line-through; }\r
+\r
+\r
+/*\r
+ * xhtml11 specific\r
+ *\r
+ * */\r
+\r
+tt {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+div.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+div.tableblock > table {\r
+ border: 3px solid #527bbd;\r
+}\r
+thead, p.table.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.table {\r
+ margin-top: 0;\r
+}\r
+/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+div.tableblock > table[frame="void"] {\r
+ border-style: none;\r
+}\r
+div.tableblock > table[frame="hsides"] {\r
+ border-left-style: none;\r
+ border-right-style: none;\r
+}\r
+div.tableblock > table[frame="vsides"] {\r
+ border-top-style: none;\r
+ border-bottom-style: none;\r
+}\r
+\r
+\r
+/*\r
+ * html5 specific\r
+ *\r
+ * */\r
+\r
+.monospaced {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+table.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+thead, p.tableblock.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.tableblock {\r
+ margin-top: 0;\r
+}\r
+table.tableblock {\r
+ border-width: 3px;\r
+ border-spacing: 0px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+ border-collapse: collapse;\r
+}\r
+th.tableblock, td.tableblock {\r
+ border-width: 1px;\r
+ padding: 4px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+}\r
+\r
+table.tableblock.frame-topbot {\r
+ border-left-style: hidden;\r
+ border-right-style: hidden;\r
+}\r
+table.tableblock.frame-sides {\r
+ border-top-style: hidden;\r
+ border-bottom-style: hidden;\r
+}\r
+table.tableblock.frame-none {\r
+ border-style: hidden;\r
+}\r
+\r
+th.tableblock.halign-left, td.tableblock.halign-left {\r
+ text-align: left;\r
+}\r
+th.tableblock.halign-center, td.tableblock.halign-center {\r
+ text-align: center;\r
+}\r
+th.tableblock.halign-right, td.tableblock.halign-right {\r
+ text-align: right;\r
+}\r
+\r
+th.tableblock.valign-top, td.tableblock.valign-top {\r
+ vertical-align: top;\r
+}\r
+th.tableblock.valign-middle, td.tableblock.valign-middle {\r
+ vertical-align: middle;\r
+}\r
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
+ vertical-align: bottom;\r
+}\r
+\r
+\r
+/*\r
+ * manpage specific\r
+ *\r
+ * */\r
+\r
+body.manpage h1 {\r
+ padding-top: 0.5em;\r
+ padding-bottom: 0.5em;\r
+ border-top: 2px solid silver;\r
+ border-bottom: 2px solid silver;\r
+}\r
+body.manpage h2 {\r
+ border-style: none;\r
+}\r
+body.manpage div.sectionbody {\r
+ margin-left: 3em;\r
+}\r
+\r
+@media print {\r
+ body.manpage div#toc { display: none; }\r
+}\r
</style>\r
<script type="text/javascript">\r
/*<![CDATA[*/\r
-window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
var asciidoc = { // Namespace.\r
\r
/////////////////////////////////////////////////////////////////////\r
}\r
\r
var toc = document.getElementById("toc");\r
+ if (!toc) {\r
+ return;\r
+ }\r
+\r
+ // Delete existing TOC entries in case we're reloading the TOC.\r
+ var tocEntriesToRemove = [];\r
+ var i;\r
+ for (i = 0; i < toc.childNodes.length; i++) {\r
+ var entry = toc.childNodes[i];\r
+ if (entry.nodeName == 'div'\r
+ && entry.getAttribute("class")\r
+ && entry.getAttribute("class").match(/^toclevel/))\r
+ tocEntriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+ toc.removeChild(tocEntriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild TOC entries.\r
var entries = tocEntries(document.getElementById("content"), toclevels);\r
for (var i = 0; i < entries.length; ++i) {\r
var entry = entries[i];\r
*/\r
\r
footnotes: function () {\r
- var cont = document.getElementById("content");\r
+ // Delete existing footnote entries in case we're reloading the footnodes.\r
+ var i;\r
var noteholder = document.getElementById("footnotes");\r
+ if (!noteholder) {\r
+ return;\r
+ }\r
+ var entriesToRemove = [];\r
+ for (i = 0; i < noteholder.childNodes.length; i++) {\r
+ var entry = noteholder.childNodes[i];\r
+ if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")\r
+ entriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < entriesToRemove.length; i++) {\r
+ noteholder.removeChild(entriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild footnote entries.\r
+ var cont = document.getElementById("content");\r
var spans = cont.getElementsByTagName("span");\r
var refs = {};\r
var n = 0;\r
for (i=0; i<spans.length; i++) {\r
if (spans[i].className == "footnote") {\r
n++;\r
- // Use [\s\S] in place of . so multi-line matches work.\r
- // Because JavaScript has no s (dotall) regex flag.\r
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ var note = spans[i].getAttribute("data-note");\r
+ if (!note) {\r
+ // Use [\s\S] in place of . so multi-line matches work.\r
+ // Because JavaScript has no s (dotall) regex flag.\r
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ spans[i].innerHTML =\r
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ spans[i].setAttribute("data-note", note);\r
+ }\r
noteholder.innerHTML +=\r
"<div class='footnote' id='_footnote_" + n + "'>" +\r
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
n + "</a>. " + note + "</div>";\r
- spans[i].innerHTML =\r
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
- "' title='View footnote' class='footnote'>" + n + "</a>]";\r
var id =spans[i].getAttribute("id");\r
if (id != null) refs["#"+id] = n;\r
}\r
}\r
}\r
}\r
+},\r
+\r
+install: function(toclevels) {\r
+ var timerId;\r
+\r
+ function reinstall() {\r
+ asciidoc.footnotes();\r
+ if (toclevels) {\r
+ asciidoc.toc(toclevels);\r
+ }\r
+ }\r
+\r
+ function reinstallAndRemoveTimer() {\r
+ clearInterval(timerId);\r
+ reinstall();\r
+ }\r
+\r
+ timerId = setInterval(reinstall, 500);\r
+ if (document.addEventListener)\r
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+ else\r
+ window.onload = reinstallAndRemoveTimer;\r
}\r
\r
}\r
+asciidoc.install(2);\r
/*]]>*/\r
</script>\r
</head>\r
<body class="article">\r
<div id="header">\r
<h1>ccache news</h1>\r
-<span id="revnumber">version 3.1.7</span>\r
+<span id="revnumber">version 3.1.8</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
</div>\r
<div id="content">\r
<div class="sect1">\r
+<h2 id="_ccache_3_1_8">ccache 3.1.8</h2>\r
+<div class="sectionbody">\r
+<div class="paragraph"><p>Release date: 2012-08-11</p></div>\r
+<div class="sect2">\r
+<h3 id="_new_features_and_improvements">New features and improvements</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Made paths to dependency files relative in order to increase cache hits.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Added work-around to make ccache work with buggy GCC 4.1 when creating a\r
+ pre-compiled header.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Clang plugins are now hashed to catch plugin upgrades.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_bug_fixes">Bug fixes</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Fixed crash when the current working directory has been removed.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed crash when stderr is closed.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Corrected a corner case when parsing backslash escapes in string\r
+ literals.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Paths are now correctly canonicalized when computing paths relative to\r
+ the base directory.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+<div class="sect2">\r
+<h3 id="_other">Other</h3>\r
+<div class="ulist"><ul>\r
+<li>\r
+<p>\r
+Made git version macro work when compiling outside of the source\r
+ directory.\r
+</p>\r
+</li>\r
+<li>\r
+<p>\r
+Fixed <tt>static_assert</tt> macro definition clash with GCC 4.7.\r
+</p>\r
+</li>\r
+</ul></div>\r
+</div>\r
+</div>\r
+</div>\r
+<div class="sect1">\r
<h2 id="_ccache_3_1_7">ccache 3.1.7</h2>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2012-01-08</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes">Bug fixes</h3>\r
+<h3 id="_bug_fixes_2">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_other">Other</h3>\r
+<h3 id="_other_2">Other</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2011-08-21</p></div>\r
<div class="sect2">\r
-<h3 id="_new_features_and_improvements">New features and improvements</h3>\r
+<h3 id="_new_features_and_improvements_2">New features and improvements</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_2">Bug fixes</h3>\r
+<h3 id="_bug_fixes_3">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2011-05-29</p></div>\r
<div class="sect2">\r
-<h3 id="_new_features_and_improvements_2">New features and improvements</h3>\r
+<h3 id="_new_features_and_improvements_3">New features and improvements</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_3">Bug fixes</h3>\r
+<h3 id="_bug_fixes_4">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2011-01-09</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_4">Bug fixes</h3>\r
+<h3 id="_bug_fixes_5">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-11-28</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_5">Bug fixes</h3>\r
+<h3 id="_bug_fixes_6">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_other_2">Other</h3>\r
+<h3 id="_other_3">Other</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-11-21</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_6">Bug fixes</h3>\r
+<h3 id="_bug_fixes_7">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_other_3">Other</h3>\r
+<h3 id="_other_4">Other</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-11-07</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_7">Bug fixes</h3>\r
+<h3 id="_bug_fixes_8">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_other_4">Other</h3>\r
+<h3 id="_other_5">Other</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-09-16</p></div>\r
<div class="sect2">\r
-<h3 id="_new_features_and_improvements_3">New features and improvements</h3>\r
+<h3 id="_new_features_and_improvements_4">New features and improvements</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_8">Bug fixes</h3>\r
+<h3 id="_bug_fixes_9">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_other_5">Other</h3>\r
+<h3 id="_other_6">Other</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div class="sectionbody">\r
<div class="paragraph"><p>Release date: 2010-07-15</p></div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_9">Bug fixes</h3>\r
+<h3 id="_bug_fixes_10">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_new_features_and_improvements_4">New features and improvements</h3>\r
+<h3 id="_new_features_and_improvements_5">New features and improvements</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
</ul></div>\r
</div>\r
<div class="sect2">\r
-<h3 id="_bug_fixes_10">Bug fixes</h3>\r
+<h3 id="_bug_fixes_11">Bug fixes</h3>\r
<div class="ulist"><ul>\r
<li>\r
<p>\r
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.1.7<br />\r
-Last updated 2012-01-08 15:37:31 CET\r
+Version 3.1.8<br />\r
+Last updated 2012-08-11 10:57:17 CEST\r
</div>\r
</div>\r
</body>\r
===========
+ccache 3.1.8
+------------
+Release date: 2012-08-11
+
+
+New features and improvements
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+ - Made paths to dependency files relative in order to increase cache hits.
+ - Added work-around to make ccache work with buggy GCC 4.1 when creating a
+ pre-compiled header.
+ - Clang plugins are now hashed to catch plugin upgrades.
+
+
+Bug fixes
+~~~~~~~~~
+
+ - Fixed crash when the current working directory has been removed.
+ - Fixed crash when stderr is closed.
+ - Corrected a corner case when parsing backslash escapes in string
+ literals.
+ - Paths are now correctly canonicalized when computing paths relative to
+ the base directory.
+
+
+Other
+~~~~~
+
+ - Made git version macro work when compiling outside of the source
+ directory.
+ - Fixed `static_assert` macro definition clash with GCC 4.7.
+
+
ccache 3.1.7
------------
Release date: 2012-01-08
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
<head>\r
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 8.6.3" />\r
+<meta name="generator" content="AsciiDoc 8.6.6" />\r
<title>ccache README</title>\r
<style type="text/css">\r
-/* Sans-serif font. */\r
+/* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
+\r
+/* Default font. */\r
+body {\r
+ font-family: Georgia,serif;\r
+}\r
+\r
+/* Title font. */\r
h1, h2, h3, h4, h5, h6,\r
div.title, caption.title,\r
thead, p.table.header,\r
-div#toctitle,\r
-span#author, span#revnumber, span#revdate, span#revremark,\r
-div#footer {\r
+#toctitle,\r
+#author, #revnumber, #revdate, #revremark,\r
+#footer {\r
font-family: Arial,Helvetica,sans-serif;\r
}\r
\r
-/* Serif font. */\r
-div.sectionbody {\r
- font-family: Georgia,"Times New Roman",Times,serif;\r
-}\r
-\r
-/* Monospace font. */\r
-tt {\r
- font-size: inherit;\r
-}\r
-\r
body {\r
margin: 1em 5% 1em 5%;\r
}\r
color: #083194;\r
}\r
\r
-tt {\r
- font-size: inherit;\r
- color: navy;\r
-}\r
-\r
h1, h2, h3, h4, h5, h6 {\r
color: #527bbd;\r
margin-top: 1.2em;\r
h3 + * {\r
clear: left;\r
}\r
+h5 {\r
+ font-size: 1.0em;\r
+}\r
\r
div.sectionbody {\r
margin-left: 0;\r
margin: 0;\r
}\r
\r
-span#author {\r
+#author {\r
color: #527bbd;\r
font-weight: bold;\r
font-size: 1.1em;\r
}\r
-span#email {\r
+#email {\r
}\r
-span#revnumber, span#revdate, span#revremark {\r
+#revnumber, #revdate, #revremark {\r
}\r
\r
-div#footer {\r
+#footer {\r
font-size: small;\r
border-top: 2px solid silver;\r
padding-top: 0.5em;\r
margin-top: 4.0em;\r
}\r
-div#footer-text {\r
+#footer-text {\r
float: left;\r
padding-bottom: 0.5em;\r
}\r
-div#footer-badges {\r
+#footer-badges {\r
float: right;\r
padding-bottom: 0.5em;\r
}\r
\r
-div#preamble {\r
+#preamble {\r
margin-top: 1.5em;\r
margin-bottom: 1.5em;\r
}\r
-div.tableblock, div.imageblock, div.exampleblock, div.verseblock,\r
+div.imageblock, div.exampleblock, div.verseblock,\r
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
div.admonitionblock {\r
margin-top: 1.0em;\r
margin-left: 1.0em;\r
margin-right: 10%;\r
border-left: 5px solid #f0f0f0;\r
- color: #777777;\r
+ color: #888;\r
}\r
\r
div.quoteblock > div.attribution {\r
margin-bottom: 0.1em;\r
}\r
\r
-div.tableblock > table {\r
- border: 3px solid #527bbd;\r
-}\r
-thead, p.table.header {\r
- font-weight: bold;\r
- color: #527bbd;\r
-}\r
tfoot {\r
font-weight: bold;\r
}\r
td > div.verse {\r
white-space: pre;\r
}\r
-p.table {\r
- margin-top: 0;\r
-}\r
-/* Because the table frame attribute is overriden by CSS in most browsers. */\r
-div.tableblock > table[frame="void"] {\r
- border-style: none;\r
-}\r
-div.tableblock > table[frame="hsides"] {\r
- border-left-style: none;\r
- border-right-style: none;\r
-}\r
-div.tableblock > table[frame="vsides"] {\r
- border-top-style: none;\r
- border-bottom-style: none;\r
-}\r
-\r
\r
div.hdlist {\r
margin-top: 0.8em;\r
}\r
\r
@media print {\r
- div#footer-badges { display: none; }\r
+ #footer-badges { display: none; }\r
}\r
\r
-div#toc {\r
+#toc {\r
margin-bottom: 2.5em;\r
}\r
\r
-div#toctitle {\r
+#toctitle {\r
color: #527bbd;\r
font-size: 1.1em;\r
font-weight: bold;\r
font-size: 0.9em;\r
}\r
\r
+span.aqua { color: aqua; }\r
+span.black { color: black; }\r
+span.blue { color: blue; }\r
+span.fuchsia { color: fuchsia; }\r
+span.gray { color: gray; }\r
+span.green { color: green; }\r
+span.lime { color: lime; }\r
+span.maroon { color: maroon; }\r
+span.navy { color: navy; }\r
+span.olive { color: olive; }\r
+span.purple { color: purple; }\r
+span.red { color: red; }\r
+span.silver { color: silver; }\r
+span.teal { color: teal; }\r
+span.white { color: white; }\r
+span.yellow { color: yellow; }\r
+\r
+span.aqua-background { background: aqua; }\r
+span.black-background { background: black; }\r
+span.blue-background { background: blue; }\r
+span.fuchsia-background { background: fuchsia; }\r
+span.gray-background { background: gray; }\r
+span.green-background { background: green; }\r
+span.lime-background { background: lime; }\r
+span.maroon-background { background: maroon; }\r
+span.navy-background { background: navy; }\r
+span.olive-background { background: olive; }\r
+span.purple-background { background: purple; }\r
+span.red-background { background: red; }\r
+span.silver-background { background: silver; }\r
+span.teal-background { background: teal; }\r
+span.white-background { background: white; }\r
+span.yellow-background { background: yellow; }\r
+\r
+span.big { font-size: 2em; }\r
+span.small { font-size: 0.6em; }\r
+\r
+span.underline { text-decoration: underline; }\r
+span.overline { text-decoration: overline; }\r
+span.line-through { text-decoration: line-through; }\r
+\r
+\r
+/*\r
+ * xhtml11 specific\r
+ *\r
+ * */\r
+\r
+tt {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+div.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+div.tableblock > table {\r
+ border: 3px solid #527bbd;\r
+}\r
+thead, p.table.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.table {\r
+ margin-top: 0;\r
+}\r
+/* Because the table frame attribute is overriden by CSS in most browsers. */\r
+div.tableblock > table[frame="void"] {\r
+ border-style: none;\r
+}\r
+div.tableblock > table[frame="hsides"] {\r
+ border-left-style: none;\r
+ border-right-style: none;\r
+}\r
+div.tableblock > table[frame="vsides"] {\r
+ border-top-style: none;\r
+ border-bottom-style: none;\r
+}\r
+\r
+\r
+/*\r
+ * html5 specific\r
+ *\r
+ * */\r
+\r
+.monospaced {\r
+ font-family: monospace;\r
+ font-size: inherit;\r
+ color: navy;\r
+}\r
+\r
+table.tableblock {\r
+ margin-top: 1.0em;\r
+ margin-bottom: 1.5em;\r
+}\r
+thead, p.tableblock.header {\r
+ font-weight: bold;\r
+ color: #527bbd;\r
+}\r
+p.tableblock {\r
+ margin-top: 0;\r
+}\r
+table.tableblock {\r
+ border-width: 3px;\r
+ border-spacing: 0px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+ border-collapse: collapse;\r
+}\r
+th.tableblock, td.tableblock {\r
+ border-width: 1px;\r
+ padding: 4px;\r
+ border-style: solid;\r
+ border-color: #527bbd;\r
+}\r
+\r
+table.tableblock.frame-topbot {\r
+ border-left-style: hidden;\r
+ border-right-style: hidden;\r
+}\r
+table.tableblock.frame-sides {\r
+ border-top-style: hidden;\r
+ border-bottom-style: hidden;\r
+}\r
+table.tableblock.frame-none {\r
+ border-style: hidden;\r
+}\r
+\r
+th.tableblock.halign-left, td.tableblock.halign-left {\r
+ text-align: left;\r
+}\r
+th.tableblock.halign-center, td.tableblock.halign-center {\r
+ text-align: center;\r
+}\r
+th.tableblock.halign-right, td.tableblock.halign-right {\r
+ text-align: right;\r
+}\r
+\r
+th.tableblock.valign-top, td.tableblock.valign-top {\r
+ vertical-align: top;\r
+}\r
+th.tableblock.valign-middle, td.tableblock.valign-middle {\r
+ vertical-align: middle;\r
+}\r
+th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
+ vertical-align: bottom;\r
+}\r
+\r
+\r
+/*\r
+ * manpage specific\r
+ *\r
+ * */\r
+\r
+body.manpage h1 {\r
+ padding-top: 0.5em;\r
+ padding-bottom: 0.5em;\r
+ border-top: 2px solid silver;\r
+ border-bottom: 2px solid silver;\r
+}\r
+body.manpage h2 {\r
+ border-style: none;\r
+}\r
+body.manpage div.sectionbody {\r
+ margin-left: 3em;\r
+}\r
+\r
+@media print {\r
+ body.manpage div#toc { display: none; }\r
+}\r
</style>\r
<script type="text/javascript">\r
/*<![CDATA[*/\r
-window.onload = function(){asciidoc.footnotes(); asciidoc.toc(2);}\r
var asciidoc = { // Namespace.\r
\r
/////////////////////////////////////////////////////////////////////\r
}\r
\r
var toc = document.getElementById("toc");\r
+ if (!toc) {\r
+ return;\r
+ }\r
+\r
+ // Delete existing TOC entries in case we're reloading the TOC.\r
+ var tocEntriesToRemove = [];\r
+ var i;\r
+ for (i = 0; i < toc.childNodes.length; i++) {\r
+ var entry = toc.childNodes[i];\r
+ if (entry.nodeName == 'div'\r
+ && entry.getAttribute("class")\r
+ && entry.getAttribute("class").match(/^toclevel/))\r
+ tocEntriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < tocEntriesToRemove.length; i++) {\r
+ toc.removeChild(tocEntriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild TOC entries.\r
var entries = tocEntries(document.getElementById("content"), toclevels);\r
for (var i = 0; i < entries.length; ++i) {\r
var entry = entries[i];\r
*/\r
\r
footnotes: function () {\r
- var cont = document.getElementById("content");\r
+ // Delete existing footnote entries in case we're reloading the footnodes.\r
+ var i;\r
var noteholder = document.getElementById("footnotes");\r
+ if (!noteholder) {\r
+ return;\r
+ }\r
+ var entriesToRemove = [];\r
+ for (i = 0; i < noteholder.childNodes.length; i++) {\r
+ var entry = noteholder.childNodes[i];\r
+ if (entry.nodeName == 'div' && entry.getAttribute("class") == "footnote")\r
+ entriesToRemove.push(entry);\r
+ }\r
+ for (i = 0; i < entriesToRemove.length; i++) {\r
+ noteholder.removeChild(entriesToRemove[i]);\r
+ }\r
+\r
+ // Rebuild footnote entries.\r
+ var cont = document.getElementById("content");\r
var spans = cont.getElementsByTagName("span");\r
var refs = {};\r
var n = 0;\r
for (i=0; i<spans.length; i++) {\r
if (spans[i].className == "footnote") {\r
n++;\r
- // Use [\s\S] in place of . so multi-line matches work.\r
- // Because JavaScript has no s (dotall) regex flag.\r
- note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ var note = spans[i].getAttribute("data-note");\r
+ if (!note) {\r
+ // Use [\s\S] in place of . so multi-line matches work.\r
+ // Because JavaScript has no s (dotall) regex flag.\r
+ note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
+ spans[i].innerHTML =\r
+ "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
+ "' title='View footnote' class='footnote'>" + n + "</a>]";\r
+ spans[i].setAttribute("data-note", note);\r
+ }\r
noteholder.innerHTML +=\r
"<div class='footnote' id='_footnote_" + n + "'>" +\r
"<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
n + "</a>. " + note + "</div>";\r
- spans[i].innerHTML =\r
- "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
- "' title='View footnote' class='footnote'>" + n + "</a>]";\r
var id =spans[i].getAttribute("id");\r
if (id != null) refs["#"+id] = n;\r
}\r
}\r
}\r
}\r
+},\r
+\r
+install: function(toclevels) {\r
+ var timerId;\r
+\r
+ function reinstall() {\r
+ asciidoc.footnotes();\r
+ if (toclevels) {\r
+ asciidoc.toc(toclevels);\r
+ }\r
+ }\r
+\r
+ function reinstallAndRemoveTimer() {\r
+ clearInterval(timerId);\r
+ reinstall();\r
+ }\r
+\r
+ timerId = setInterval(reinstall, 500);\r
+ if (document.addEventListener)\r
+ document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
+ else\r
+ window.onload = reinstallAndRemoveTimer;\r
}\r
\r
}\r
+asciidoc.install(2);\r
/*]]>*/\r
</script>\r
</head>\r
<body class="article">\r
<div id="header">\r
<h1>ccache README</h1>\r
-<span id="revnumber">version 3.1.7</span>\r
+<span id="revnumber">version 3.1.8</span>\r
<div id="toc">
<div id="toctitle">Table of Contents</div>
<noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
<div id="footnotes"><hr /></div>\r
<div id="footer">\r
<div id="footer-text">\r
-Version 3.1.7<br />\r
-Last updated 2011-09-17 23:53:29 CEST\r
+Version 3.1.8<br />\r
+Last updated 2012-01-09 20:53:18 CET\r
</div>\r
</div>\r
</body>\r
'\" t
.\" Title: ccache
.\" Author: [see the "Author" section]
-.\" Generator: DocBook XSL Stylesheets v1.75.2 <http://docbook.sf.net/>
-.\" Date: 01/08/2012
+.\" Generator: DocBook XSL Stylesheets v1.76.1 <http://docbook.sf.net/>
+.\" Date: 08/11/2012
.\" Manual: ccache Manual
-.\" Source: ccache 3.1.7
+.\" Source: ccache 3.1.8
.\" Language: English
.\"
-.TH "CCACHE" "1" "01/08/2012" "ccache 3\&.1\&.7" "ccache Manual"
+.TH "CCACHE" "1" "08/11/2012" "ccache 3\&.1\&.8" "ccache Manual"
.\" -----------------------------------------------------------------
.\" * Define some portability stuff
.\" -----------------------------------------------------------------
}
/*
- * Make a relative path from CCACHE_BASEDIR to path. Takes over ownership of
- * path. Caller frees.
+ * Make a relative path from current working directory to path if CCACHE_PREFIX
+ * is a prefix of path. Takes over ownership of path. Caller frees.
*/
static char *
make_relative_path(char *path)
{
- char *relpath;
+ char *relpath, *canon_path;
if (!base_dir || !str_startswith(path, base_dir)) {
return path;
}
+ if (!current_working_dir) {
+ char *cwd = get_cwd();
+ if (cwd) {
+ current_working_dir = x_realpath(cwd);
+ free(cwd);
+ }
+ if (!current_working_dir) {
+ cc_log("Unable to determine current working directory: %s",
+ strerror(errno));
+ failed();
+ }
+ }
+
+ canon_path = x_realpath(path);
+ if (canon_path) {
+ free(path);
+ path = canon_path;
+ } else {
+ /* path doesn't exist, so leave it as it is. */
+ }
+
relpath = get_relative_path(current_working_dir, path);
free(path);
return relpath;
continue;
}
+ if (str_eq(args->argv[i], "-Xclang")
+ && i + 3 < args->argc
+ && str_eq(args->argv[i+1], "-load")
+ && str_eq(args->argv[i+2], "-Xclang")
+ && stat(args->argv[i+3], &st) == 0) {
+ hash_delimiter(hash, "plugin");
+ hash_compiler(hash, &st, args->argv[i+3], false);
+ continue;
+ }
+
/* All other arguments are included in the hash. */
hash_delimiter(hash, "arg");
hash_string(hash, args->argv[i]);
result = false;
goto out;
}
- output_obj = argv[i+1];
+ output_obj = make_relative_path(x_strdup(argv[i+1]));
i++;
continue;
}
/* alternate form of -o, with no space */
if (str_startswith(argv[i], "-o")) {
- output_obj = &argv[i][2];
+ output_obj = make_relative_path(x_strdup(&argv[i][2]));
continue;
}
}
if (str_startswith(argv[i], "-MF")) {
char *arg;
+ bool separate_argument = (strlen(argv[i]) == 3);
dependency_filename_specified = true;
free(output_dep);
- args_add(dep_args, argv[i]);
- if (strlen(argv[i]) == 3) {
+ if (separate_argument) {
/* -MF arg */
if (i >= argc - 1) {
cc_log("Missing argument to %s", argv[i]);
goto out;
}
arg = argv[i + 1];
- args_add(dep_args, argv[i + 1]);
i++;
} else {
/* -MFarg */
arg = &argv[i][3];
}
output_dep = make_relative_path(x_strdup(arg));
+ /* Keep the format of the args the same */
+ if (separate_argument) {
+ args_add(dep_args, "-MF");
+ args_add(dep_args, output_dep);
+ } else {
+ char *option = format("-MF%s", output_dep);
+ args_add(dep_args, option);
+ free(option);
+ }
continue;
}
if (str_startswith(argv[i], "-MQ") || str_startswith(argv[i], "-MT")) {
+ char *relpath;
dependency_target_specified = true;
- args_add(dep_args, argv[i]);
if (strlen(argv[i]) == 3) {
/* -MQ arg or -MT arg */
if (i >= argc - 1) {
result = false;
goto out;
}
- args_add(dep_args, argv[i + 1]);
+ args_add(dep_args, argv[i]);
+ relpath = make_relative_path(x_strdup(argv[i + 1]));
+ args_add(dep_args, relpath);
+ free(relpath);
i++;
+ } else {
+ char *arg_opt;
+ char *option;
+ arg_opt = x_strndup(argv[i], 3);
+ relpath = make_relative_path(x_strdup(argv[i] + 3));
+ option = format("%s%s", arg_opt, relpath);
+ args_add(dep_args, option);
+ free(arg_opt);
+ free(relpath);
+ free(option);
}
continue;
}
output_is_precompiled_header =
actual_language && strstr(actual_language, "-header") != NULL;
- if (!found_c_opt && !output_is_precompiled_header) {
- cc_log("No -c option found");
- /* I find that having a separate statistic for autoconf tests is useful,
- as they are the dominant form of "called for link" in many cases */
- if (strstr(input_file, "conftest.")) {
- stats_update(STATS_CONFTEST);
+ if (!found_c_opt) {
+ if (output_is_precompiled_header) {
+ args_add(stripped_args, "-c");
} else {
- stats_update(STATS_LINK);
+ cc_log("No -c option found");
+ /* I find that having a separate statistic for autoconf tests is useful,
+ as they are the dominant form of "called for link" in many cases */
+ if (strstr(input_file, "conftest.")) {
+ stats_update(STATS_CONFTEST);
+ } else {
+ stats_update(STATS_LINK);
+ }
+ result = false;
+ goto out;
}
- result = false;
- goto out;
}
if (!actual_language) {
base_dir = NULL;
args_free(orig_args); orig_args = NULL;
free(input_file); input_file = NULL;
- output_obj = NULL;
+ free(output_obj); output_obj = NULL;
free(output_dep); output_dep = NULL;
free(cached_obj_hash); cached_obj_hash = NULL;
free(cached_obj); cached_obj = NULL;
return result;
}
+/* Make a copy of stderr that will not be cached, so things like
+ distcc can send networking errors to it. */
+static void
+setup_uncached_err(void)
+{
+ char *buf;
+ int uncached_fd;
+
+ uncached_fd = dup(2);
+ if (uncached_fd == -1) {
+ cc_log("dup(2) failed: %s", strerror(errno));
+ failed();
+ }
+
+ /* leak a pointer to the environment */
+ buf = format("UNCACHED_ERR_FD=%d", uncached_fd);
+
+ if (putenv(buf) == -1) {
+ cc_log("putenv failed: %s", strerror(errno));
+ failed();
+ }
+}
+
/* the main ccache driver function */
static void
ccache(int argc, char *argv[])
struct args *compiler_args;
find_compiler(argc, argv);
+ setup_uncached_err();
if (getenv("CCACHE_DISABLE")) {
cc_log("ccache is disabled");
return 0;
}
-
-/* Make a copy of stderr that will not be cached, so things like
- distcc can send networking errors to it. */
-static void
-setup_uncached_err(void)
-{
- char *buf;
- int uncached_fd;
-
- uncached_fd = dup(2);
- if (uncached_fd == -1) {
- cc_log("dup(2) failed: %s", strerror(errno));
- failed();
- }
-
- /* leak a pointer to the environment */
- buf = format("UNCACHED_ERR_FD=%d", uncached_fd);
-
- if (putenv(buf) == -1) {
- cc_log("putenv failed: %s", strerror(errno));
- failed();
- }
-}
-
int
ccache_main(int argc, char *argv[])
{
}
}
- current_working_dir = get_cwd();
- if (!current_working_dir) {
- cc_log("Could not determine current working directory");
- failed();
- }
cache_dir = getenv("CCACHE_DIR");
if (cache_dir) {
cache_dir = x_strdup(cache_dir);
compile_preprocessed_source_code = !getenv("CCACHE_CPP2");
- setup_uncached_err();
-
/* make sure the cache dir exists */
if (create_dir(cache_dir) != 0) {
fprintf(stderr,
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.67.
+# Generated by GNU Autoconf 2.68.
#
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
# We cannot yet assume a decent shell, so we have to provide a
# neutralization value for shells without unset; and this also
# works around shells that cannot unset nonexistent variables.
+ # Preserve -v and -x to the replacement shell.
BASH_ENV=/dev/null
ENV=/dev/null
(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV
export CONFIG_SHELL
- exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+ case $- in # ((((
+ *v*x* | *x*v* ) as_opts=-vx ;;
+ *v* ) as_opts=-v ;;
+ *x* ) as_opts=-x ;;
+ * ) as_opts= ;;
+ esac
+ exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"}
fi
if test x$as_have_required = xno; then :
$as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2
expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
$as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2
- : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}"
;;
esac
if $ac_init_version; then
cat <<\_ACEOF
configure
-generated by GNU Autoconf 2.67
+generated by GNU Autoconf 2.68
Copyright (C) 2010 Free Software Foundation, Inc.
This configure script is free software; the Free Software Foundation
ac_retval=1
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_compile
ac_retval=1
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_cpp
# interfere with the next link command; also delete a directory that is
# left behind by Apple's compiler. We do this before executing the actions.
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_link
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
eval "$3=no"
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_type
ac_retval=$ac_status
fi
rm -rf conftest.dSYM conftest_ipa8_conftest.oo
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
as_fn_set_status $ac_retval
} # ac_fn_c_try_run
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_compile
ac_fn_c_check_header_mongrel ()
{
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
- if eval "test \"\${$3+set}\"" = set; then :
+ if eval \${$3+:} false; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
fi
eval ac_res=\$$3
esac
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
eval "$3=\$ac_header_compiler"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
fi
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_header_mongrel
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5
$as_echo_n "checking for $2... " >&6; }
-if eval "test \"\${$3+set}\"" = set; then :
+if eval \${$3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
eval ac_res=\$$3
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_func
as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5
$as_echo_n "checking for $2.$3... " >&6; }
-if eval "test \"\${$4+set}\"" = set; then :
+if eval \${$4+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
eval ac_res=\$$4
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
$as_echo "$ac_res" >&6; }
- eval $as_lineno_stack; test "x$as_lineno_stack" = x && { as_lineno=; unset as_lineno;}
+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
} # ac_fn_c_check_member
cat >config.log <<_ACEOF
running configure, to aid debugging if configure makes a mistake.
It was created by $as_me, which was
-generated by GNU Autoconf 2.67. Invocation command line was
+generated by GNU Autoconf 2.68. Invocation command line was
$ $0 $@
|| { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "failed to load site script $ac_site_file
-See \`config.log' for more details" "$LINENO" 5 ; }
+See \`config.log' for more details" "$LINENO" 5; }
fi
done
set dummy ${ac_tool_prefix}gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
set dummy gcc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
set dummy ${ac_tool_prefix}cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
set dummy cc; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
set dummy $ac_tool_prefix$ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_CC+set}" = set; then :
+if ${ac_cv_prog_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$CC"; then
set dummy $ac_prog; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_CC+set}" = set; then :
+if ${ac_cv_prog_ac_ct_CC+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_CC"; then
test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "no acceptable C compiler found in \$PATH
-See \`config.log' for more details" "$LINENO" 5 ; }
+See \`config.log' for more details" "$LINENO" 5; }
# Provide some information about the compiler.
$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error 77 "C compiler cannot create executables
-See \`config.log' for more details" "$LINENO" 5 ; }
+See \`config.log' for more details" "$LINENO" 5; }
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of executables: cannot compile and link
-See \`config.log' for more details" "$LINENO" 5 ; }
+See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest conftest$ac_cv_exeext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot run C compiled programs.
If you meant to cross compile, use \`--host'.
-See \`config.log' for more details" "$LINENO" 5 ; }
+See \`config.log' for more details" "$LINENO" 5; }
fi
fi
fi
ac_clean_files=$ac_clean_files_save
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5
$as_echo_n "checking for suffix of object files... " >&6; }
-if test "${ac_cv_objext+set}" = set; then :
+if ${ac_cv_objext+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "cannot compute suffix of object files: cannot compile
-See \`config.log' for more details" "$LINENO" 5 ; }
+See \`config.log' for more details" "$LINENO" 5; }
fi
rm -f conftest.$ac_cv_objext conftest.$ac_ext
fi
ac_objext=$OBJEXT
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5
$as_echo_n "checking whether we are using the GNU C compiler... " >&6; }
-if test "${ac_cv_c_compiler_gnu+set}" = set; then :
+if ${ac_cv_c_compiler_gnu+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
ac_save_CFLAGS=$CFLAGS
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5
$as_echo_n "checking whether $CC accepts -g... " >&6; }
-if test "${ac_cv_prog_cc_g+set}" = set; then :
+if ${ac_cv_prog_cc_g+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_save_c_werror_flag=$ac_c_werror_flag
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5
$as_echo_n "checking for $CC option to accept ISO C89... " >&6; }
-if test "${ac_cv_prog_cc_c89+set}" = set; then :
+if ${ac_cv_prog_cc_c89+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_prog_cc_c89=no
CPP=
fi
if test -z "$CPP"; then
- if test "${ac_cv_prog_CPP+set}" = set; then :
+ if ${ac_cv_prog_CPP+:} false; then :
$as_echo_n "(cached) " >&6
else
# Double quotes because CPP needs to be expanded
{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
as_fn_error $? "C preprocessor \"$CPP\" fails sanity check
-See \`config.log' for more details" "$LINENO" 5 ; }
+See \`config.log' for more details" "$LINENO" 5; }
fi
ac_ext=c
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5
$as_echo_n "checking for a BSD-compatible install... " >&6; }
if test -z "$INSTALL"; then
-if test "${ac_cv_path_install+set}" = set; then :
+if ${ac_cv_path_install+:} false; then :
$as_echo_n "(cached) " >&6
else
as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
set dummy ${ac_tool_prefix}ranlib; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_RANLIB+set}" = set; then :
+if ${ac_cv_prog_RANLIB+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$RANLIB"; then
set dummy ranlib; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then :
+if ${ac_cv_prog_ac_ct_RANLIB+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_RANLIB"; then
set dummy ${ac_tool_prefix}ar; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_AR+set}" = set; then :
+if ${ac_cv_prog_AR+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$AR"; then
set dummy ar; ac_word=$2
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
$as_echo_n "checking for $ac_word... " >&6; }
-if test "${ac_cv_prog_ac_ct_AR+set}" = set; then :
+if ${ac_cv_prog_ac_ct_AR+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -n "$ac_ct_AR"; then
as_ac_Header=`$as_echo "ac_cv_header_dirent_$ac_hdr" | $as_tr_sh`
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_hdr that defines DIR" >&5
$as_echo_n "checking for $ac_hdr that defines DIR... " >&6; }
-if eval "test \"\${$as_ac_Header+set}\"" = set; then :
+if eval \${$as_ac_Header+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
if test $ac_header_dirent = dirent.h; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
$as_echo_n "checking for library containing opendir... " >&6; }
-if test "${ac_cv_search_opendir+set}" = set; then :
+if ${ac_cv_search_opendir+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
- if test "${ac_cv_search_opendir+set}" = set; then :
+ if ${ac_cv_search_opendir+:} false; then :
break
fi
done
-if test "${ac_cv_search_opendir+set}" = set; then :
+if ${ac_cv_search_opendir+:} false; then :
else
ac_cv_search_opendir=no
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing opendir" >&5
$as_echo_n "checking for library containing opendir... " >&6; }
-if test "${ac_cv_search_opendir+set}" = set; then :
+if ${ac_cv_search_opendir+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
- if test "${ac_cv_search_opendir+set}" = set; then :
+ if ${ac_cv_search_opendir+:} false; then :
break
fi
done
-if test "${ac_cv_search_opendir+set}" = set; then :
+if ${ac_cv_search_opendir+:} false; then :
else
ac_cv_search_opendir=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5
$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; }
-if test "${ac_cv_header_time+set}" = set; then :
+if ${ac_cv_header_time+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5
$as_echo_n "checking for grep that handles long lines and -e... " >&6; }
-if test "${ac_cv_path_GREP+set}" = set; then :
+if ${ac_cv_path_GREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if test -z "$GREP"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
$as_echo_n "checking for egrep... " >&6; }
-if test "${ac_cv_path_EGREP+set}" = set; then :
+if ${ac_cv_path_EGREP+:} false; then :
$as_echo_n "(cached) " >&6
else
if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
$as_echo_n "checking for ANSI C header files... " >&6; }
-if test "${ac_cv_header_stdc+set}" = set; then :
+if ${ac_cv_header_stdc+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for stdbool.h that conforms to C99" >&5
$as_echo_n "checking for stdbool.h that conforms to C99... " >&6; }
-if test "${ac_cv_header_stdbool_h+set}" = set; then :
+if ${ac_cv_header_stdbool_h+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
char b[false == 0 ? 1 : -1];
char c[__bool_true_false_are_defined == 1 ? 1 : -1];
char d[(bool) 0.5 == true ? 1 : -1];
- bool e = &s;
+ /* See body of main program for 'e'. */
char f[(_Bool) 0.0 == false ? 1 : -1];
char g[true];
char h[sizeof (_Bool)];
_Bool n[m];
char o[sizeof n == m * sizeof n[0] ? 1 : -1];
char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1];
-# if defined __xlc__ || defined __GNUC__
- /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
- reported by James Lemley on 2005-10-05; see
- http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
- This test is not quite right, since xlc is allowed to
- reject this program, as the initializer for xlcbug is
- not one of the forms that C requires support for.
- However, doing the test right would require a runtime
- test, and that would make cross-compilation harder.
- Let us hope that IBM fixes the xlc bug, and also adds
- support for this kind of constant expression. In the
- meantime, this test will reject xlc, which is OK, since
- our stdbool.h substitute should suffice. We also test
- this with GCC, where it should work, to detect more
- quickly whether someone messes up the test in the
- future. */
- char digs[] = "0123456789";
- int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
-# endif
/* Catch a bug in an HP-UX C compiler. See
http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html
http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html
main ()
{
+ bool e = &s;
*pq |= q;
*pq |= ! q;
/* Refer to every declared value, to avoid compiler optimizations. */
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5
$as_echo "$ac_cv_header_stdbool_h" >&6; }
ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default"
-if test "x$ac_cv_type__Bool" = x""yes; then :
+if test "x$ac_cv_type__Bool" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE__BOOL 1
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sys/wait.h that is POSIX.1 compatible" >&5
$as_echo_n "checking for sys/wait.h that is POSIX.1 compatible... " >&6; }
-if test "${ac_cv_header_sys_wait_h+set}" = set; then :
+if ${ac_cv_header_sys_wait_h+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
for ac_header in termios.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "termios.h" "ac_cv_header_termios_h" "$ac_includes_default"
-if test "x$ac_cv_header_termios_h" = x""yes; then :
+if test "x$ac_cv_header_termios_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_TERMIOS_H 1
_ACEOF
for ac_func in gethostname
do :
ac_fn_c_check_func "$LINENO" "gethostname" "ac_cv_func_gethostname"
-if test "x$ac_cv_func_gethostname" = x""yes; then :
+if test "x$ac_cv_func_gethostname" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GETHOSTNAME 1
_ACEOF
for ac_func in getopt_long
do :
ac_fn_c_check_func "$LINENO" "getopt_long" "ac_cv_func_getopt_long"
-if test "x$ac_cv_func_getopt_long" = x""yes; then :
+if test "x$ac_cv_func_getopt_long" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GETOPT_LONG 1
_ACEOF
for ac_func in getpwuid
do :
ac_fn_c_check_func "$LINENO" "getpwuid" "ac_cv_func_getpwuid"
-if test "x$ac_cv_func_getpwuid" = x""yes; then :
+if test "x$ac_cv_func_getpwuid" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GETPWUID 1
_ACEOF
for ac_func in gettimeofday
do :
ac_fn_c_check_func "$LINENO" "gettimeofday" "ac_cv_func_gettimeofday"
-if test "x$ac_cv_func_gettimeofday" = x""yes; then :
+if test "x$ac_cv_func_gettimeofday" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_GETTIMEOFDAY 1
_ACEOF
for ac_func in mkstemp
do :
ac_fn_c_check_func "$LINENO" "mkstemp" "ac_cv_func_mkstemp"
-if test "x$ac_cv_func_mkstemp" = x""yes; then :
+if test "x$ac_cv_func_mkstemp" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_MKSTEMP 1
_ACEOF
for ac_func in realpath
do :
ac_fn_c_check_func "$LINENO" "realpath" "ac_cv_func_realpath"
-if test "x$ac_cv_func_realpath" = x""yes; then :
+if test "x$ac_cv_func_realpath" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_REALPATH 1
_ACEOF
for ac_func in strndup
do :
ac_fn_c_check_func "$LINENO" "strndup" "ac_cv_func_strndup"
-if test "x$ac_cv_func_strndup" = x""yes; then :
+if test "x$ac_cv_func_strndup" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRNDUP 1
_ACEOF
for ac_func in utimes
do :
ac_fn_c_check_func "$LINENO" "utimes" "ac_cv_func_utimes"
-if test "x$ac_cv_func_utimes" = x""yes; then :
+if test "x$ac_cv_func_utimes" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_UTIMES 1
_ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for compar_fn_t in stdlib.h" >&5
$as_echo_n "checking for compar_fn_t in stdlib.h... " >&6; }
-if test "${ccache_cv_COMPAR_FN_T+set}" = set; then :
+if ${ccache_cv_COMPAR_FN_T+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_fn_c_check_func "$LINENO" "vsnprintf" "ac_cv_func_vsnprintf"
-if test "x$ac_cv_func_vsnprintf" = x""yes; then :
+if test "x$ac_cv_func_vsnprintf" = xyes; then :
hw_cv_func_vsnprintf=yes
else
hw_cv_func_vsnprintf=no
if test "$hw_cv_func_vsnprintf" = yes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether vsnprintf is C99 compliant" >&5
$as_echo_n "checking whether vsnprintf is C99 compliant... " >&6; }
-if test "${hw_cv_func_vsnprintf_c99+set}" = set; then :
+if ${hw_cv_func_vsnprintf_c99+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
ac_fn_c_check_member "$LINENO" "struct lconv" "decimal_point" "ac_cv_member_struct_lconv_decimal_point" "#include <locale.h>
"
-if test "x$ac_cv_member_struct_lconv_decimal_point" = x""yes; then :
+if test "x$ac_cv_member_struct_lconv_decimal_point" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_LCONV_DECIMAL_POINT 1
fi
ac_fn_c_check_member "$LINENO" "struct lconv" "thousands_sep" "ac_cv_member_struct_lconv_thousands_sep" "#include <locale.h>
"
-if test "x$ac_cv_member_struct_lconv_thousands_sep" = x""yes; then :
+if test "x$ac_cv_member_struct_lconv_thousands_sep" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STRUCT_LCONV_THOUSANDS_SEP 1
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for long long int" >&5
$as_echo_n "checking for long long int... " >&6; }
-if test "${ac_cv_type_long_long_int+set}" = set; then :
+if ${ac_cv_type_long_long_int+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for unsigned long long int" >&5
$as_echo_n "checking for unsigned long long int... " >&6; }
-if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then :
+if ${ac_cv_type_unsigned_long_long_int+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
fi
ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default"
-if test "x$ac_cv_type_size_t" = x""yes; then :
+if test "x$ac_cv_type_size_t" = xyes; then :
else
ac_fn_c_check_type "$LINENO" "intmax_t" "ac_cv_type_intmax_t" "$ac_includes_default"
-if test "x$ac_cv_type_intmax_t" = x""yes; then :
+if test "x$ac_cv_type_intmax_t" = xyes; then :
$as_echo "#define HAVE_INTMAX_T 1" >>confdefs.h
ac_fn_c_check_type "$LINENO" "uintmax_t" "ac_cv_type_uintmax_t" "$ac_includes_default"
-if test "x$ac_cv_type_uintmax_t" = x""yes; then :
+if test "x$ac_cv_type_uintmax_t" = xyes; then :
$as_echo "#define HAVE_UINTMAX_T 1" >>confdefs.h
ac_fn_c_check_type "$LINENO" "uintptr_t" "ac_cv_type_uintptr_t" "$ac_includes_default"
-if test "x$ac_cv_type_uintptr_t" = x""yes; then :
+if test "x$ac_cv_type_uintptr_t" = xyes; then :
$as_echo "#define HAVE_UINTPTR_T 1" >>confdefs.h
ac_fn_c_check_type "$LINENO" "ptrdiff_t" "ac_cv_type_ptrdiff_t" "$ac_includes_default"
-if test "x$ac_cv_type_ptrdiff_t" = x""yes; then :
+if test "x$ac_cv_type_ptrdiff_t" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_PTRDIFF_T 1
for ac_func in localeconv
do :
ac_fn_c_check_func "$LINENO" "localeconv" "ac_cv_func_localeconv"
-if test "x$ac_cv_func_localeconv" = x""yes; then :
+if test "x$ac_cv_func_localeconv" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LOCALECONV 1
_ACEOF
if test "x$_hw_cv_func_xprintf_replace_done" != xyes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then :
+if ${ac_cv_c_const+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
ac_fn_c_check_func "$LINENO" "snprintf" "ac_cv_func_snprintf"
-if test "x$ac_cv_func_snprintf" = x""yes; then :
+if test "x$ac_cv_func_snprintf" = xyes; then :
hw_cv_func_snprintf=yes
else
hw_cv_func_snprintf=no
if test "$hw_cv_func_snprintf" = yes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether snprintf is C99 compliant" >&5
$as_echo_n "checking whether snprintf is C99 compliant... " >&6; }
-if test "${hw_cv_func_snprintf_c99+set}" = set; then :
+if ${hw_cv_func_snprintf_c99+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
if test "x$_hw_cv_func_xprintf_replace_done" != xyes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then :
+if ${ac_cv_c_const+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
for ac_func in vasprintf
do :
ac_fn_c_check_func "$LINENO" "vasprintf" "ac_cv_func_vasprintf"
-if test "x$ac_cv_func_vasprintf" = x""yes; then :
+if test "x$ac_cv_func_vasprintf" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_VASPRINTF 1
_ACEOF
for ac_header in stdlib.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default"
-if test "x$ac_cv_header_stdlib_h" = x""yes; then :
+if test "x$ac_cv_header_stdlib_h" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_STDLIB_H 1
_ACEOF
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for va_copy" >&5
$as_echo_n "checking for va_copy... " >&6; }
-if test "${hw_cv_func_va_copy+set}" = set; then :
+if ${hw_cv_func_va_copy+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for __va_copy" >&5
$as_echo_n "checking for __va_copy... " >&6; }
-if test "${hw_cv_func___va_copy+set}" = set; then :
+if ${hw_cv_func___va_copy+:} false; then :
$as_echo_n "(cached) " >&6
else
if test "$cross_compiling" = yes; then :
if test "x$_hw_cv_func_xprintf_replace_done" != xyes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then :
+if ${ac_cv_c_const+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
for ac_func in asprintf
do :
ac_fn_c_check_func "$LINENO" "asprintf" "ac_cv_func_asprintf"
-if test "x$ac_cv_func_asprintf" = x""yes; then :
+if test "x$ac_cv_func_asprintf" = xyes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_ASPRINTF 1
_ACEOF
if test "x$_hw_cv_func_xprintf_replace_done" != xyes; then :
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5
$as_echo_n "checking for an ANSI C-conforming const... " >&6; }
-if test "${ac_cv_c_const+set}" = set; then :
+if ${ac_cv_c_const+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cos" >&5
$as_echo_n "checking for library containing cos... " >&6; }
-if test "${ac_cv_search_cos+set}" = set; then :
+if ${ac_cv_search_cos+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_func_search_save_LIBS=$LIBS
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext
- if test "${ac_cv_search_cos+set}" = set; then :
+ if ${ac_cv_search_cos+:} false; then :
break
fi
done
-if test "${ac_cv_search_cos+set}" = set; then :
+if ${ac_cv_search_cos+:} false; then :
else
ac_cv_search_cos=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for zlib >= 1.2.3" >&5
$as_echo_n "checking for zlib >= 1.2.3... " >&6; }
-if test "${ccache_cv_zlib_1_2_3+set}" = set; then :
+if ${ccache_cv_zlib_1_2_3+:} false; then :
$as_echo_n "(cached) " >&6
else
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
$as_echo "$ccache_cv_zlib_1_2_3" >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for gzdopen in -lz" >&5
$as_echo_n "checking for gzdopen in -lz... " >&6; }
-if test "${ac_cv_lib_z_gzdopen+set}" = set; then :
+if ${ac_cv_lib_z_gzdopen+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_gzdopen" >&5
$as_echo "$ac_cv_lib_z_gzdopen" >&6; }
-if test "x$ac_cv_lib_z_gzdopen" = x""yes; then :
+if test "x$ac_cv_lib_z_gzdopen" = xyes; then :
true
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inline" >&5
$as_echo_n "checking for inline... " >&6; }
-if test "${ac_cv_c_inline+set}" = set; then :
+if ${ac_cv_c_inline+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_cv_c_inline=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extern inline" >&5
$as_echo_n "checking for extern inline... " >&6; }
-if test "${ac_cv_c_extern_inline+set}" = set; then :
+if ${ac_cv_c_extern_inline+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_config_files="$ac_config_files dev.mk"
include_dev_mk='include dev.mk'
- version=`(git describe --dirty 2>/dev/null || echo vunknown) | sed -e 's/v//' -e 's/-/+/' -e 's/-/_/g'`
+ version=`(git --git-dir=$srcdir/.git describe --dirty 2>/dev/null || echo vunknown) | sed -e 's/v//' -e 's/-/+/' -e 's/-/_/g'`
echo "const char CCACHE_VERSION[] = \"$version\";" >version.c
elif test ! -f $srcdir/version.c; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unable to determine ccache version" >&5
:end' >>confcache
if diff "$cache_file" confcache >/dev/null 2>&1; then :; else
if test -w "$cache_file"; then
- test "x$cache_file" != "x/dev/null" &&
+ if test "x$cache_file" != "x/dev/null"; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5
$as_echo "$as_me: updating cache $cache_file" >&6;}
- cat confcache >$cache_file
+ if test ! -f "$cache_file" || test -h "$cache_file"; then
+ cat confcache >"$cache_file"
+ else
+ case $cache_file in #(
+ */* | ?:*)
+ mv -f confcache "$cache_file"$$ &&
+ mv -f "$cache_file"$$ "$cache_file" ;; #(
+ *)
+ mv -f confcache "$cache_file" ;;
+ esac
+ fi
+ fi
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5
$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;}
-: ${CONFIG_STATUS=./config.status}
+: "${CONFIG_STATUS=./config.status}"
ac_write_fail=0
ac_clean_files_save=$ac_clean_files
ac_clean_files="$ac_clean_files $CONFIG_STATUS"
IFS=" "" $as_nl"
# Find who we are. Look in the path if we contain no directory separator.
+as_myself=
case $0 in #((
*[\\/]* ) as_myself=$0 ;;
*) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
# values after options handling.
ac_log="
This file was extended by $as_me, which was
-generated by GNU Autoconf 2.67. Invocation command line was
+generated by GNU Autoconf 2.68. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
CONFIG_HEADERS = $CONFIG_HEADERS
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
ac_cs_version="\\
config.status
-configured by $0, generated by GNU Autoconf 2.67,
+configured by $0, generated by GNU Autoconf 2.68,
with options \\"\$ac_cs_config\\"
Copyright (C) 2010 Free Software Foundation, Inc.
"dev.mk") CONFIG_FILES="$CONFIG_FILES dev.mk" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5 ;;
+ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;;
esac
done
# after its creation but before its name has been assigned to `$tmp'.
$debug ||
{
- tmp=
+ tmp= ac_tmp=
trap 'exit_status=$?
- { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+ : "${ac_tmp:=$tmp}"
+ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status
' 0
trap 'as_fn_exit 1' 1 2 13 15
}
{
tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
- test -n "$tmp" && test -d "$tmp"
+ test -d "$tmp"
} ||
{
tmp=./conf$$-$RANDOM
(umask 077 && mkdir "$tmp")
} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5
+ac_tmp=$tmp
# Set up the scripts for CONFIG_FILES section.
# No need to generate them if there are no CONFIG_FILES.
ac_cs_awk_cr=$ac_cr
fi
-echo 'BEGIN {' >"$tmp/subs1.awk" &&
+echo 'BEGIN {' >"$ac_tmp/subs1.awk" &&
_ACEOF
rm -f conf$$subs.sh
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
-cat >>"\$tmp/subs1.awk" <<\\_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK &&
_ACEOF
sed -n '
h
rm -f conf$$subs.awk
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
_ACAWK
-cat >>"\$tmp/subs1.awk" <<_ACAWK &&
+cat >>"\$ac_tmp/subs1.awk" <<_ACAWK &&
for (key in S) S_is_set[key] = 1
FS = "\a"
sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g"
else
cat
-fi < "$tmp/subs1.awk" > "$tmp/subs.awk" \
+fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \
|| as_fn_error $? "could not setup config files machinery" "$LINENO" 5
_ACEOF
# No need to generate them if there are no CONFIG_HEADERS.
# This happens for instance with `./config.status Makefile'.
if test -n "$CONFIG_HEADERS"; then
-cat >"$tmp/defines.awk" <<\_ACAWK ||
+cat >"$ac_tmp/defines.awk" <<\_ACAWK ||
BEGIN {
_ACEOF
# handling of long lines.
ac_delim='%!_!# '
for ac_last_try in false false :; do
- ac_t=`sed -n "/$ac_delim/p" confdefs.h`
- if test -z "$ac_t"; then
+ ac_tt=`sed -n "/$ac_delim/p" confdefs.h`
+ if test -z "$ac_tt"; then
break
elif $ac_last_try; then
as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5
esac
case $ac_mode$ac_tag in
:[FHL]*:*);;
- :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5 ;;
+ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;;
:[FH]-) ac_tag=-:-;;
:[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
esac
for ac_f
do
case $ac_f in
- -) ac_f="$tmp/stdin";;
+ -) ac_f="$ac_tmp/stdin";;
*) # Look for the file first in the build tree, then in the source tree
# (if the path is not absolute). The absolute path cannot be DOS-style,
# because $ac_f cannot contain `:'.
[\\/$]*) false;;
*) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
esac ||
- as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5 ;;
+ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;;
esac
case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac
as_fn_append ac_file_inputs " '$ac_f'"
esac
case $ac_tag in
- *:-:* | *:-) cat >"$tmp/stdin" \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
+ *:-:* | *:-) cat >"$ac_tmp/stdin" \
+ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;;
esac
;;
esac
s&@INSTALL@&$ac_INSTALL&;t t
$ac_datarootdir_hack
"
-eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$tmp/subs.awk" >$tmp/out \
- || as_fn_error $? "could not create $ac_file" "$LINENO" 5
+eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \
+ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5
test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
- { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
- { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \
+ "$ac_tmp/out"`; test -z "$ac_out"; } &&
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&5
$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir'
which seems to be undefined. Please make sure it is defined" >&2;}
- rm -f "$tmp/stdin"
+ rm -f "$ac_tmp/stdin"
case $ac_file in
- -) cat "$tmp/out" && rm -f "$tmp/out";;
- *) rm -f "$ac_file" && mv "$tmp/out" "$ac_file";;
+ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";;
+ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";;
esac \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
;;
if test x"$ac_file" != x-; then
{
$as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs"
- } >"$tmp/config.h" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs"
+ } >"$ac_tmp/config.h" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
- if diff "$ac_file" "$tmp/config.h" >/dev/null 2>&1; then
+ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5
$as_echo "$as_me: $ac_file is unchanged" >&6;}
else
rm -f "$ac_file"
- mv "$tmp/config.h" "$ac_file" \
+ mv "$ac_tmp/config.h" "$ac_file" \
|| as_fn_error $? "could not create $ac_file" "$LINENO" 5
fi
else
$as_echo "/* $configure_input */" \
- && eval '$AWK -f "$tmp/defines.awk"' "$ac_file_inputs" \
+ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \
|| as_fn_error $? "could not create -" "$LINENO" 5
fi
;;
/*
- * Copyright (C) 2009-2010 Joel Rosdahl
+ * Copyright (C) 2009-2010, 2012 Joel Rosdahl
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
size_t hashbuflen = 0;
int result = HASH_SOURCE_CODE_OK;
extern unsigned sloppiness;
+ bool seen_backslash;
p = str;
end = str + len;
case '*':
HASH(' '); /* Don't paste tokens together when removing the comment. */
p += 2;
- while (p+1 < end
- && (*p != '*' || *(p+1) != '/')) {
+ while (p+1 < end && (*p != '*' || *(p+1) != '/')) {
if (*p == '\n') {
/* Keep line numbers. */
HASH('\n');
case '/':
p += 2;
- while (p < end
- && (*p != '\n' || *(p-1) == '\\')) {
+ while (p < end && (*p != '\n' || *(p-1) == '\\')) {
p++;
}
continue;
case '"':
HASH(*p);
p++;
- while (p < end && (*p != '"' || *(p-1) == '\\')) {
+ seen_backslash = false;
+ while (p < end) {
+ if (seen_backslash) {
+ seen_backslash = false;
+ } else if (*p == '"') {
+ /* Found end of string. */
+ HASH(*p);
+ p++;
+ break;
+ } else if (*p == '\\') {
+ seen_backslash = true;
+ }
HASH(*p);
p++;
}
static const uint8_t VERSION = 0;
static const uint32_t MAX_MANIFEST_ENTRIES = 100;
-#define static_assert(e) do { enum { static_assert__ = 1/(e) }; } while (0)
+#define ccache_static_assert(e) \
+ do { enum { ccache_static_assert__ = 1/(e) }; } while (0)
struct file_info {
/* Index to n_files. */
static unsigned int
hash_from_file_info(void *key)
{
- static_assert(sizeof(struct file_info) == 24); /* No padding. */
+ ccache_static_assert(sizeof(struct file_info) == 24); /* No padding. */
return murmurhashneutral2(key, sizeof(struct file_info), 0);
}
if grep `pwd` stderr.txt >/dev/null 2>&1; then
test_failed "Base dir (`pwd`) found in stderr:\n`cat stderr.txt`"
fi
+
+ ##################################################################
+ # Check that -MF, -MQ and -MT arguments with absolute paths are rewritten
+ # to relative.
+ testname="-MF/-MQ/-MT with absolute paths"
+ for option in MF "MF " MQ "MQ " MT "MT "; do
+ $CCACHE -Cz >/dev/null
+ cd dir1
+ CCACHE_BASEDIR="`pwd`" $CCACHE $COMPILER -I`pwd`/include -MD -${option}`pwd`/test.d -c src/test.c
+ checkstat 'cache hit (direct)' 0
+ checkstat 'cache hit (preprocessed)' 0
+ checkstat 'cache miss' 1
+ cd ..
+
+ cd dir2
+ CCACHE_BASEDIR="`pwd`" $CCACHE $COMPILER -I`pwd`/include -MD -${option}`pwd`/test.d -c src/test.c
+ checkstat 'cache hit (direct)' 1
+ checkstat 'cache hit (preprocessed)' 0
+ checkstat 'cache miss' 1
+ cd ..
+ done
}
compression_suite() {
fi
testname="create .gch, no -c, -o"
- $CCACHE -z >/dev/null
+ $CCACHE -Cz >/dev/null
$CCACHE $COMPILER pch.h -o pch.gch
checkstat 'cache hit (direct)' 0
checkstat 'cache hit (preprocessed)' 0
/*
- * Copyright (C) 2010 Joel Rosdahl
+ * Copyright (C) 2010, 2012 Joel Rosdahl
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
CHECK(!hash_multicommand_output(&h2, "false; true", "not used"));
}
+TEST(hash_source_code_simple_case)
+{
+ struct mdfour h;
+ char input[] = "abc";
+ size_t input_len = strlen(input);
+ hash_start(&h);
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("a448017aaf21d8525fc10ae87aa6729d-3", hash_result(&h));
+}
+
+TEST(hash_source_code_with_c_style_comment)
+{
+ struct mdfour h;
+ char input[] = "a/*b*/c";
+ size_t input_len = strlen(input);
+
+ hash_start(&h);
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("1c2c87080ee03418fb1279e3b1f09a68-3", hash_result(&h));
+
+ input[3] = 'd';
+ hash_start(&h);
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("1c2c87080ee03418fb1279e3b1f09a68-3", hash_result(&h));
+}
+
+TEST(hash_source_code_with_cplusplus_style_comment)
+{
+ struct mdfour h;
+ char input[] = "a//b\nc";
+ size_t input_len = strlen(input);
+
+ hash_start(&h);
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("4a3fbbe3c140fa193227dba3814db6e6-3", hash_result(&h));
+
+ input[3] = 'd';
+ hash_start(&h);
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("4a3fbbe3c140fa193227dba3814db6e6-3", hash_result(&h));
+}
+
+TEST(hash_source_code_with_comment_inside_string)
+{
+ struct mdfour h;
+ char input[] = "a\"//b\"c";
+ size_t input_len = strlen(input);
+
+ hash_start(&h);
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("4c2fa74b0843d8f93df5c04c98ccb0a4-7", hash_result(&h));
+
+ input[4] = 'd';
+ hash_start(&h);
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("f0069218ec640008cbfa2d150c1061bb-7", hash_result(&h));
+}
+
+TEST(hash_source_code_with_quote_in_string)
+{
+ struct mdfour h;
+ char input[] = "a\"\\\"b//c\""; /* a"\"b//c" */
+ size_t input_len = strlen(input);
+
+ hash_start(&h);
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("c4e45e7a7f6f29b000a51f187dc4cf06-9", hash_result(&h));
+
+ hash_start(&h);
+ input[7] = 'd';
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("bef8fb852dddcee189b91b068a621c55-9", hash_result(&h));
+}
+
+TEST(hash_source_code_with_backslash_at_string_end)
+{
+ struct mdfour h;
+ char input[] = "a\"\\\\\"b//c"; /* a"\\"b//c */
+ size_t input_len = strlen(input);
+
+ hash_start(&h);
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("7f3ccf27edadad1b90cb2cffb59775d6-6", hash_result(&h));
+
+ input[input_len - 1] = 'd';
+ hash_source_code_string(&h, input, input_len, "");
+ CHECK_STR_EQ_FREE2("7f3ccf27edadad1b90cb2cffb59775d6-6", hash_result(&h));
+}
+
TEST_SUITE_END
/*
- * Copyright (C) 2010 Joel Rosdahl
+ * Copyright (C) 2010, 2012 Joel Rosdahl
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
CHECK_STR_EQ_FREE2("dir1/dir2", dirname("dir1/dir2/"));
}
+TEST(common_dir_prefix_length)
+{
+ CHECK_UNS_EQ(0, common_dir_prefix_length("", ""));
+ CHECK_UNS_EQ(0, common_dir_prefix_length("/", "/"));
+ CHECK_UNS_EQ(0, common_dir_prefix_length("/", "/b"));
+ CHECK_UNS_EQ(0, common_dir_prefix_length("/a", "/b"));
+ CHECK_UNS_EQ(2, common_dir_prefix_length("/a", "/a"));
+ CHECK_UNS_EQ(2, common_dir_prefix_length("/a", "/a/b"));
+ CHECK_UNS_EQ(2, common_dir_prefix_length("/a/b", "/a/c"));
+ CHECK_UNS_EQ(4, common_dir_prefix_length("/a/b", "/a/b"));
+}
+
+TEST(get_relative_path)
+{
+ CHECK_STR_EQ_FREE2("a", get_relative_path("/doesn't matter", "a"));
+ CHECK_STR_EQ_FREE2("a/b", get_relative_path("/doesn't matter", "a/b"));
+ CHECK_STR_EQ_FREE2(".", get_relative_path("/a", "/a"));
+ CHECK_STR_EQ_FREE2("..", get_relative_path("/a/b", "/a"));
+ CHECK_STR_EQ_FREE2("b", get_relative_path("/a", "/a/b"));
+ CHECK_STR_EQ_FREE2("b/c", get_relative_path("/a", "/a/b/c"));
+ CHECK_STR_EQ_FREE2("../c", get_relative_path("/a/b", "/a/c"));
+ CHECK_STR_EQ_FREE2("../c/d", get_relative_path("/a/b", "/a/c/d"));
+ CHECK_STR_EQ_FREE2("../../c/d", get_relative_path("/a/b/c", "/a/c/d"));
+ CHECK_STR_EQ_FREE2("../..", get_relative_path("/a/b", "/"));
+ CHECK_STR_EQ_FREE2("../../c", get_relative_path("/a/b", "/c"));
+ CHECK_STR_EQ_FREE2("a/b", get_relative_path("/", "/a/b"));
+}
+
TEST_SUITE_END
/*
* Compute the length of the longest directory path that is common to two
- * strings.
+ * paths. s1 is assumed to be the path to a directory.
*/
size_t
common_dir_prefix_length(const char *s1, const char *s2)
++p1;
++p2;
}
- while (p1 > s1 && ((*p1 && *p1 != '/' ) || (*p2 && *p2 != '/'))) {
+ if (*p2 == '/') {
+ /* s2 starts with "s1/". */
+ return p1 - s1;
+ }
+ if (!*p2) {
+ /* s2 is equal to s1. */
+ if (p2 == s2 + 1) {
+ /* Special case for s1 and s2 both being "/". */
+ return 0;
+ } else {
+ return p1 - s1;
+ }
+ }
+ /* Compute the common directory prefix */
+ while (p1 > s1 && *p1 != '/') {
p1--;
p2--;
}
}
/*
- * Compute a relative path from from to to. Caller frees.
+ * Compute a relative path from from (an absolute path to a directory) to to (a
+ * path). Assumes that both from and to are well-formed and canonical. Caller
+ * frees.
*/
char *
get_relative_path(const char *from, const char *to)
const char *p;
char *result;
+ assert(from && from[0] == '/');
+ assert(to);
+
if (!*to || *to != '/') {
return x_strdup(to);
}
result = x_strdup("");
common_prefix_len = common_dir_prefix_length(from, to);
- for (p = from + common_prefix_len; *p; p++) {
- if (*p == '/') {
- x_asprintf2(&result, "../%s", result);
+ if (common_prefix_len > 0 || !str_eq(from, "/")) {
+ for (p = from + common_prefix_len; *p; p++) {
+ if (*p == '/') {
+ x_asprintf2(&result, "../%s", result);
+ }
}
}
if (strlen(to) > common_prefix_len) {
- p = to + common_prefix_len + 1;
- while (*p == '/') {
- p++;
- }
- x_asprintf2(&result, "%s%s", result, p);
+ x_asprintf2(&result, "%s%s", result, to + common_prefix_len + 1);
}
i = strlen(result) - 1;
while (i >= 0 && result[i] == '/') {
-const char CCACHE_VERSION[] = "3.1.7";
+const char CCACHE_VERSION[] = "3.1.8";