Mercurial > mm7
comparison lib/swig/swigwin-2.0.11/CCache/ccache.yo @ 1899:b3009adc0e2f
Adding swig, gitignore, hgignore
author | Nomad |
---|---|
date | Mon, 21 Oct 2013 10:42:27 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
1867:eb580660bbbb | 1899:b3009adc0e2f |
---|---|
1 whenman( | |
2 COMMENT(html output not great if included when using html2doc) | |
3 manpage(ccache-swig)(1)()()() | |
4 ) | |
5 | |
6 whenhtml(htmlcommand( | |
7 | |
8 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | |
9 <html> | |
10 <head> | |
11 <title>ccache-swig(1) manpage</title> | |
12 <link rel="stylesheet" type="text/css" href="style.css"> | |
13 </head> | |
14 | |
15 <body bgcolor="#ffffff"> | |
16 <H1><a name="CCache"></a>Using SWIG with ccache - ccache-swig(1) manpage</H1> | |
17 <!-- INDEX --> | |
18 <div class="sectiontoc"> | |
19 <!-- INDEX --> | |
20 | |
21 )) | |
22 | |
23 | |
24 manpagename(ccache-swig)(a fast compiler cache) | |
25 | |
26 whenhtml(htmlcommand( | |
27 ccache-swig - a fast compiler cache | |
28 )) | |
29 | |
30 manpagesynopsis() | |
31 | |
32 ccache-swig [OPTION] | |
33 | |
34 ccache-swig <compiler> [COMPILER OPTIONS] | |
35 | |
36 <compiler> [COMPILER OPTIONS] | |
37 | |
38 manpagedescription() | |
39 | |
40 ccache-swig is a compiler cache. It speeds up re-compilation of C/C++/SWIG code | |
41 by caching previous compiles and detecting when the same compile is | |
42 being done again. ccache-swig is ccache plus support for SWIG. ccache | |
43 and ccache-swig are used interchangeably in this document. | |
44 | |
45 manpagesection(OPTIONS SUMMARY) | |
46 | |
47 Here is a summary of the options to ccache-swig. | |
48 | |
49 verb( | |
50 -s show statistics summary | |
51 -z zero statistics | |
52 -c run a cache cleanup | |
53 -C clear the cache completely | |
54 -F <n> set maximum files in cache | |
55 -M <n> set maximum size of cache (use G, M or K) | |
56 -h this help page | |
57 -V print version number | |
58 ) | |
59 | |
60 manpageoptions() | |
61 | |
62 These options only apply when you invoke ccache as "ccache-swig". When | |
63 invoked as a compiler none of these options apply. In that case your | |
64 normal compiler options apply and you should refer to your compilers | |
65 documentation. | |
66 | |
67 startdit() | |
68 dit(bf(-h)) Print a options summary page | |
69 | |
70 dit(bf(-s)) Print the current statistics summary for the cache. The | |
71 statistics are stored spread across the subdirectories of the | |
72 cache. Using "ccache-swig -s" adds up the statistics across all | |
73 subdirectories and prints the totals. | |
74 | |
75 dit(bf(-z)) Zero the cache statistics. | |
76 | |
77 dit(bf(-V)) Print the ccache version number | |
78 | |
79 dit(bf(-c)) Clean the cache and re-calculate the cache file count and | |
80 size totals. Normally the -c option should not be necessary as ccache | |
81 keeps the cache below the specified limits at runtime and keeps | |
82 statistics up to date on each compile. This option is mostly useful | |
83 if you manually modify the cache contents or believe that the cache | |
84 size statistics may be inaccurate. | |
85 | |
86 dit(bf(-C)) Clear the entire cache, removing all cached files. | |
87 | |
88 dit(bf(-F <maxfiles>)) This sets the maximum number of files allowed in | |
89 the cache. The value is stored inside the cache directory and applies | |
90 to all future compiles. Due to the way the value is stored the actual | |
91 value used is always rounded down to the nearest multiple of 16. | |
92 | |
93 dit(bf(-M <maxsize>)) This sets the maximum cache size. You can specify | |
94 a value in gigabytes, megabytes or kilobytes by appending a G, M or K | |
95 to the value. The default is gigabytes. The actual value stored is | |
96 rounded down to the nearest multiple of 16 kilobytes. | |
97 | |
98 enddit() | |
99 | |
100 manpagesection(INSTALLATION) | |
101 | |
102 There are two ways to use ccache. You can either prefix your compile | |
103 commands with "ccache-swig" or you can create a symbolic link between | |
104 ccache-swig and the names of your compilers. The first method is most | |
105 convenient if you just want to try out ccache or wish to use it for | |
106 some specific projects. The second method is most useful for when you | |
107 wish to use ccache for all your compiles. | |
108 | |
109 To install for usage by the first method just copy ccache-swig to somewhere | |
110 in your path. | |
111 | |
112 To install for the second method do something like this: | |
113 verb( | |
114 cp ccache-swig /usr/local/bin/ | |
115 ln -s /usr/local/bin/ccache-swig /usr/local/bin/gcc | |
116 ln -s /usr/local/bin/ccache-swig /usr/local/bin/g++ | |
117 ln -s /usr/local/bin/ccache-swig /usr/local/bin/cc | |
118 ln -s /usr/local/bin/ccache-swig /usr/local/bin/swig | |
119 ) | |
120 This will work as long as /usr/local/bin comes before the path to gcc | |
121 (which is usually in /usr/bin). After installing you may wish to run | |
122 "which gcc" to make sure that the correct link is being used. | |
123 | |
124 Note! Do not use a hard link, use a symbolic link. A hardlink will | |
125 cause "interesting" problems. | |
126 | |
127 manpagesection(EXTRA OPTIONS) | |
128 | |
129 When run as a compiler front end ccache usually just takes the same | |
130 command line options as the compiler you are using. The only exception | |
131 to this is the option '--ccache-skip'. That option can be used to tell | |
132 ccache that the next option is definitely not a input filename, and | |
133 should be passed along to the compiler as-is. | |
134 | |
135 The reason this can be important is that ccache does need to parse the | |
136 command line and determine what is an input filename and what is a | |
137 compiler option, as it needs the input filename to determine the name | |
138 of the resulting object file (among other things). The heuristic | |
139 ccache uses in this parse is that any string on the command line that | |
140 exists as a file is treated as an input file name (usually a C | |
141 file). By using --ccache-skip you can force an option to not be | |
142 treated as an input file name and instead be passed along to the | |
143 compiler as a command line option. | |
144 | |
145 manpagesection(ENVIRONMENT VARIABLES) | |
146 | |
147 ccache uses a number of environment variables to control operation. In | |
148 most cases you won't need any of these as the defaults will be fine. | |
149 | |
150 startdit() | |
151 | |
152 dit(bf(CCACHE_DIR)) the CCACHE_DIR environment variable specifies | |
153 where ccache will keep its cached compiler output. The default is | |
154 "$HOME/.ccache". | |
155 | |
156 dit(bf(CCACHE_TEMPDIR)) the CCACHE_TEMPDIR environment variable specifies | |
157 where ccache will put temporary files. The default is the same as | |
158 CCACHE_DIR. Note that the CCACHE_TEMPDIR path must be on the same | |
159 filesystem as the CCACHE_DIR path, so that renames of files between | |
160 the two directories can work. | |
161 | |
162 dit(bf(CCACHE_LOGFILE)) If you set the CCACHE_LOGFILE environment | |
163 variable then ccache will write some log information on cache hits | |
164 and misses in that file. This is useful for tracking down problems. | |
165 | |
166 dit(bf(CCACHE_VERBOSE)) If you set the CCACHE_VERBOSE environment | |
167 variable then ccache will display on stdout all the compiler invocations | |
168 that it makes. This can useful for debugging unexpected problems. | |
169 | |
170 dit(bf(CCACHE_PATH)) You can optionally set CCACHE_PATH to a colon | |
171 separated path where ccache will look for the real compilers. If you | |
172 don't do this then ccache will look for the first executable matching | |
173 the compiler name in the normal PATH that isn't a symbolic link to | |
174 ccache itself. | |
175 | |
176 dit(bf(CCACHE_CC)) You can optionally set CCACHE_CC to force the name | |
177 of the compiler to use. If you don't do this then ccache works it out | |
178 from the command line. | |
179 | |
180 dit(bf(CCACHE_PREFIX)) This option adds a prefix to the command line | |
181 that ccache runs when invoking the compiler. Also see the section | |
182 below on using ccache with distcc. | |
183 | |
184 dit(bf(CCACHE_DISABLE)) If you set the environment variable | |
185 CCACHE_DISABLE then ccache will just call the real compiler, | |
186 bypassing the cache completely. | |
187 | |
188 dit(bf(CCACHE_READONLY)) the CCACHE_READONLY environment variable | |
189 tells ccache to attempt to use existing cached object files, but not | |
190 to try to add anything new to the cache. If you are using this because | |
191 your CCACHE_DIR is read-only, then you may find that you also need to | |
192 set CCACHE_TEMPDIR as otherwise ccache will fail to create the | |
193 temporary files. | |
194 | |
195 dit(bf(CCACHE_CPP2)) If you set the environment variable CCACHE_CPP2 | |
196 then ccache will not use the optimisation of avoiding the 2nd call to | |
197 the pre-processor by compiling the pre-processed output that was used | |
198 for finding the hash in the case of a cache miss. This is primarily a | |
199 debugging option, although it is possible that some unusual compilers | |
200 will have problems with the intermediate filename extensions used in | |
201 this optimisation, in which case this option could allow ccache to be | |
202 used. | |
203 | |
204 dit(bf(CCACHE_NOCOMPRESS)) If you set the environment variable | |
205 CCACHE_NOCOMPRESS then there is no compression used on files that go | |
206 into the cache. However, this setting has no effect on how files are | |
207 retrieved from the cache, compressed results will still be usable. | |
208 | |
209 dit(bf(CCACHE_NOSTATS)) If you set the environment variable | |
210 CCACHE_NOSTATS then ccache will not update the statistics files on | |
211 each compile. | |
212 | |
213 dit(bf(CCACHE_NLEVELS)) The environment variable CCACHE_NLEVELS allows | |
214 you to choose the number of levels of hash in the cache directory. The | |
215 default is 2. The minimum is 1 and the maximum is 8. | |
216 | |
217 dit(bf(CCACHE_HARDLINK)) If you set the environment variable | |
218 CCACHE_HARDLINK then ccache will attempt to use hard links from the | |
219 cache directory when creating the compiler output rather than using a | |
220 file copy. Using hard links is faster, but can confuse programs like | |
221 'make' that rely on modification times. Hard links are never made for | |
222 compressed cache files. | |
223 | |
224 dit(bf(CCACHE_RECACHE)) This forces ccache to not use any cached | |
225 results, even if it finds them. New results are still cached, but | |
226 existing cache entries are ignored. | |
227 | |
228 dit(bf(CCACHE_UMASK)) This sets the umask for ccache and all child | |
229 processes (such as the compiler). This is mostly useful when you wish | |
230 to share your cache with other users. Note that this also affects the | |
231 file permissions set on the object files created from your | |
232 compilations. | |
233 | |
234 dit(bf(CCACHE_HASHDIR)) This tells ccache to hash the current working | |
235 directory when calculating the hash that is used to distinguish two | |
236 compiles. This prevents a problem with the storage of the current | |
237 working directory in the debug info of a object file, which can lead | |
238 ccache to give a cached object file that has the working directory in | |
239 the debug info set incorrectly. This option is off by default as the | |
240 incorrect setting of this debug info rarely causes problems. If you | |
241 strike problems with gdb not using the correct directory then enable | |
242 this option. | |
243 | |
244 dit(bf(CCACHE_UNIFY)) If you set the environment variable CCACHE_UNIFY | |
245 then ccache will use the C/C++ unifier when hashing the pre-processor | |
246 output if -g is not used in the compile. The unifier is slower than a | |
247 normal hash, so setting this environment variable loses a little bit | |
248 of speed, but it means that ccache can take advantage of not | |
249 recompiling when the changes to the source code consist of | |
250 reformatting only. Note that using CCACHE_UNIFY changes the hash, so | |
251 cached compiles with CCACHE_UNIFY set cannot be used when | |
252 CCACHE_UNIFY is not set and vice versa. The reason the unifier is off | |
253 by default is that it can give incorrect line number information in | |
254 compiler warning messages. | |
255 | |
256 dit(bf(CCACHE_EXTENSION)) Normally ccache tries to automatically | |
257 determine the extension to use for intermediate C pre-processor files | |
258 based on the type of file being compiled. Unfortunately this sometimes | |
259 doesn't work, for example when using the aCC compiler on HP-UX. On | |
260 systems like this you can use the CCACHE_EXTENSION option to override | |
261 the default. On HP-UX set this environment variable to "i" if you use | |
262 the aCC compiler. | |
263 | |
264 dit(bf(CCACHE_STRIPC)) If you set the environment variable | |
265 CCACHE_STRIPC then ccache will strip the -c option when invoking | |
266 the preprocessor. This option is primarily for the Sun Workshop | |
267 C++ compiler as without this option an unwarranted warning is displayed: | |
268 CC: Warning: "-E" redefines product from "object" to "source (stdout)" | |
269 when -E and -c is used together. | |
270 | |
271 dit(bf(CCACHE_SWIG)) When using SWIG as the compiler and it does not | |
272 have 'swig' in the executable name, then the CCACHE_SWIG environment | |
273 variable needs to be set in order for ccache to work correctly with | |
274 SWIG. The use of CCACHE_CPP2 is also recommended for SWIG due to some | |
275 preprocessor quirks, however, use of CCACHE_CPP2 can often be skipped | |
276 -- check your generated code with and without this option set. Known | |
277 problems are using preprocessor directives within %inline blocks and | |
278 the use of '#pragma SWIG'. | |
279 | |
280 enddit() | |
281 | |
282 manpagesection(CACHE SIZE MANAGEMENT) | |
283 | |
284 By default ccache has a one gigabyte limit on the cache size and no | |
285 maximum number of files. You can set a different limit using the | |
286 "ccache -M" and "ccache -F" options, which set the size and number of | |
287 files limits. | |
288 | |
289 When these limits are reached ccache will reduce the cache to 20% | |
290 below the numbers you specified in order to avoid doing the cache | |
291 clean operation too often. | |
292 | |
293 manpagesection(CACHE COMPRESSION) | |
294 | |
295 By default on most platforms ccache will compress all files it puts | |
296 into the cache | |
297 using the zlib compression. While this involves a negligible | |
298 performance slowdown, it significantly increases the number of files | |
299 that fit in the cache. You can turn off compression setting the | |
300 CCACHE_NOCOMPRESS environment variable. | |
301 | |
302 manpagesection(HOW IT WORKS) | |
303 | |
304 The basic idea is to detect when you are compiling exactly the same | |
305 code a 2nd time and use the previously compiled output. You detect | |
306 that it is the same code by forming a hash of: | |
307 | |
308 itemization( | |
309 it() the pre-processor output from running the compiler with -E | |
310 it() the command line options | |
311 it() the real compilers size and modification time | |
312 it() any stderr output generated by the compiler | |
313 ) | |
314 | |
315 These are hashed using md4 (a strong hash) and a cache file is formed | |
316 based on that hash result. When the same compilation is done a second | |
317 time ccache is able to supply the correct compiler output (including | |
318 all warnings etc) from the cache. | |
319 | |
320 ccache has been carefully written to always produce exactly the same | |
321 compiler output that you would get without the cache. If you ever | |
322 discover a case where ccache changes the output of your compiler then | |
323 please let me know. | |
324 | |
325 manpagesection(USING CCACHE WITH DISTCC) | |
326 | |
327 distcc is a very useful program for distributing compilation across a | |
328 range of compiler servers. It is often useful to combine distcc with | |
329 ccache, so that compiles that are done are sped up by distcc, but that | |
330 ccache avoids the compile completely where possible. | |
331 | |
332 To use distcc with ccache I recommend using the CCACHE_PREFIX | |
333 option. You just need to set the environment variable CCACHE_PREFIX to | |
334 'distcc' and ccache will prefix the command line used with the | |
335 compiler with the command 'distcc'. | |
336 | |
337 manpagesection(SHARING A CACHE) | |
338 | |
339 A group of developers can increase the cache hit rate by sharing a | |
340 cache directory. The hard links however cause unwanted side effects, | |
341 as all links to a cached file share the file's modification timestamp. | |
342 This results in false dependencies to be triggered by timestamp-based | |
343 build systems whenever another user links to an existing | |
344 file. Typically, users will see that their libraries and binaries are | |
345 relinked without reason. To share a cache without side effects, the | |
346 following conditions need to be met: | |
347 | |
348 itemization( | |
349 it() Use the same bf(CCACHE_DIR) environment variable setting | |
350 it() Unset the bf(CCACHE_HARDLINK) environment variable | |
351 it() Make sure everyone sets the CCACHE_UMASK environment variable | |
352 to 002, this ensures that cached files are accessible to everyone in | |
353 the group. | |
354 it() Make sure that all users have write permission in the entire | |
355 cache directory (and that you trust all users of the shared cache). | |
356 it() Make sure that the setgid bit is set on all directories in the | |
357 cache. This tells the filesystem to inherit group ownership for new | |
358 directories. The command "chmod g+s `find $CCACHE_DIR -type d`" might | |
359 be useful for this. | |
360 it() Set bf(CCACHE_NOCOMPRESS) for all users, if there are users with | |
361 versions of ccache that do not support compression. | |
362 ) | |
363 | |
364 manpagesection(HISTORY) | |
365 | |
366 ccache was inspired by the compilercache shell script script written | |
367 by Erik Thiele and I would like to thank him for an excellent piece of | |
368 work. See | |
369 url(http://www.erikyyy.de/compilercache/)(http://www.erikyyy.de/compilercache/) | |
370 for the Erik's scripts. | |
371 ccache-swig is a port of the original ccache with support added for use | |
372 with SWIG. | |
373 | |
374 I wrote ccache because I wanted to get a bit more speed out of a | |
375 compiler cache and I wanted to remove some of the limitations of the | |
376 shell-script version. | |
377 | |
378 manpagesection(DIFFERENCES FROM COMPILERCACHE) | |
379 | |
380 The biggest differences between Erik's compilercache script and ccache | |
381 are: | |
382 itemization( | |
383 it() ccache is written in C, which makes it a bit faster (calling out to | |
384 external programs is mostly what slowed down the scripts). | |
385 it() ccache can automatically find the real compiler | |
386 it() ccache keeps statistics on hits/misses | |
387 it() ccache can do automatic cache management | |
388 it() ccache can cache compiler output that includes warnings. In many | |
389 cases this gives ccache a much higher cache hit rate. | |
390 it() ccache can handle a much wider ranger of compiler options | |
391 it() ccache avoids a double call to cpp on a cache miss | |
392 ) | |
393 | |
394 manpagesection(CREDITS) | |
395 | |
396 Thanks to the following people for their contributions to ccache | |
397 itemization( | |
398 it() Erik Thiele for the original compilercache script | |
399 it() Luciano Rocha for the idea of compiling the pre-processor output | |
400 to avoid a 2nd cpp pass | |
401 it() Paul Russell for many suggestions and the debian packaging | |
402 ) | |
403 | |
404 manpageauthor() | |
405 | |
406 ccache was written by Andrew Tridgell | |
407 url(http://samba.org/~tridge/)(http://samba.org/~tridge/). | |
408 ccache was adapted to create ccache-swig for use with SWIG by William Fulton. | |
409 | |
410 If you wish to report a problem or make a suggestion then please email | |
411 the SWIG developers on the swig-devel mailing list, see | |
412 url(http://www.swig.org/mail.html)(http://www.swig.org/mail.html) | |
413 | |
414 ccache is released under the GNU General Public License version 2 or | |
415 later. Please see the file COPYING for license details. | |
416 | |
417 whenhtml(htmlcommand( | |
418 | |
419 </body> | |
420 </html> | |
421 | |
422 )) |