From 160f1937fbc4b454a83d1c6f81ff4eaff72613de Mon Sep 17 00:00:00 2001 From: Joel Rosdahl Date: Sun, 13 Dec 2009 14:35:08 +0100 Subject: [PATCH] Remove generated files ccache.1 and web/ccache-man.html yodl2html (version 2.15.1) doesn't seem to handle conversion to HTML (anymore?), so disable it for now. --- Makefile.in | 11 +- ccache.1 | 414 -------------------------------------------- web/ccache-man.html | 318 ---------------------------------- 3 files changed, 5 insertions(+), 738 deletions(-) delete mode 100644 ccache.1 delete mode 100644 web/ccache-man.html diff --git a/Makefile.in b/Makefile.in index 328bb3b6d..899a0e822 100644 --- a/Makefile.in +++ b/Makefile.in @@ -25,17 +25,16 @@ objs = $(sources:.c=.o) all: ccache$(EXEEXT) -docs: ccache.1 web/ccache-man.html +docs: ccache.1 #web/ccache-man.html ccache$(EXEEXT): $(objs) $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(objs) $(libs) ccache.1: ccache.yo - -yodl2man -o ccache.1 ccache.yo + yodl2man -o ccache.1 ccache.yo -web/ccache-man.html: ccache.yo - mkdir -p man - yodl2html -o web/ccache-man.html ccache.yo +#web/ccache-man.html: ccache.yo +# yodl2html -o web/ccache-man.html ccache.yo install: ccache$(EXEEXT) ccache.1 ${INSTALLCMD} -d $(DESTDIR)${bindir} @@ -44,7 +43,7 @@ install: ccache$(EXEEXT) ccache.1 ${INSTALLCMD} -m 644 ${srcdir}/ccache.1 $(DESTDIR)${mandir}/man1/ clean: - /bin/rm -f $(objs) *~ ccache$(EXEEXT) *.d + rm -f $(objs) *~ ccache$(EXEEXT) *.d ccache.1 web/ccache-man.html test: test.sh CC='$(CC)' ./test.sh diff --git a/ccache.1 b/ccache.1 deleted file mode 100644 index 11fa4007f..000000000 --- a/ccache.1 +++ /dev/null @@ -1,414 +0,0 @@ -.TH "ccache" "1" "April 2002" "" "" -.SH "NAME" -ccache \- a fast compiler cache -.SH "SYNOPSIS" -.PP -ccache [OPTION] -.PP -ccache [COMPILER OPTIONS] -.PP - [COMPILER OPTIONS] -.PP -.SH "DESCRIPTION" -.PP -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\&. -.PP -.SH "OPTIONS SUMMARY" -.PP -Here is a summary of the options to ccache\&. -.PP - -.nf - - -\-s, \-\-show-stats show statistics summary -\-z, \-\-zero-stats zero statistics -\-c, \-\-cleanup run a cache cleanup -\-C, \-\-clear clear the cache completely -\-F , \-\-max-files= set maximum files in cache -\-M , \-\-max-size= set maximum size of cache (use G, M or K) -\-h, \-\-help this help page -\-V, \-\-version print version number - -.fi - - -.PP -.SH "OPTIONS" -.PP -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\&. -.PP -.IP "\fB-h, --help\fP" -Print a options summary page -.IP -.IP "\fB-s, --show-stats\fP" -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\&. -.IP -.IP "\fB-z, --zero-stats\fP" -Zero the cache statistics\&. -.IP -.IP "\fB-V, --version\fP" -Print the ccache version number -.IP -.IP "\fB-c, --cleanup\fP" -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\&. -.IP -.IP "\fB-C, --clear\fP" -Clear the entire cache, removing all cached files\&. -.IP -.IP "\fB-F , --max-files=\fP" -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\&. -.IP -.IP "\fB-M , --max-size=\fP" -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\&. -.IP -.PP -.SH "INSTALLATION" -.PP -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\&. -.PP -To install for usage by the first method just copy ccache to somewhere -in your path\&. -.PP -To install for the second method do something like this: - -.nf - - - 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 - -.fi - - -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\&. -.PP -Note! Do not use a hard link, use a symbolic link\&. A hardlink will -cause "interesting" problems\&. -.PP -.SH "EXTRA OPTIONS" -.PP -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\&. -.PP -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\&. -.PP -.SH "ENVIRONMENT VARIABLES" -.PP -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\&. -.PP -.IP -.IP "\fBCCACHE_DIR\fP" -the CCACHE_DIR environment variable specifies -where ccache will keep its cached compiler output\&. The default is -"$HOME/\&.ccache"\&. -.IP -.IP "\fBCCACHE_TEMPDIR\fP" -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\&. -.IP -.IP "\fBCCACHE_LOGFILE\fP" -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\&. -.IP -.IP "\fBCCACHE_PATH\fP" -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\&. -.IP -.IP "\fBCCACHE_CC\fP" -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\&. -.IP -.IP "\fBCCACHE_PREFIX\fP" -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\&. -.IP -.IP "\fBCCACHE_DISABLE\fP" -If you set the environment variable -CCACHE_DISABLE then ccache will just call the real compiler, -bypassing the cache completely\&. -.IP -.IP "\fBCCACHE_READONLY\fP" -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\&. -.IP -.IP "\fBCCACHE_CPP2\fP" -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\&. -.IP -.IP "\fBCCACHE_NOSTATS\fP" -If you set the environment variable -CCACHE_NOSTATS then ccache will not update the statistics files on -each compile\&. -.IP -.IP "\fBCCACHE_NLEVELS\fP" -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\&. -.IP -.IP "\fBCCACHE_HARDLINK\fP" -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\&. Hard links are never made for -compressed cache files\&. -.IP -.IP "\fBCCACHE_RECACHE\fP" -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\&. -.IP -.IP "\fBCCACHE_UMASK\fP" -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\&. -.IP -.IP "\fBCCACHE_HASHDIR\fP" -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\&. -.IP -.IP "\fBCCACHE_NOHASH_SIZE_MTIME\fP" -This tells ccache to not hash the real compiler's size and modification -time. Normally this is the mechanism to detect compiler upgrades. -There are situations however, where even though the compiler's size or -modification time has changed you can safely use the cached objects -(e.g. if as part of your build system the compiler is built as well -and the compiler's source has not changed; or if the compiler has only -changes that do not affect code generation). Use this feature only if -you know what you are doing. -.IP -.IP "\fBCCACHE_UNIFY\fP" -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\&. -.IP -.IP "\fBCCACHE_EXTENSION\fP" -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\&. -.IP -.IP "\fBCCACHE_NOCOMPRESS\fP" -If you set the environment variable -CCACHE_NOCOMPRESS then there is no compression used on files that go -into the cache\&. -.IP -.PP -.SH "CACHE SIZE MANAGEMENT" -.PP -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\&. -.PP -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\&. -.PP -.SH "CACHE COMPRESSION" -.PP -By default ccache will compress all files it puts into the cache -using the zlib compression\&. While this involves a negligible -performance slowdown, it significantly increases the number of files -that fit in the cache\&. You can turn off compression setting the -CCACHE_NOCOMPRESS environment variable\&. -.PP -.SH "HOW IT WORKS" -.PP -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: -.PP -.IP o -the pre-processor output from running the compiler with -E -.IP o -the command line options -.IP o -the real compilers size and modification time -.IP o -any stderr output generated by the compiler -.PP -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\&. -.PP -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\&. -.PP -.SH "USING CCACHE WITH DISTCC" -.PP -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\&. -.PP -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\&'\&. -.PP -.SH "SHARING A CACHE" -.PP -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: -.PP -.IP o -Use the same \fBCCACHE_DIR\fP environment variable setting -.IP o -Unset the \fBCCACHE_HARDLINK\fP environment variable -.IP o -Make sure everyone sets the CCACHE_UMASK environment variable -to 002, this ensures that cached files are accessible to everyone in -the group\&. -.IP o -Make sure that all users have write permission in the entire -cache directory (and that you trust all users of the shared cache)\&. -.IP o -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\&. -.PP -.SH "HISTORY" -.PP -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 -http://www\&.erikyyy\&.de/compilercache/ -for the Erik\&'s scripts\&. -.PP -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\&. -.PP -.SH "DIFFERENCES FROM COMPILERCACHE" -.PP -The biggest differences between Erik\&'s compilercache script and ccache -are: -.IP o -ccache is written in C, which makes it a bit faster (calling out to -external programs is mostly what slowed down the scripts)\&. -.IP o -ccache can automatically find the real compiler -.IP o -ccache keeps statistics on hits/misses -.IP o -ccache can do automatic cache management -.IP o -ccache can cache compiler output that includes warnings\&. In many -cases this gives ccache a much higher cache hit rate\&. -.IP o -ccache can handle a much wider ranger of compiler options -.IP o -ccache avoids a double call to cpp on a cache miss -.PP -.SH "CREDITS" -.PP -Thanks to the following people for their contributions to ccache -.IP o -Erik Thiele for the original compilercache script -.IP o -Luciano Rocha for the idea of compiling the pre-processor output -to avoid a 2nd cpp pass -.IP o -Paul Russell for many suggestions and the debian packaging -.PP -.SH "AUTHOR" -.PP -ccache was written by Andrew Tridgell -http://samba\&.org/~tridge/ -.PP -If you wish to report a problem or make a suggestion then please email -bugs@ccache\&.samba\&.org -.PP -ccache is released under the GNU General Public License version 2 or -later\&. Please see the file COPYING for license details\&. diff --git a/web/ccache-man.html b/web/ccache-man.html deleted file mode 100644 index 0cdf8cd50..000000000 --- a/web/ccache-man.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - - -ccache - - - - - -
- -

