Index: docs/ccache_mac.md |
diff --git a/docs/ccache_mac.md b/docs/ccache_mac.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..1c2252939664e91ec0aa0f0711f030b79ea351a6 |
--- /dev/null |
+++ b/docs/ccache_mac.md |
@@ -0,0 +1,99 @@ |
+# Using CCache on Mac |
+ |
+[ccache](http://ccache.samba.org/) is a compiler cache. It speeds up |
+recompilation of C/C++ code by caching previous compilations and detecting when |
+the same compilation is being done again. This often results in a significant |
+speedup in common compilations, especially when switching between branches. This |
+page is about using ccache on Mac with clang and the NinjaBuild system. |
+ |
+[TOC] |
+ |
+## Installation |
+ |
+In order to use [ccache](http://ccache.samba.org) with |
+[clang](http://code.google.com/p/chromium/wiki/Clang), you need to use the |
+current [git HEAD](http://ccache.samba.org/repo.html), since the most recent |
+version (3.1.9) doesn't contain the |
+[patch needed](https://github.com/jrosdahl/ccache/pull/4) for using |
+[the chromium style plugin](clang.md#Using_plugins). |
+ |
+To install ccache with [homebrew](http://mxcl.github.com/homebrew/), use the |
+following command: |
+ |
+```shell |
+brew install --HEAD ccache |
+``` |
+ |
+You can also download and install yourself (with GNU automake, autoconf and |
+libtool installed): |
+ |
+```shell |
+git clone git://git.samba.org/ccache.git cd ccache |
+./autogen.sh |
+./configure && make && make install |
+``` |
+ |
+Make sure ccache can be found in your `$PATH`. |
+ |
+You can also just use the current released version of ccache (3.1.8 or 3.1.9) |
+and disable the chromium style plugin with `clang_use_chrome_plugins=0` in your |
+`GYP_DEFINES`. |
+ |
+## Use with GYP |
+ |
+We have to set two environment variables (`CC` and `CXX`) before calling |
+`gclient runhooks` or `build/gyp_chromium`, given you are currently in the |
+`chromium/src` directory: |
+ |
+```shell |
+export CC="ccache clang -Qunused-arguments" |
+export CXX="ccache clang++ -Qunused-arguments" |
+``` |
+ |
+Then run: |
+ |
+```shell |
+GYP_GENERATORS="ninja" ./build/gyp_chromium |
+``` |
+ |
+or |
+ |
+```shell |
+GYP_GENERATORS="ninja" gclient runhooks |
+``` |
+ |
+(Instead of relying on the clang/clang++ for building chromium in your `$PATH`, |
+you can also use the absolute path here.) |
+ |
+## Use with GN |
+ |
+You just need to set the use\_ccache variable. Do so like the following: |
+ |
+```shell |
+gn gen out-gn --args='use_ccache=true' |
+``` |
+ |
+## Build |
+ |
+In the build phase, the following environment variables must be set (assuming |
+you are in `chromium/src`): |
+ |
+```shell |
+export CCACHE_CPP2=yes |
+export CCACHE_SLOPPINESS=time_macros |
+export PATH=`pwd`/third_party/llvm-build/Release+Asserts/bin:$PATH |
+``` |
+ |
+Then you can just run ninja as normal: |
+ |
+```shell |
+ninja -C out/Release chrome |
+``` |
+ |
+## Optional Steps |
+ |
+* Configure ccache to use a different cache size with `ccache -M <max size>`. |
+ You can see a list of configuration options by calling ccache alone. * The |
+ default ccache directory is `~/.ccache`. You might want to symlink it to |
+ another directory (for example, when using FileVault for your home |
+ directory). |