OLD | NEW |
(Empty) | |
| 1 Instructions on how to update the [clang-format binaries](ClangFormat.md) that c
ome with a checkout of Chromium. |
| 2 |
| 3 <h2>Prerequisites</h2> |
| 4 |
| 5 You'll need a Windows machine, a Linux machine, and a Mac; all capable of buildi
ng clang-format. You'll also need permissions to upload to the appropriate googl
e storage bucket. Chromium infrastructure team members have this, and others can
be granted the permission based on need. Talk to ncarter or hinoka about gettin
g access. |
| 6 |
| 7 <h2>Pick a head svn revision</h2> |
| 8 |
| 9 Consult http://llvm.org/svn/llvm-project/ for the current head revision. This wi
ll be the CLANG\_REV you'll use later to check out each platform to a consistent
state. |
| 10 |
| 11 <h2>Build a release-mode clang-format on each platform</h2> |
| 12 |
| 13 Follow the the official instructions here: http://clang.llvm.org/get_started.htm
l. |
| 14 |
| 15 Windows step-by-step: |
| 16 ``` |
| 17 [double check you have the tools you need] |
| 18 where cmake.exe # You need to install this. |
| 19 where svn.exe # Maybe fix with: set PATH=%PATH%;D:\src\depot_tools\svn_bin |
| 20 "c:\Program Files (x86)\Microsoft Visual Studio 12.0\vc\vcvarsall.bat" amd64_x86 |
| 21 |
| 22 |
| 23 set CLANG_REV=198831 # You must change this value (see above) |
| 24 |
| 25 [from a clean directory, check out and build] |
| 26 rmdir /S /Q llvm |
| 27 rmdir /S /Q llvm-build |
| 28 mkdir llvm |
| 29 mkdir llvm-build |
| 30 svn co http://llvm.org/svn/llvm-project/llvm/trunk@%CLANG_REV% llvm |
| 31 cd llvm\tools |
| 32 svn co http://llvm.org/svn/llvm-project/cfe/trunk@%CLANG_REV% clang |
| 33 cd ..\..\llvm-build |
| 34 set CC=cl |
| 35 set CXX=cl |
| 36 cmake -G Ninja ..\llvm -DCMAKE_BUILD_TYPE=Release -DLLVM_USE_CRT_RELEASE=MT -DLL
VM_ENABLE_ASSERTIONS=NO -DLLVM_ENABLE_THREADS=NO -DPYTHON_EXECUTABLE=d:\src\depo
t_tools\python276_bin\python.exe |
| 37 ninja clang-format |
| 38 bin\clang-format.exe --version |
| 39 ``` |
| 40 |
| 41 Mac & Linux step-by-step: |
| 42 ``` |
| 43 # Check out. |
| 44 export CLANG_REV=198831 # You must change this value (see above) |
| 45 rm -rf llvm |
| 46 rm -rf llvm-build |
| 47 mkdir llvm |
| 48 mkdir llvm-build |
| 49 svn co http://llvm.org/svn/llvm-project/llvm/trunk@$CLANG_REV llvm |
| 50 cd llvm/tools |
| 51 svn co http://llvm.org/svn/llvm-project/cfe/trunk@$CLANG_REV clang |
| 52 cd ../../llvm-build |
| 53 |
| 54 # Option 1: with cmake |
| 55 MACOSX_DEPLOYMENT_TARGET=10.9 cmake -G Ninja -DCMAKE_BUILD_TYPE=Release -DLLV
M_ENABLE_ASSERTIONS=NO -DLLVM_ENABLE_THREADS=NO ../llvm/ |
| 56 time caffeinate ninja clang-format |
| 57 strip bin/clang-format |
| 58 |
| 59 # (On Linux, to build with clang, which produces smaller binaries, add this to
your cmake invocation. |
| 60 # On Mac, the system compiler is already clang so it's not needed there.) |
| 61 -DCMAKE_C_COMPILER=$PWD/../chrome/src/third_party/llvm-build/Release+Asserts/b
in/clang -DCMAKE_CXX_COMPILER=$PWD/../chrome/src/third_party/llvm-build/Release+
Asserts/bin/clang++ |
| 62 ``` |
| 63 Platform specific notes: |
| 64 * Windows: Visual Studio 2013 only. |
| 65 * Linux: so far (as of January 2014) we've just included a 64-bit binary. It's
important to disable threading, else clang-format will depend on libatomic.so.1
which doesn't exist on Precise. |
| 66 * Mac: Remember to set `MACOSX_DEPLOYMENT_TARGET` when building! If you get co
nfigure warnings, you may need to install XCode 5 and avoid a goma environment. |
| 67 |
| 68 <h2>Upload each binary to google storage</h2> |
| 69 |
| 70 Copy the binaries into your chromium checkout (under `src/buildtools/(win|linux6
4|mac)/clang-format(.exe?)`). |
| 71 For each binary, you'll need to run upload\_to\_google\_storage.py according to
the instructions in [README.txt](https://code.google.com/p/chromium/codesearch#c
hromium/src/buildtools/clang_format/README.txt). This will upload the binary int
o a publicly accessible google storage bucket, and update `.sha1` file in your C
hrome checkout. You'll check in the `.sha1` file (but NOT the clang-format binar
y) into source control. In order to be able to upload, you'll need write permiss
ion to the bucket -- see the prerequisites. |
| 72 |
| 73 <h2>Copy the helper scripts and update README.chromium</h2> |
| 74 |
| 75 There are some auxiliary scripts that ought to be kept updated in lockstep with
the clang-format binary. These get copied into third\_party/clang\_format/script
s in your Chromium checkout. |
| 76 |
| 77 The `README.chromium` file ought to be updated with version and date info. |
| 78 |
| 79 <h2>Upload a CL according to the following template</h2> |
| 80 |
| 81 ``` |
| 82 Update clang-format binaries and scripts for all platforms. |
| 83 |
| 84 I followed these instructions: |
| 85 https://code.google.com/p/chromium/wiki/UpdatingClangFormatBinaries |
| 86 |
| 87 The binaries were built at clang revision ####### on ####DATETIME####. |
| 88 |
| 89 BUG= |
| 90 ``` |
| 91 |
| 92 The change should <b>always</b> include new `.sha1` files for each platform (we
want to keep these in lockstep), should <b>never</b> include `clang-format` bina
ries directly. The change should <b>always</b> update `README.chromium` |
| 93 |
| 94 clang-format binaries should weigh in at 1.5MB or less. Watch out for size regre
ssions. |
OLD | NEW |