ccache

-

April 2002

- - - -

NAME

- ccache - a fast compiler cache -

SYNOPSIS

- -

ccache [OPTION] -

ccache <compiler> [COMPILER OPTIONS] -

<compiler> [COMPILER OPTIONS] -

DESCRIPTION

- -

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. -

OPTIONS SUMMARY

- -

Here is a summary of the options to ccache. -

-
--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
-
-
- -

OPTIONS

- -

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. -

-

-h
Print a options summary page -

-s
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. -

-z
Zero the cache statistics. -

-V
Print the ccache version number -

-c
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. -

-C
Clear the entire cache, removing all cached files. -

-F maxfiles
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. -

-M maxsize
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. -

-

INSTALLATION

- -

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. -

To install for usage by the first method just copy ccache to somewhere -in your path. -

To install for the second method do something like this: -

-
-  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
-
-
- -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. -

Note! Do not use a hard link, use a symbolic link. A hardlink will -cause "interesting" problems. -

EXTRA OPTIONS

- -

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. -

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. -

ENVIRONMENT VARIABLES

- -

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. -

-

CCACHE_DIR
the CCACHE_DIR environment variable specifies -where ccache will keep its cached compiler output. The default is -"$HOME/.ccache". -

CCACHE_TEMPDIR
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. -

