Imported Upstream version 3.2.5
[platform/upstream/ccache.git] / INSTALL.html
1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"\r
2     "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">\r
3 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
4 <head>\r
5 <meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />\r
6 <meta name="generator" content="AsciiDoc 8.6.9" />\r
7 <title>ccache installation</title>\r
8 <style type="text/css">\r
9 /* Shared CSS for AsciiDoc xhtml11 and html5 backends */\r
10 \r
11 /* Default font. */\r
12 body {\r
13   font-family: Georgia,serif;\r
14 }\r
15 \r
16 /* Title font. */\r
17 h1, h2, h3, h4, h5, h6,\r
18 div.title, caption.title,\r
19 thead, p.table.header,\r
20 #toctitle,\r
21 #author, #revnumber, #revdate, #revremark,\r
22 #footer {\r
23   font-family: Arial,Helvetica,sans-serif;\r
24 }\r
25 \r
26 body {\r
27   margin: 1em 5% 1em 5%;\r
28 }\r
29 \r
30 a {\r
31   color: blue;\r
32   text-decoration: underline;\r
33 }\r
34 a:visited {\r
35   color: fuchsia;\r
36 }\r
37 \r
38 em {\r
39   font-style: italic;\r
40   color: navy;\r
41 }\r
42 \r
43 strong {\r
44   font-weight: bold;\r
45   color: #083194;\r
46 }\r
47 \r
48 h1, h2, h3, h4, h5, h6 {\r
49   color: #527bbd;\r
50   margin-top: 1.2em;\r
51   margin-bottom: 0.5em;\r
52   line-height: 1.3;\r
53 }\r
54 \r
55 h1, h2, h3 {\r
56   border-bottom: 2px solid silver;\r
57 }\r
58 h2 {\r
59   padding-top: 0.5em;\r
60 }\r
61 h3 {\r
62   float: left;\r
63 }\r
64 h3 + * {\r
65   clear: left;\r
66 }\r
67 h5 {\r
68   font-size: 1.0em;\r
69 }\r
70 \r
71 div.sectionbody {\r
72   margin-left: 0;\r
73 }\r
74 \r
75 hr {\r
76   border: 1px solid silver;\r
77 }\r
78 \r
79 p {\r
80   margin-top: 0.5em;\r
81   margin-bottom: 0.5em;\r
82 }\r
83 \r
84 ul, ol, li > p {\r
85   margin-top: 0;\r
86 }\r
87 ul > li     { color: #aaa; }\r
88 ul > li > * { color: black; }\r
89 \r
90 .monospaced, code, pre {\r
91   font-family: "Courier New", Courier, monospace;\r
92   font-size: inherit;\r
93   color: navy;\r
94   padding: 0;\r
95   margin: 0;\r
96 }\r
97 pre {\r
98   white-space: pre-wrap;\r
99 }\r
100 \r
101 #author {\r
102   color: #527bbd;\r
103   font-weight: bold;\r
104   font-size: 1.1em;\r
105 }\r
106 #email {\r
107 }\r
108 #revnumber, #revdate, #revremark {\r
109 }\r
110 \r
111 #footer {\r
112   font-size: small;\r
113   border-top: 2px solid silver;\r
114   padding-top: 0.5em;\r
115   margin-top: 4.0em;\r
116 }\r
117 #footer-text {\r
118   float: left;\r
119   padding-bottom: 0.5em;\r
120 }\r
121 #footer-badges {\r
122   float: right;\r
123   padding-bottom: 0.5em;\r
124 }\r
125 \r
126 #preamble {\r
127   margin-top: 1.5em;\r
128   margin-bottom: 1.5em;\r
129 }\r
130 div.imageblock, div.exampleblock, div.verseblock,\r
131 div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,\r
132 div.admonitionblock {\r
133   margin-top: 1.0em;\r
134   margin-bottom: 1.5em;\r
135 }\r
136 div.admonitionblock {\r
137   margin-top: 2.0em;\r
138   margin-bottom: 2.0em;\r
139   margin-right: 10%;\r
140   color: #606060;\r
141 }\r
142 \r
143 div.content { /* Block element content. */\r
144   padding: 0;\r
145 }\r
146 \r
147 /* Block element titles. */\r
148 div.title, caption.title {\r
149   color: #527bbd;\r
150   font-weight: bold;\r
151   text-align: left;\r
152   margin-top: 1.0em;\r
153   margin-bottom: 0.5em;\r
154 }\r
155 div.title + * {\r
156   margin-top: 0;\r
157 }\r
158 \r
159 td div.title:first-child {\r
160   margin-top: 0.0em;\r
161 }\r
162 div.content div.title:first-child {\r
163   margin-top: 0.0em;\r
164 }\r
165 div.content + div.title {\r
166   margin-top: 0.0em;\r
167 }\r
168 \r
169 div.sidebarblock > div.content {\r
170   background: #ffffee;\r
171   border: 1px solid #dddddd;\r
172   border-left: 4px solid #f0f0f0;\r
173   padding: 0.5em;\r
174 }\r
175 \r
176 div.listingblock > div.content {\r
177   border: 1px solid #dddddd;\r
178   border-left: 5px solid #f0f0f0;\r
179   background: #f8f8f8;\r
180   padding: 0.5em;\r
181 }\r
182 \r
183 div.quoteblock, div.verseblock {\r
184   padding-left: 1.0em;\r
185   margin-left: 1.0em;\r
186   margin-right: 10%;\r
187   border-left: 5px solid #f0f0f0;\r
188   color: #888;\r
189 }\r
190 \r
191 div.quoteblock > div.attribution {\r
192   padding-top: 0.5em;\r
193   text-align: right;\r
194 }\r
195 \r
196 div.verseblock > pre.content {\r
197   font-family: inherit;\r
198   font-size: inherit;\r
199 }\r
200 div.verseblock > div.attribution {\r
201   padding-top: 0.75em;\r
202   text-align: left;\r
203 }\r
204 /* DEPRECATED: Pre version 8.2.7 verse style literal block. */\r
205 div.verseblock + div.attribution {\r
206   text-align: left;\r
207 }\r
208 \r
209 div.admonitionblock .icon {\r
210   vertical-align: top;\r
211   font-size: 1.1em;\r
212   font-weight: bold;\r
213   text-decoration: underline;\r
214   color: #527bbd;\r
215   padding-right: 0.5em;\r
216 }\r
217 div.admonitionblock td.content {\r
218   padding-left: 0.5em;\r
219   border-left: 3px solid #dddddd;\r
220 }\r
221 \r
222 div.exampleblock > div.content {\r
223   border-left: 3px solid #dddddd;\r
224   padding-left: 0.5em;\r
225 }\r
226 \r
227 div.imageblock div.content { padding-left: 0; }\r
228 span.image img { border-style: none; vertical-align: text-bottom; }\r
229 a.image:visited { color: white; }\r
230 \r
231 dl {\r
232   margin-top: 0.8em;\r
233   margin-bottom: 0.8em;\r
234 }\r
235 dt {\r
236   margin-top: 0.5em;\r
237   margin-bottom: 0;\r
238   font-style: normal;\r
239   color: navy;\r
240 }\r
241 dd > *:first-child {\r
242   margin-top: 0.1em;\r
243 }\r
244 \r
245 ul, ol {\r
246     list-style-position: outside;\r
247 }\r
248 ol.arabic {\r
249   list-style-type: decimal;\r
250 }\r
251 ol.loweralpha {\r
252   list-style-type: lower-alpha;\r
253 }\r
254 ol.upperalpha {\r
255   list-style-type: upper-alpha;\r
256 }\r
257 ol.lowerroman {\r
258   list-style-type: lower-roman;\r
259 }\r
260 ol.upperroman {\r
261   list-style-type: upper-roman;\r
262 }\r
263 \r
264 div.compact ul, div.compact ol,\r
265 div.compact p, div.compact p,\r
266 div.compact div, div.compact div {\r
267   margin-top: 0.1em;\r
268   margin-bottom: 0.1em;\r
269 }\r
270 \r
271 tfoot {\r
272   font-weight: bold;\r
273 }\r
274 td > div.verse {\r
275   white-space: pre;\r
276 }\r
277 \r
278 div.hdlist {\r
279   margin-top: 0.8em;\r
280   margin-bottom: 0.8em;\r
281 }\r
282 div.hdlist tr {\r
283   padding-bottom: 15px;\r
284 }\r
285 dt.hdlist1.strong, td.hdlist1.strong {\r
286   font-weight: bold;\r
287 }\r
288 td.hdlist1 {\r
289   vertical-align: top;\r
290   font-style: normal;\r
291   padding-right: 0.8em;\r
292   color: navy;\r
293 }\r
294 td.hdlist2 {\r
295   vertical-align: top;\r
296 }\r
297 div.hdlist.compact tr {\r
298   margin: 0;\r
299   padding-bottom: 0;\r
300 }\r
301 \r
302 .comment {\r
303   background: yellow;\r
304 }\r
305 \r
306 .footnote, .footnoteref {\r
307   font-size: 0.8em;\r
308 }\r
309 \r
310 span.footnote, span.footnoteref {\r
311   vertical-align: super;\r
312 }\r
313 \r
314 #footnotes {\r
315   margin: 20px 0 20px 0;\r
316   padding: 7px 0 0 0;\r
317 }\r
318 \r
319 #footnotes div.footnote {\r
320   margin: 0 0 5px 0;\r
321 }\r
322 \r
323 #footnotes hr {\r
324   border: none;\r
325   border-top: 1px solid silver;\r
326   height: 1px;\r
327   text-align: left;\r
328   margin-left: 0;\r
329   width: 20%;\r
330   min-width: 100px;\r
331 }\r
332 \r
333 div.colist td {\r
334   padding-right: 0.5em;\r
335   padding-bottom: 0.3em;\r
336   vertical-align: top;\r
337 }\r
338 div.colist td img {\r
339   margin-top: 0.3em;\r
340 }\r
341 \r
342 @media print {\r
343   #footer-badges { display: none; }\r
344 }\r
345 \r
346 #toc {\r
347   margin-bottom: 2.5em;\r
348 }\r
349 \r
350 #toctitle {\r
351   color: #527bbd;\r
352   font-size: 1.1em;\r
353   font-weight: bold;\r
354   margin-top: 1.0em;\r
355   margin-bottom: 0.1em;\r
356 }\r
357 \r
358 div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {\r
359   margin-top: 0;\r
360   margin-bottom: 0;\r
361 }\r
362 div.toclevel2 {\r
363   margin-left: 2em;\r
364   font-size: 0.9em;\r
365 }\r
366 div.toclevel3 {\r
367   margin-left: 4em;\r
368   font-size: 0.9em;\r
369 }\r
370 div.toclevel4 {\r
371   margin-left: 6em;\r
372   font-size: 0.9em;\r
373 }\r
374 \r
375 span.aqua { color: aqua; }\r
376 span.black { color: black; }\r
377 span.blue { color: blue; }\r
378 span.fuchsia { color: fuchsia; }\r
379 span.gray { color: gray; }\r
380 span.green { color: green; }\r
381 span.lime { color: lime; }\r
382 span.maroon { color: maroon; }\r
383 span.navy { color: navy; }\r
384 span.olive { color: olive; }\r
385 span.purple { color: purple; }\r
386 span.red { color: red; }\r
387 span.silver { color: silver; }\r
388 span.teal { color: teal; }\r
389 span.white { color: white; }\r
390 span.yellow { color: yellow; }\r
391 \r
392 span.aqua-background { background: aqua; }\r
393 span.black-background { background: black; }\r
394 span.blue-background { background: blue; }\r
395 span.fuchsia-background { background: fuchsia; }\r
396 span.gray-background { background: gray; }\r
397 span.green-background { background: green; }\r
398 span.lime-background { background: lime; }\r
399 span.maroon-background { background: maroon; }\r
400 span.navy-background { background: navy; }\r
401 span.olive-background { background: olive; }\r
402 span.purple-background { background: purple; }\r
403 span.red-background { background: red; }\r
404 span.silver-background { background: silver; }\r
405 span.teal-background { background: teal; }\r
406 span.white-background { background: white; }\r
407 span.yellow-background { background: yellow; }\r
408 \r
409 span.big { font-size: 2em; }\r
410 span.small { font-size: 0.6em; }\r
411 \r
412 span.underline { text-decoration: underline; }\r
413 span.overline { text-decoration: overline; }\r
414 span.line-through { text-decoration: line-through; }\r
415 \r
416 div.unbreakable { page-break-inside: avoid; }\r
417 \r
418 \r
419 /*\r
420  * xhtml11 specific\r
421  *\r
422  * */\r
423 \r
424 div.tableblock {\r
425   margin-top: 1.0em;\r
426   margin-bottom: 1.5em;\r
427 }\r
428 div.tableblock > table {\r
429   border: 3px solid #527bbd;\r
430 }\r
431 thead, p.table.header {\r
432   font-weight: bold;\r
433   color: #527bbd;\r
434 }\r
435 p.table {\r
436   margin-top: 0;\r
437 }\r
438 /* Because the table frame attribute is overriden by CSS in most browsers. */\r
439 div.tableblock > table[frame="void"] {\r
440   border-style: none;\r
441 }\r
442 div.tableblock > table[frame="hsides"] {\r
443   border-left-style: none;\r
444   border-right-style: none;\r
445 }\r
446 div.tableblock > table[frame="vsides"] {\r
447   border-top-style: none;\r
448   border-bottom-style: none;\r
449 }\r
450 \r
451 \r
452 /*\r
453  * html5 specific\r
454  *\r
455  * */\r
456 \r
457 table.tableblock {\r
458   margin-top: 1.0em;\r
459   margin-bottom: 1.5em;\r
460 }\r
461 thead, p.tableblock.header {\r
462   font-weight: bold;\r
463   color: #527bbd;\r
464 }\r
465 p.tableblock {\r
466   margin-top: 0;\r
467 }\r
468 table.tableblock {\r
469   border-width: 3px;\r
470   border-spacing: 0px;\r
471   border-style: solid;\r
472   border-color: #527bbd;\r
473   border-collapse: collapse;\r
474 }\r
475 th.tableblock, td.tableblock {\r
476   border-width: 1px;\r
477   padding: 4px;\r
478   border-style: solid;\r
479   border-color: #527bbd;\r
480 }\r
481 \r
482 table.tableblock.frame-topbot {\r
483   border-left-style: hidden;\r
484   border-right-style: hidden;\r
485 }\r
486 table.tableblock.frame-sides {\r
487   border-top-style: hidden;\r
488   border-bottom-style: hidden;\r
489 }\r
490 table.tableblock.frame-none {\r
491   border-style: hidden;\r
492 }\r
493 \r
494 th.tableblock.halign-left, td.tableblock.halign-left {\r
495   text-align: left;\r
496 }\r
497 th.tableblock.halign-center, td.tableblock.halign-center {\r
498   text-align: center;\r
499 }\r
500 th.tableblock.halign-right, td.tableblock.halign-right {\r
501   text-align: right;\r
502 }\r
503 \r
504 th.tableblock.valign-top, td.tableblock.valign-top {\r
505   vertical-align: top;\r
506 }\r
507 th.tableblock.valign-middle, td.tableblock.valign-middle {\r
508   vertical-align: middle;\r
509 }\r
510 th.tableblock.valign-bottom, td.tableblock.valign-bottom {\r
511   vertical-align: bottom;\r
512 }\r
513 \r
514 \r
515 /*\r
516  * manpage specific\r
517  *\r
518  * */\r
519 \r
520 body.manpage h1 {\r
521   padding-top: 0.5em;\r
522   padding-bottom: 0.5em;\r
523   border-top: 2px solid silver;\r
524   border-bottom: 2px solid silver;\r
525 }\r
526 body.manpage h2 {\r
527   border-style: none;\r
528 }\r
529 body.manpage div.sectionbody {\r
530   margin-left: 3em;\r
531 }\r
532 \r
533 @media print {\r
534   body.manpage div#toc { display: none; }\r
535 }\r
536 \r
537 \r
538 </style>\r
539 <script type="text/javascript">\r
540 /*<![CDATA[*/\r
541 var asciidoc = {  // Namespace.\r
542 \r
543 /////////////////////////////////////////////////////////////////////\r
544 // Table Of Contents generator\r
545 /////////////////////////////////////////////////////////////////////\r
546 \r
547 /* Author: Mihai Bazon, September 2002\r
548  * http://students.infoiasi.ro/~mishoo\r
549  *\r
550  * Table Of Content generator\r
551  * Version: 0.4\r
552  *\r
553  * Feel free to use this script under the terms of the GNU General Public\r
554  * License, as long as you do not remove or alter this notice.\r
555  */\r
556 \r
557  /* modified by Troy D. Hanson, September 2006. License: GPL */\r
558  /* modified by Stuart Rackham, 2006, 2009. License: GPL */\r
559 \r
560 // toclevels = 1..4.\r
561 toc: function (toclevels) {\r
562 \r
563   function getText(el) {\r
564     var text = "";\r
565     for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
566       if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.\r
567         text += i.data;\r
568       else if (i.firstChild != null)\r
569         text += getText(i);\r
570     }\r
571     return text;\r
572   }\r
573 \r
574   function TocEntry(el, text, toclevel) {\r
575     this.element = el;\r
576     this.text = text;\r
577     this.toclevel = toclevel;\r
578   }\r
579 \r
580   function tocEntries(el, toclevels) {\r
581     var result = new Array;\r
582     var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');\r
583     // Function that scans the DOM tree for header elements (the DOM2\r
584     // nodeIterator API would be a better technique but not supported by all\r
585     // browsers).\r
586     var iterate = function (el) {\r
587       for (var i = el.firstChild; i != null; i = i.nextSibling) {\r
588         if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {\r
589           var mo = re.exec(i.tagName);\r
590           if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {\r
591             result[result.length] = new TocEntry(i, getText(i), mo[1]-1);\r
592           }\r
593           iterate(i);\r
594         }\r
595       }\r
596     }\r
597     iterate(el);\r
598     return result;\r
599   }\r
600 \r
601   var toc = document.getElementById("toc");\r
602   if (!toc) {\r
603     return;\r
604   }\r
605 \r
606   // Delete existing TOC entries in case we're reloading the TOC.\r
607   var tocEntriesToRemove = [];\r
608   var i;\r
609   for (i = 0; i < toc.childNodes.length; i++) {\r
610     var entry = toc.childNodes[i];\r
611     if (entry.nodeName.toLowerCase() == 'div'\r
612      && entry.getAttribute("class")\r
613      && entry.getAttribute("class").match(/^toclevel/))\r
614       tocEntriesToRemove.push(entry);\r
615   }\r
616   for (i = 0; i < tocEntriesToRemove.length; i++) {\r
617     toc.removeChild(tocEntriesToRemove[i]);\r
618   }\r
619 \r
620   // Rebuild TOC entries.\r
621   var entries = tocEntries(document.getElementById("content"), toclevels);\r
622   for (var i = 0; i < entries.length; ++i) {\r
623     var entry = entries[i];\r
624     if (entry.element.id == "")\r
625       entry.element.id = "_toc_" + i;\r
626     var a = document.createElement("a");\r
627     a.href = "#" + entry.element.id;\r
628     a.appendChild(document.createTextNode(entry.text));\r
629     var div = document.createElement("div");\r
630     div.appendChild(a);\r
631     div.className = "toclevel" + entry.toclevel;\r
632     toc.appendChild(div);\r
633   }\r
634   if (entries.length == 0)\r
635     toc.parentNode.removeChild(toc);\r
636 },\r
637 \r
638 \r
639 /////////////////////////////////////////////////////////////////////\r
640 // Footnotes generator\r
641 /////////////////////////////////////////////////////////////////////\r
642 \r
643 /* Based on footnote generation code from:\r
644  * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html\r
645  */\r
646 \r
647 footnotes: function () {\r
648   // Delete existing footnote entries in case we're reloading the footnodes.\r
649   var i;\r
650   var noteholder = document.getElementById("footnotes");\r
651   if (!noteholder) {\r
652     return;\r
653   }\r
654   var entriesToRemove = [];\r
655   for (i = 0; i < noteholder.childNodes.length; i++) {\r
656     var entry = noteholder.childNodes[i];\r
657     if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")\r
658       entriesToRemove.push(entry);\r
659   }\r
660   for (i = 0; i < entriesToRemove.length; i++) {\r
661     noteholder.removeChild(entriesToRemove[i]);\r
662   }\r
663 \r
664   // Rebuild footnote entries.\r
665   var cont = document.getElementById("content");\r
666   var spans = cont.getElementsByTagName("span");\r
667   var refs = {};\r
668   var n = 0;\r
669   for (i=0; i<spans.length; i++) {\r
670     if (spans[i].className == "footnote") {\r
671       n++;\r
672       var note = spans[i].getAttribute("data-note");\r
673       if (!note) {\r
674         // Use [\s\S] in place of . so multi-line matches work.\r
675         // Because JavaScript has no s (dotall) regex flag.\r
676         note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];\r
677         spans[i].innerHTML =\r
678           "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +\r
679           "' title='View footnote' class='footnote'>" + n + "</a>]";\r
680         spans[i].setAttribute("data-note", note);\r
681       }\r
682       noteholder.innerHTML +=\r
683         "<div class='footnote' id='_footnote_" + n + "'>" +\r
684         "<a href='#_footnoteref_" + n + "' title='Return to text'>" +\r
685         n + "</a>. " + note + "</div>";\r
686       var id =spans[i].getAttribute("id");\r
687       if (id != null) refs["#"+id] = n;\r
688     }\r
689   }\r
690   if (n == 0)\r
691     noteholder.parentNode.removeChild(noteholder);\r
692   else {\r
693     // Process footnoterefs.\r
694     for (i=0; i<spans.length; i++) {\r
695       if (spans[i].className == "footnoteref") {\r
696         var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");\r
697         href = href.match(/#.*/)[0];  // Because IE return full URL.\r
698         n = refs[href];\r
699         spans[i].innerHTML =\r
700           "[<a href='#_footnote_" + n +\r
701           "' title='View footnote' class='footnote'>" + n + "</a>]";\r
702       }\r
703     }\r
704   }\r
705 },\r
706 \r
707 install: function(toclevels) {\r
708   var timerId;\r
709 \r
710   function reinstall() {\r
711     asciidoc.footnotes();\r
712     if (toclevels) {\r
713       asciidoc.toc(toclevels);\r
714     }\r
715   }\r
716 \r
717   function reinstallAndRemoveTimer() {\r
718     clearInterval(timerId);\r
719     reinstall();\r
720   }\r
721 \r
722   timerId = setInterval(reinstall, 500);\r
723   if (document.addEventListener)\r
724     document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);\r
725   else\r
726     window.onload = reinstallAndRemoveTimer;\r
727 }\r
728 \r
729 }\r
730 asciidoc.install(2);\r
731 /*]]>*/\r
732 </script>\r
733 </head>\r
734 <body class="article">\r
735 <div id="header">\r
736 <h1>ccache installation</h1>\r
737 <span id="revnumber">version 3.2.4+101_g4218b81</span>\r
738 <div id="toc">
739   <div id="toctitle">Table of Contents</div>
740   <noscript><p><b>JavaScript must be enabled in your browser to display the table of contents.</b></p></noscript>
741 </div>\r
742 </div>\r
743 <div id="content">\r
744 <div class="sect1">\r
745 <h2 id="_building_code_from_a_release_archive">Building code from a release archive</h2>\r
746 <div class="sectionbody">\r
747 <div class="sect2">\r
748 <h3 id="_prerequisites">Prerequisites</h3>\r
749 <div class="paragraph"><p>To build ccache, you need:</p></div>\r
750 <div class="ulist"><ul>\r
751 <li>\r
752 <p>\r
753 A C compiler (for instance GCC)\r
754 </p>\r
755 </li>\r
756 </ul></div>\r
757 <div class="paragraph"><p>It is also recommended that you have:</p></div>\r
758 <div class="ulist"><ul>\r
759 <li>\r
760 <p>\r
761 zlib <a href="http://www.zlib.net">http://www.zlib.net</a> (if you don&#8217;t have zlib installed, ccache will\r
762   use a bundled copy)\r
763 </p>\r
764 </li>\r
765 </ul></div>\r
766 </div>\r
767 <div class="sect2">\r
768 <h3 id="_installation">Installation</h3>\r
769 <div class="paragraph"><p>To compile and install ccache, run these commands:</p></div>\r
770 <div class="literalblock">\r
771 <div class="content">\r
772 <pre><code>./configure\r
773 make\r
774 make install</code></pre>\r
775 </div></div>\r
776 <div class="paragraph"><p>You may set the installation directory and other parameters by options to\r
777 &#8220;./configure&#8221;. To see them, run &#8220;./configure --help&#8221;.</p></div>\r
778 <div class="paragraph"><p>There are two ways to use ccache. You can either prefix your compilation\r
779 commands with &#8220;ccache&#8221; or you can create a symbolic link (named as your\r
780 compiler) to ccache. The first method is most convenient if you just want to\r
781 try out ccache or wish to use it for some specific projects. The second method\r
782 is most useful for when you wish to use ccache for all your compilations.</p></div>\r
783 <div class="paragraph"><p>To install for usage by the first method just copy ccache to somewhere in your\r
784 path.</p></div>\r
785 <div class="paragraph"><p>To install for the second method, do something like this:</p></div>\r
786 <div class="literalblock">\r
787 <div class="content">\r
788 <pre><code>cp ccache /usr/local/bin/\r
789 ln -s ccache /usr/local/bin/gcc\r
790 ln -s ccache /usr/local/bin/g++\r
791 ln -s ccache /usr/local/bin/cc\r
792 ln -s ccache /usr/local/bin/c++</code></pre>\r
793 </div></div>\r
794 <div class="paragraph"><p>And so forth. This will work as long as &#8220;/usr/local/bin&#8221; comes before the\r
795 path to the compiler (which is usually in &#8220;/usr/bin&#8221;). After installing you\r
796 may wish to run &#8220;which gcc&#8221; to make sure that the correct link is being used.</p></div>\r
797 <div class="admonitionblock">\r
798 <table><tr>\r
799 <td class="icon">\r
800 <div class="title">Note</div>\r
801 </td>\r
802 <td class="content">Do not use a hard link, use a symbolic link. A hard link will cause\r
803 &#8220;interesting&#8221; problems.</td>\r
804 </tr></table>\r
805 </div>\r
806 </div>\r
807 </div>\r
808 </div>\r
809 <div class="sect1">\r
810 <h2 id="_building_code_from_the_source_code_repository">Building code from the source code repository</h2>\r
811 <div class="sectionbody">\r
812 <div class="paragraph"><p>In addition to the prerequisites mentioned above, you also need:</p></div>\r
813 <div class="ulist"><ul>\r
814 <li>\r
815 <p>\r
816 AsciiDoc (<a href="http://www.methods.co.nz/asciidoc/">http://www.methods.co.nz/asciidoc/</a>) to build the documentation.\r
817 </p>\r
818 </li>\r
819 <li>\r
820 <p>\r
821 Autoconf (<a href="http://www.gnu.org/software/autoconf/">http://www.gnu.org/software/autoconf/</a>)\r
822 </p>\r
823 </li>\r
824 <li>\r
825 <p>\r
826 gperf (<a href="http://www.gnu.org/software/gperf/">http://www.gnu.org/software/gperf/</a>)\r
827 </p>\r
828 </li>\r
829 <li>\r
830 <p>\r
831 xsltproc (<a href="http://xmlsoft.org/XSLT/xsltproc2.html">http://xmlsoft.org/XSLT/xsltproc2.html</a>)\r
832 </p>\r
833 </li>\r
834 </ul></div>\r
835 <div class="paragraph"><p>To debug and run the performance test suite you&#8217;ll also need:</p></div>\r
836 <div class="ulist"><ul>\r
837 <li>\r
838 <p>\r
839 Python (<a href="http://www.python.org/">http://www.python.org/</a>)\r
840 </p>\r
841 </li>\r
842 </ul></div>\r
843 <div class="paragraph"><p>Run "./autogen.sh" and then follow the steps mentioned under "Installation"\r
844 above.</p></div>\r
845 </div>\r
846 </div>\r
847 </div>\r
848 <div id="footnotes"><hr /></div>\r
849 <div id="footer">\r
850 <div id="footer-text">\r
851 Version 3.2.4+101_g4218b81<br />\r
852 Last updated\r
853  2016-02-06 17:21:49 CET\r
854 </div>\r
855 </div>\r
856 </body>\r
857 </html>\r