OLD | NEW |
1 # Clang | 1 # Clang |
2 | 2 |
3 [Clang](http://clang.llvm.org/) is a compiler with many desirable features | 3 [Clang](http://clang.llvm.org/) is a compiler with many desirable features |
4 (outlined on their website). | 4 (outlined on their website). |
5 | 5 |
6 Chrome can be built with Clang. It is now the default compiler on Mac and Linux | 6 Chrome can be built with Clang. It is now the default compiler on Mac and Linux |
7 for building Chrome, and it is currently useful for its warning and error | 7 for building Chrome, and it is currently useful for its warning and error |
8 messages on Android and Windows. | 8 messages on Android and Windows. |
9 | 9 |
10 See | 10 See |
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 python tools\clang\scripts\update.py | 87 python tools\clang\scripts\update.py |
88 # run `gn args` and add `is_clang = true` to your args.gn, then... | 88 # run `gn args` and add `is_clang = true` to your args.gn, then... |
89 ninja -C out\Debug chrome | 89 ninja -C out\Debug chrome |
90 ``` | 90 ``` |
91 | 91 |
92 The `update.py` script only needs to be run once per checkout. Clang will be | 92 The `update.py` script only needs to be run once per checkout. Clang will be |
93 kept up to date by `gclient runhooks`. | 93 kept up to date by `gclient runhooks`. |
94 | 94 |
95 Current brokenness: | 95 Current brokenness: |
96 | 96 |
97 * Debug info is very limited. | |
98 * To get colored diagnostics, you need to be running | 97 * To get colored diagnostics, you need to be running |
99 [ansicon](https://github.com/adoxa/ansicon/releases). | 98 [ansicon](https://github.com/adoxa/ansicon/releases). |
| 99 * Debug info does now work, but support for it is new. If you see something |
| 100 not working right, please file a bug and mark it as blocking the |
| 101 [clang/win debug info tracking bug](https://crbug.com/636111). |
100 | 102 |
101 ## Using a custom clang binary | 103 ## Using a custom clang binary |
102 | 104 |
103 These instructions are for GYP which no longer works. Something similar needs | 105 These instructions are for GYP which no longer works. Something similar needs |
104 to be set up for the GN build if you want to do this. For reference, here are | 106 to be set up for the GN build if you want to do this. For reference, here are |
105 the old instructions: | 107 the old instructions: |
106 | 108 |
107 If you want to try building Chromium with your own clang binary that you've | 109 If you want to try building Chromium with your own clang binary that you've |
108 already built, set `make_clang_dir` to the directory containing `bin/clang` | 110 already built, set `make_clang_dir` to the directory containing `bin/clang` |
109 (i.e. the directory you ran cmake in, or your `Release+Asserts` folder if you | 111 (i.e. the directory you ran cmake in, or your `Release+Asserts` folder if you |
(...skipping 24 matching lines...) Expand all Loading... |
134 | 136 |
135 **Experimental!** | 137 **Experimental!** |
136 | 138 |
137 LLD is a relatively new linker from LLVM. The current focus is on Windows and | 139 LLD is a relatively new linker from LLVM. The current focus is on Windows and |
138 Linux support, where it can link Chrome approximately twice as fast as gold and | 140 Linux support, where it can link Chrome approximately twice as fast as gold and |
139 MSVC's link.exe as of this writing. LLD does not yet support generating PDB | 141 MSVC's link.exe as of this writing. LLD does not yet support generating PDB |
140 files, which makes it hard to debug Chrome while using LLD. | 142 files, which makes it hard to debug Chrome while using LLD. |
141 | 143 |
142 Set `use_lld = true` in args.gn. Currently this configuration is only supported | 144 Set `use_lld = true` in args.gn. Currently this configuration is only supported |
143 on Windows. | 145 on Windows. |
OLD | NEW |