CCACHE_LOGFILE
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. -

CCACHE_PATH
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. -

CCACHE_CC
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. -

CCACHE_PREFIX
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. -

CCACHE_DISABLE
If you set the environment variable -CCACHE_DISABLE then ccache will just call the real compiler, -bypassing the cache completely. -

CCACHE_READONLY
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. -

CCACHE_CPP2
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. -

CCACHE_NOSTATS
If you set the environment variable -CCACHE_NOSTATS then ccache will not update the statistics files on -each compile. -

CCACHE_NLEVELS
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. -

CCACHE_HARDLINK
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. -

CCACHE_RECACHE
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. -

CCACHE_UMASK
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. -

CCACHE_HASHDIR
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. -

CCACHE_UNIFY
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. -

CCACHE_EXTENSION
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. -

-

CACHE SIZE MANAGEMENT

- -

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. -

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. -

HOW IT WORKS

- -

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: -

    -
  • the pre-processor output from running the compiler with -E -
  • the command line options -
  • the real compilers size and modification time -
  • any stderr output generated by the compiler -
-

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. -

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. -

USING CCACHE WITH DISTCC

- -

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. -

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'. -

SHARING A CACHE

- -

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: -

    -
  • Use the same CCACHE_DIR environment variable setting -
  • Unset the CCACHE_HARDLINK environment variable -
  • Make sure everyone sets the CCACHE_UMASK environment variable - to 002, this ensures that cached files are accessible to everyone in - the group. -
  • Make sure that all users have write permission in the entire - cache directory (and that you trust all users of the shared cache). -
  • 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. -
-

HISTORY

- -

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 -http://www.erikyyy.de/compilercache/ -for the Erik's scripts. -

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. -

DIFFERENCES FROM COMPILERCACHE

- -

The biggest differences between Erik's compilercache script and ccache -are: -

    -
  • ccache is written in C, which makes it a bit faster (calling out to - external programs is mostly what slowed down the scripts). -
  • ccache can automatically find the real compiler -
  • ccache keeps statistics on hits/misses -
  • ccache can do automatic cache management -
  • ccache can cache compiler output that includes warnings. In many - cases this gives ccache a much higher cache hit rate. -
  • ccache can handle a much wider ranger of compiler options -
  • ccache avoids a double call to cpp on a cache miss -
-

BUGS

- -

When the cache is stored on an NFS filesystem, the filesystem must be -exported with the no_subtree_check option to make renames between -directories reliable. -

CREDITS

- -

Thanks to the following people for their contributions to ccache -

    -
  • Erik Thiele for the original compilercache script -
  • Luciano Rocha for the idea of compiling the pre-processor output - to avoid a 2nd cpp pass -
  • Paul Russell for many suggestions and the debian packaging -
-

AUTHOR

- -

ccache was written by Andrew Tridgell -http://samba.org/~tridge/ -

If you wish to report a problem or make a suggestion then please email -bugs@ccache.samba.org -

ccache is released under the GNU General Public License version 2 or -later. Please see the file COPYING for license details. - - -- 2.47.3