Import ccache-2.4 source
git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@10900 626c5289-ae23-0410-ae9c-e8d60b6d4f22
This commit is contained in:
parent
d63f23bb84
commit
482d91951a
27 changed files with 11335 additions and 0 deletions
158
CCache/web/index.html
Normal file
158
CCache/web/index.html
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<TITLE>ccache</TITLE>
|
||||
</HEAD>
|
||||
<BODY BGCOLOR="#ffffff" TEXT="#000000" VLINK="#292555" LINK="#292555" ALINK="#cc0033">
|
||||
<h2>ccache</h2>
|
||||
|
||||
ccache is a compiler cache. It acts as a caching pre-processor to
|
||||
C/C++ compilers, using the -E compiler switch and a hash to detect
|
||||
when a compilation can be satisfied from cache. This often results in
|
||||
a 5 to 10 times speedup in common compilations.<p>
|
||||
|
||||
The idea came from Erik Thiele wrote the original <a
|
||||
href="http://compilercache.sourceforge.net/">compilercache</a> program
|
||||
as a bourne shell script. ccache is a re-implementation of Erik's idea
|
||||
in C with more features and better performance.<p>
|
||||
|
||||
<h2>Latest release</h2>
|
||||
|
||||
The latest release is ccache 2.4.
|
||||
|
||||
<ul>
|
||||
<li>Added CCACHE_READONLY option
|
||||
<li>Added CCACHE_TEMPDIR option
|
||||
<li>fixed handling of hard-linked compilers on AIX
|
||||
<li>added O_BINARY support, to try and support win32 compiles
|
||||
<li>show cache directory in stats output
|
||||
<li>fixed handling of HOME environment variable
|
||||
</ul>
|
||||
|
||||
See the <a href="/ccache/ccache-man.html">manual page</a> for details
|
||||
on the new options.<p>
|
||||
|
||||
You can get this release from the <a href="/ftp/ccache/">download directory</a>
|
||||
|
||||
<p>NOTE! This release changes the hash input slighly, so you will
|
||||
probably find that you will not get any hits against your existing
|
||||
cache when you upgrade.
|
||||
|
||||
<h2>Why bother?</h2>
|
||||
|
||||
Why bother with a compiler cache? If you ever run "make clean; make"
|
||||
then you can probably benefit from ccache. It is very common for
|
||||
developers to do a clean build of a project for a whole host of
|
||||
reasons, and this throws away all the information from your previous
|
||||
compiles.<p>
|
||||
|
||||
By using ccache you can get exactly the same effect as "make clean;
|
||||
make" but much faster. It also helps a lot when doing RPM builds,
|
||||
as RPM can make doing incremental builds tricky.<p>
|
||||
|
||||
I put the effort into writing ccache for 2 reasons. The first is the
|
||||
Samba build farm
|
||||
(<a href="http://build.samba.org/">http://build.samba.org/</a>)
|
||||
which constantly does clean builds of Samba on about 30 machines after each
|
||||
CVS commit. On some of those machines the build took over an hour. By
|
||||
using ccache we get the same effect as clean builds but about 6 times
|
||||
faster.<p>
|
||||
|
||||
The second reason is the autobuild system I used to run for
|
||||
Quantum. That system builds our whole Linux based OS from scratch
|
||||
after every CVS commit to catch compilation problems quickly. Using
|
||||
ccache those builds are much faster.
|
||||
|
||||
<h2>Is it safe?</h2>
|
||||
|
||||
Yes. The most important aspect of a compiler cache is to <b>always</b>
|
||||
produce exactly the same output that the real compiler would
|
||||
produce. The includes providing exactly the same object files and
|
||||
exactly the same compiler warnings that would be produced if you use
|
||||
the real compiler. The only way you should be able to tell that you
|
||||
are using ccache is the speed.<p>
|
||||
|
||||
I have coded ccache very carefully to try to provide these guarantees.
|
||||
|
||||
<h2>Features</h2>
|
||||
|
||||
<ul>
|
||||
<li> keeps statistics on hits/misses
|
||||
<li> automatic cache size management
|
||||
<li> can cache compiles that generate warnings
|
||||
<li> easy installation
|
||||
<li> very low overhead
|
||||
<li> uses hard links where possible to avoid copies
|
||||
</ul>
|
||||
|
||||
<h2>Documentation</h2>
|
||||
|
||||
See the <a href="/ccache/ccache-man.html">manual page</a>
|
||||
|
||||
|
||||
<h2>Performance</h2>
|
||||
|
||||
Here are some results for compiling Samba on my Linux laptop. I have
|
||||
also included the results of using Erik's compilercache program
|
||||
(version 1.0.10) for comparison.<p>
|
||||
|
||||
<table border=1>
|
||||
<tr><th> </th> <th> ccache</th> <th> compilercache</th> </tr>
|
||||
<tr><td>normal </td> <td align=right>13m 4s </td><td align=right>13m 4s</td> </tr>
|
||||
<tr><td>uncached </td> <td align=right>13m 15s </td><td align=right>15m 41s</td> </tr>
|
||||
<tr><td>cached </td> <td align=right>2m 45s </td><td align=right>4m 26s</td> </tr>
|
||||
</table>
|
||||
|
||||
<h2>How to use it</h2>
|
||||
|
||||
You can use ccache in two ways. The first is just to prefix your
|
||||
compile commands with "ccache". For example, you could change the
|
||||
"CC=gcc" line in your Makefile to be "CC=ccache gcc".<p>
|
||||
|
||||
Alternatively, you can create symbolic links from your compilers name
|
||||
to ccache. This allows you to use ccache without any changes to your
|
||||
build system.
|
||||
|
||||
<h2>Download</h2>
|
||||
|
||||
You can download the latest release from the <a
|
||||
href="/ftp/ccache/">download directory</a>.<p>
|
||||
|
||||
For the bleeding edge, you can fetch ccache via CVS or
|
||||
rsync. To fetch via cvs use the following command:
|
||||
|
||||
<pre>
|
||||
cvs -d :pserver:cvs@pserver.samba.org:/cvsroot co ccache
|
||||
</pre>
|
||||
|
||||
To fetch via rsync use this command:
|
||||
|
||||
<pre>
|
||||
rsync -Pavz samba.org::ftp/unpacked/ccache .
|
||||
</pre>
|
||||
|
||||
<h2>Related projects</h2>
|
||||
|
||||
Here are some related programs you may find interesting
|
||||
|
||||
<ul>
|
||||
<li> <a href="http://distcc.samba.org/">distcc</a> - a distributed compilation system
|
||||
<li> <a href="http://cachecc1.sourceforge.net/">cachecc1</a> - a gcc specific cache
|
||||
<li> <a href="http://sourceforge.net/projects/gocache/">gocache</a> - a cross platform compiler cache
|
||||
</ul>
|
||||
<p>
|
||||
|
||||
<h2>Mailing list</h2>
|
||||
|
||||
<p>A <a href="http://lists.samba.org/mailman/listinfo/ccache/">mailing
|
||||
list</a> is available for discussion of ccache.
|
||||
|
||||
|
||||
<hr>
|
||||
<tiny>
|
||||
<a href="http://samba.org/~tridge/">Andrew Tridgell</a><br>
|
||||
<a href="mailto:bugs@ccache.samba.org">bugs@ccache.samba.org</a>
|
||||
</tiny>
|
||||
|
||||
</BODY>
|
||||
</HTML>
|
||||
Loading…
Add table
Add a link
Reference in a new issue