Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Side by Side Diff: docs/updating_clang_format_binaries.md

Issue 1309473002: WIP: Migrate Wiki content over to src/docs (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « docs/updating_clang.md ('k') | docs/use_find_bugs_for_android.md » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(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.
OLDNEW
« no previous file with comments | « docs/updating_clang.md ('k') | docs/use_find_bugs_for_android.md » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698