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
318
CCache/web/ccache-man.html
Normal file
318
CCache/web/ccache-man.html
Normal file
|
|
@ -0,0 +1,318 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
<html><head><title>ccache</title>
|
||||
|
||||
<link rev="made" href="mailto:bugs@ccache.samba.org">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<hr>
|
||||
|
||||
<h1>ccache</h1>
|
||||
<h2>April 2002</h2>
|
||||
|
||||
|
||||
|
||||
<h2>NAME</h2>
|
||||
ccache - a fast compiler cache
|
||||
<h2>SYNOPSIS</h2>
|
||||
|
||||
<p>ccache [OPTION]
|
||||
<p>ccache <compiler> [COMPILER OPTIONS]
|
||||
<p><compiler> [COMPILER OPTIONS]
|
||||
<p><h2>DESCRIPTION</h2>
|
||||
|
||||
<p>ccache is a compiler cache. It speeds up re-compilation of C/C++ code
|
||||
by caching previous compiles and detecting when the same compile is
|
||||
being done again.
|
||||
<p><h2>OPTIONS SUMMARY</h2>
|
||||
|
||||
<p>Here is a summary of the options to ccache.
|
||||
<p><pre>
|
||||
|
||||
-s show statistics summary
|
||||
-z zero statistics
|
||||
-c run a cache cleanup
|
||||
-C clear the cache completely
|
||||
-F <maxfiles> set maximum files in cache
|
||||
-M <maxsize> set maximum size of cache (use G, M or K)
|
||||
-h this help page
|
||||
-V print version number
|
||||
|
||||
</pre>
|
||||
|
||||
<p><h2>OPTIONS</h2>
|
||||
|
||||
<p>These options only apply when you invoke ccache as "ccache". When
|
||||
invoked as a compiler none of these options apply. In that case your
|
||||
normal compiler options apply and you should refer to your compilers
|
||||
documentation.
|
||||
<p><dl>
|
||||
<p></p><dt><strong><strong>-h</strong></strong><dd> Print a options summary page
|
||||
<p><p></p><dt><strong><strong>-s</strong></strong><dd> Print the current statistics summary for the cache. The
|
||||
statistics are stored spread across the subdirectories of the
|
||||
cache. Using "ccache -s" adds up the statistics across all
|
||||
subdirectories and prints the totals.
|
||||
<p><p></p><dt><strong><strong>-z</strong></strong><dd> Zero the cache statistics.
|
||||
<p><p></p><dt><strong><strong>-V</strong></strong><dd> Print the ccache version number
|
||||
<p><p></p><dt><strong><strong>-c</strong></strong><dd> Clean the cache and re-calculate the cache file count and
|
||||
size totals. Normally the -c option should not be necessary as ccache
|
||||
keeps the cache below the specified limits at runtime and keeps
|
||||
statistics up to date on each compile. This option is mostly useful
|
||||
if you manually modify the cache contents or believe that the cache
|
||||
size statistics may be inaccurate.
|
||||
<p><p></p><dt><strong><strong>-C</strong></strong><dd> Clear the entire cache, removing all cached files.
|
||||
<p><p></p><dt><strong><strong>-F maxfiles</strong></strong><dd> This sets the maximum number of files allowed in
|
||||
the cache. The value is stored inside the cache directory and applies
|
||||
to all future compiles. Due to the way the value is stored the actual
|
||||
value used is always rounded down to the nearest multiple of 16.
|
||||
<p><p></p><dt><strong><strong>-M maxsize</strong></strong><dd> This sets the maximum cache size. You can specify
|
||||
a value in gigabytes, megabytes or kilobytes by appending a G, M or K
|
||||
to the value. The default is gigabytes. The actual value stored is
|
||||
rounded down to the nearest multiple of 16 kilobytes.
|
||||
<p></dl>
|
||||
<p><h2>INSTALLATION</h2>
|
||||
|
||||
<p>There are two ways to use ccache. You can either prefix your compile
|
||||
commands with "ccache" or you can create a symbolic link between
|
||||
ccache and the names of your compilers. The first method is most
|
||||
convenient if you just want to try out ccache or wish to use it for
|
||||
some specific projects. The second method is most useful for when you
|
||||
wish to use ccache for all your compiles.
|
||||
<p>To install for usage by the first method just copy ccache to somewhere
|
||||
in your path.
|
||||
<p>To install for the second method do something like this:
|
||||
<pre>
|
||||
|
||||
cp ccache /usr/local/bin/
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/gcc
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/g++
|
||||
ln -s /usr/local/bin/ccache /usr/local/bin/cc
|
||||
|
||||
</pre>
|
||||
|
||||
This will work as long as /usr/local/bin comes before the path to gcc
|
||||
(which is usually in /usr/bin). After installing you may wish to run
|
||||
"which gcc" to make sure that the correct link is being used.
|
||||
<p>Note! Do not use a hard link, use a symbolic link. A hardlink will
|
||||
cause "interesting" problems.
|
||||
<p><h2>EXTRA OPTIONS</h2>
|
||||
|
||||
<p>When run as a compiler front end ccache usually just takes the same
|
||||
command line options as the compiler you are using. The only exception
|
||||
to this is the option '--ccache-skip'. That option can be used to tell
|
||||
ccache that the next option is definitely not a input filename, and
|
||||
should be passed along to the compiler as-is.
|
||||
<p>The reason this can be important is that ccache does need to parse the
|
||||
command line and determine what is an input filename and what is a
|
||||
compiler option, as it needs the input filename to determine the name
|
||||
of the resulting object file (among other things). The heuristic
|
||||
ccache uses in this parse is that any string on the command line that
|
||||
exists as a file is treated as an input file name (usually a C
|
||||
file). By using --ccache-skip you can force an option to not be
|
||||
treated as an input file name and instead be passed along to the
|
||||
compiler as a command line option.
|
||||
<p><h2>ENVIRONMENT VARIABLES</h2>
|
||||
|
||||
<p>ccache uses a number of environment variables to control operation. In
|
||||
most cases you won't need any of these as the defaults will be fine.
|
||||
<p><dl>
|
||||
<p><p></p><dt><strong><strong>CCACHE_DIR</strong></strong><dd> the CCACHE_DIR environment variable specifies
|
||||
where ccache will keep its cached compiler output. The default is
|
||||
"$HOME/.ccache".
|
||||
<p><p></p><dt><strong><strong>CCACHE_TEMPDIR</strong></strong><dd> the CCACHE_TEMPDIR environment variable specifies
|
||||
where ccache will put temporary files. The default is the same as
|
||||
CCACHE_DIR. Note that the CCACHE_TEMPDIR path must be on the same
|
||||
filesystem as the CCACHE_DIR path, so that renames of files between
|
||||
the two directories can work.
|
||||
<p><p></p><dt><strong><strong>CCACHE_LOGFILE</strong></strong><dd> If you set the CCACHE_LOGFILE environment
|
||||
variable then ccache will write some log information on cache hits
|
||||
and misses in that file. This is useful for tracking down problems.
|
||||
<p><p></p><dt><strong><strong>CCACHE_PATH</strong></strong><dd> You can optionally set CCACHE_PATH to a colon
|
||||
separated path where ccache will look for the real compilers. If you
|
||||
don't do this then ccache will look for the first executable matching
|
||||
the compiler name in the normal PATH that isn't a symbolic link to
|
||||
ccache itself.
|
||||
<p><p></p><dt><strong><strong>CCACHE_CC</strong></strong><dd> You can optionally set CCACHE_CC to force the name
|
||||
of the compiler to use. If you don't do this then ccache works it out
|
||||
from the command line.
|
||||
<p><p></p><dt><strong><strong>CCACHE_PREFIX</strong></strong><dd> This option adds a prefix to the command line
|
||||
that ccache runs when invoking the compiler. Also see the section
|
||||
below on using ccache with distcc.
|
||||
<p><p></p><dt><strong><strong>CCACHE_DISABLE</strong></strong><dd> If you set the environment variable
|
||||
CCACHE_DISABLE then ccache will just call the real compiler,
|
||||
bypassing the cache completely.
|
||||
<p><p></p><dt><strong><strong>CCACHE_READONLY</strong></strong><dd> the CCACHE_READONLY environment variable
|
||||
tells ccache to attempt to use existing cached object files, but not
|
||||
to try to add anything new to the cache. If you are using this because
|
||||
your CCACHE_DIR is read-only, then you may find that you also need to
|
||||
set CCACHE_TEMPDIR as otherwise ccache will fail to create the
|
||||
temporary files.
|
||||
<p><p></p><dt><strong><strong>CCACHE_CPP2</strong></strong><dd> If you set the environment variable CCACHE_CPP2
|
||||
then ccache will not use the optimisation of avoiding the 2nd call to
|
||||
the pre-processor by compiling the pre-processed output that was used
|
||||
for finding the hash in the case of a cache miss. This is primarily a
|
||||
debugging option, although it is possible that some unusual compilers
|
||||
will have problems with the intermediate filename extensions used in
|
||||
this optimisation, in which case this option could allow ccache to be
|
||||
used.
|
||||
<p><p></p><dt><strong><strong>CCACHE_NOSTATS</strong></strong><dd> If you set the environment variable
|
||||
CCACHE_NOSTATS then ccache will not update the statistics files on
|
||||
each compile.
|
||||
<p><p></p><dt><strong><strong>CCACHE_NLEVELS</strong></strong><dd> The environment variable CCACHE_NLEVELS allows
|
||||
you to choose the number of levels of hash in the cache directory. The
|
||||
default is 2. The minimum is 1 and the maximum is 8.
|
||||
<p><p></p><dt><strong><strong>CCACHE_HARDLINK</strong></strong><dd> If you set the environment variable
|
||||
CCACHE_HARDLINK then ccache will attempt to use hard links from the
|
||||
cache directory when creating the compiler output rather than using a
|
||||
file copy. Using hard links is faster, but can confuse programs like
|
||||
'make' that rely on modification times.
|
||||
<p><p></p><dt><strong><strong>CCACHE_RECACHE</strong></strong><dd> This forces ccache to not use any cached
|
||||
results, even if it finds them. New results are still cached, but
|
||||
existing cache entries are ignored.
|
||||
<p><p></p><dt><strong><strong>CCACHE_UMASK</strong></strong><dd> This sets the umask for ccache and all child
|
||||
processes (such as the compiler). This is mostly useful when you wish
|
||||
to share your cache with other users. Note that this also affects the
|
||||
file permissions set on the object files created from your
|
||||
compilations.
|
||||
<p><p></p><dt><strong><strong>CCACHE_HASHDIR</strong></strong><dd> This tells ccache to hash the current working
|
||||
directory when calculating the hash that is used to distinguish two
|
||||
compiles. This prevents a problem with the storage of the current
|
||||
working directory in the debug info of a object file, which can lead
|
||||
ccache to give a cached object file that has the working directory in
|
||||
the debug info set incorrectly. This option is off by default as the
|
||||
incorrect setting of this debug info rarely causes problems. If you
|
||||
strike problems with gdb not using the correct directory then enable
|
||||
this option.
|
||||
<p><p></p><dt><strong><strong>CCACHE_UNIFY</strong></strong><dd> If you set the environment variable CCACHE_UNIFY
|
||||
then ccache will use the C/C++ unifier when hashing the pre-processor
|
||||
output if -g is not used in the compile. The unifier is slower than a
|
||||
normal hash, so setting this environment variable loses a little bit
|
||||
of speed, but it means that ccache can take advantage of not
|
||||
recompiling when the changes to the source code consist of
|
||||
reformatting only. Note that using CCACHE_UNIFY changes the hash, so
|
||||
cached compiles with CCACHE_UNIFY set cannot be used when
|
||||
CCACHE_UNIFY is not set and vice versa. The reason the unifier is off
|
||||
by default is that it can give incorrect line number information in
|
||||
compiler warning messages.
|
||||
<p><p></p><dt><strong><strong>CCACHE_EXTENSION</strong></strong><dd> Normally ccache tries to automatically
|
||||
determine the extension to use for intermediate C pre-processor files
|
||||
based on the type of file being compiled. Unfortunately this sometimes
|
||||
doesn't work, for example when using the aCC compiler on HP-UX. On
|
||||
systems like this you can use the CCACHE_EXTENSION option to override
|
||||
the default. On HP-UX set this environment variable to "i" if you use
|
||||
the aCC compiler.
|
||||
<p></dl>
|
||||
<p><h2>CACHE SIZE MANAGEMENT</h2>
|
||||
|
||||
<p>By default ccache has a one gigabyte limit on the cache size and no
|
||||
maximum number of files. You can set a different limit using the
|
||||
"ccache -M" and "ccache -F" options, which set the size and number of
|
||||
files limits.
|
||||
<p>When these limits are reached ccache will reduce the cache to 20%
|
||||
below the numbers you specified in order to avoid doing the cache
|
||||
clean operation too often.
|
||||
<p><h2>HOW IT WORKS</h2>
|
||||
|
||||
<p>The basic idea is to detect when you are compiling exactly the same
|
||||
code a 2nd time and use the previously compiled output. You detect
|
||||
that it is the same code by forming a hash of:
|
||||
<p><ul>
|
||||
<li > the pre-processor output from running the compiler with -E
|
||||
<li > the command line options
|
||||
<li > the real compilers size and modification time
|
||||
<li > any stderr output generated by the compiler
|
||||
</ul>
|
||||
<p>These are hashed using md4 (a strong hash) and a cache file is formed
|
||||
based on that hash result. When the same compilation is done a second
|
||||
time ccache is able to supply the correct compiler output (including
|
||||
all warnings etc) from the cache.
|
||||
<p>ccache has been carefully written to always produce exactly the same
|
||||
compiler output that you would get without the cache. If you ever
|
||||
discover a case where ccache changes the output of your compiler then
|
||||
please let me know.
|
||||
<p><h2>USING CCACHE WITH DISTCC</h2>
|
||||
|
||||
<p>distcc is a very useful program for distributing compilation across a
|
||||
range of compiler servers. It is often useful to combine distcc with
|
||||
ccache, so that compiles that are done are sped up by distcc, but that
|
||||
ccache avoids the compile completely where possible.
|
||||
<p>To use distcc with ccache I recommend using the CCACHE_PREFIX
|
||||
option. You just need to set the environment variable CCACHE_PREFIX to
|
||||
'distcc' and ccache will prefix the command line used with the
|
||||
compiler with the command 'distcc'.
|
||||
<p><h2>SHARING A CACHE</h2>
|
||||
|
||||
<p>A group of developers can increase the cache hit rate by sharing a
|
||||
cache directory. The hard links however cause unwanted side effects,
|
||||
as all links to a cached file share the file's modification timestamp.
|
||||
This results in false dependencies to be triggered by timestamp-based
|
||||
build systems whenever another user links to an existing
|
||||
file. Typically, users will see that their libraries and binaries are
|
||||
relinked without reason. To share a cache without side effects, the
|
||||
following conditions need to be met:
|
||||
<p><ul>
|
||||
<li > Use the same <strong>CCACHE_DIR</strong> environment variable setting
|
||||
<li > Set the <strong>CCACHE_NOLINK</strong> environment variable
|
||||
<li > Make sure everyone sets the CCACHE_UMASK environment variable
|
||||
to 002, this ensures that cached files are accessible to everyone in
|
||||
the group.
|
||||
<li > Make sure that all users have write permission in the entire
|
||||
cache directory (and that you trust all users of the shared cache).
|
||||
<li > Make sure that the setgid bit is set on all directories in the
|
||||
cache. This tells the filesystem to inherit group ownership for new
|
||||
directories. The command "chmod g+s `find $CCACHE_DIR -type d`" might
|
||||
be useful for this.
|
||||
</ul>
|
||||
<p><h2>HISTORY</h2>
|
||||
|
||||
<p>ccache was inspired by the compilercache shell script script written
|
||||
by Erik Thiele and I would like to thank him for an excellent piece of
|
||||
work. See
|
||||
<a href="http://www.erikyyy.de/compilercache/">http://www.erikyyy.de/compilercache/</a>
|
||||
for the Erik's scripts.
|
||||
<p>I wrote ccache because I wanted to get a bit more speed out of a
|
||||
compiler cache and I wanted to remove some of the limitations of the
|
||||
shell-script version.
|
||||
<p><h2>DIFFERENCES FROM COMPILERCACHE</h2>
|
||||
|
||||
<p>The biggest differences between Erik's compilercache script and ccache
|
||||
are:
|
||||
<ul>
|
||||
<li > ccache is written in C, which makes it a bit faster (calling out to
|
||||
external programs is mostly what slowed down the scripts).
|
||||
<li > ccache can automatically find the real compiler
|
||||
<li > ccache keeps statistics on hits/misses
|
||||
<li > ccache can do automatic cache management
|
||||
<li > ccache can cache compiler output that includes warnings. In many
|
||||
cases this gives ccache a much higher cache hit rate.
|
||||
<li > ccache can handle a much wider ranger of compiler options
|
||||
<li > ccache avoids a double call to cpp on a cache miss
|
||||
</ul>
|
||||
<p><h2>BUGS</h2>
|
||||
|
||||
<p>When the cache is stored on an NFS filesystem, the filesystem must be
|
||||
exported with the <strong>no_subtree_check</strong> option to make renames between
|
||||
directories reliable.
|
||||
<p><h2>CREDITS</h2>
|
||||
|
||||
<p>Thanks to the following people for their contributions to ccache
|
||||
<ul>
|
||||
<li > Erik Thiele for the original compilercache script
|
||||
<li > Luciano Rocha for the idea of compiling the pre-processor output
|
||||
to avoid a 2nd cpp pass
|
||||
<li > Paul Russell for many suggestions and the debian packaging
|
||||
</ul>
|
||||
<p><h2>AUTHOR</h2>
|
||||
|
||||
<p>ccache was written by Andrew Tridgell
|
||||
<a href="http://samba.org/~tridge/">http://samba.org/~tridge/</a>
|
||||
<p>If you wish to report a problem or make a suggestion then please email
|
||||
bugs@ccache.samba.org
|
||||
<p>ccache is released under the GNU General Public License version 2 or
|
||||
later. Please see the file COPYING for license details.
|
||||
</body>
|
||||
</html>
|
||||
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