Skip to content

Commit

Permalink
update chromium clang docs
Browse files Browse the repository at this point in the history
- remove references to gyp
- remove line implying that lld only works on win (it works on linux too)

BUG=

Review-Url: https://codereview.chromium.org/2536093004
Cr-Commit-Position: refs/heads/master@{#435098}
  • Loading branch information
nico authored and Commit bot committed Nov 29, 2016
1 parent 26d99d1 commit 2a46c2d
Showing 1 changed file with 17 additions and 35 deletions.
52 changes: 17 additions & 35 deletions docs/clang.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ Clang is the default compiler.

Run `gn args` and add `is_clang = true` to your args.gn file.

Build: `ninja -C out/Debug chrome`
Build: `ninja -C out/gn chrome`

## Reverting to gcc on linux

Expand Down Expand Up @@ -57,19 +57,6 @@ To test the FindBadConstructs plugin, run:
./test.py ../../../../third_party/llvm-build/Release+Asserts/bin/clang \
../../../../third_party/llvm-build/Release+Asserts/lib/libFindBadConstructs.so)

These instructions are for GYP which no longer works. Something similar needs
to be set up for the GN build if you want to do this. For reference, here are
the old instructions: To run [other plugins](writing_clang_plugins.md), add
these to your `GYP_DEFINES`:

* `clang_load`: Absolute path to a dynamic library containing your plugin
* `clang_add_plugin`: tells clang to run a specific PluginASTAction

So for example, you could use the plugin in this directory with:

* `GYP_DEFINES='clang=1 clang_load=/path/to/libFindBadConstructs.so
clang_add_plugin=find-bad-constructs' gclient runhooks`

## Using the clang static analyzer

See [clang_static_analyzer.md](clang_static_analyzer.md).
Expand All @@ -83,10 +70,10 @@ Things should compile, and all tests should pass. You can check these bots for
how things are currently looking:
http://build.chromium.org/p/chromium.fyi/console?category=win%20clang

``` shell
```shell
python tools\clang\scripts\update.py
# run `gn args` and add `is_clang = true` to your args.gn, then...
ninja -C out\Debug chrome
ninja -C out\gn chrome
```

The `update.py` script only needs to be run once per checkout. Clang will be
Expand All @@ -102,35 +89,30 @@ Current brokenness:

## Using a custom clang binary

These instructions are for GYP which no longer works. Something similar needs
to be set up for the GN build if you want to do this. For reference, here are
the old instructions:

If you want to try building Chromium with your own clang binary that you've
already built, set `make_clang_dir` to the directory containing `bin/clang`
(i.e. the directory you ran cmake in, or your `Release+Asserts` folder if you
use the configure/make build). You also need to disable chromium's clang plugin
by setting `clang_use_chrome_plugins=0`, as it likely won't load in your custom
clang binary.
Set `clang_base_path` in your args.gn to the llvm build directory containing
`bin/clang` (i.e. the directory you ran cmake). This [must][1] be an absolute
path. You also need to disable chromium's clang plugin.

Here's an example that also disables debug info and enables the component build
(both not strictly necessary, but they will speed up your build):

```shell
GYP_DEFINES="clang=1 fastbuild=1 component=shared_library \
clang_use_chrome_plugins=0 make_clang_dir=$HOME/src/llvm-build" \
build/gyp_chromium
```
clang_base_path = getenv("HOME") + "/src/llvm-build"
clang_use_chrome_plugins = false
is_debug = false
symbol_level = 1
is_component_build = true
is_clang = true # Implicitly set on Mac, Linux, iOS; needed on Win and Android.
```

You can then run `head out/Release/build.ninja` and check that the first to
You can then run `head out/gn/toolchain.ninja` and check that the first to
lines set `cc` and `cxx` to your clang binary. If things look good, run `ninja
-C out/Release` to build.
-C out/gn` to build.

If your clang revision is very different from the one currently used in chromium

* Check `tools/clang/scripts/update.py` to find chromium's clang revision
* You might have to tweak warning flags. Or you could set `werror=` in the
line above to disable warnings as errors (but this only works on Linux).
* You might have to tweak warning flags.

## Using LLD

Expand All @@ -141,5 +123,5 @@ Linux support, where it can link Chrome approximately twice as fast as gold and
MSVC's link.exe as of this writing. LLD does not yet support generating PDB
files, which makes it hard to debug Chrome while using LLD.

Set `use_lld = true` in args.gn. Currently this configuration is only supported
on Windows.
Set `use_lld = true` in args.gn.

0 comments on commit 2a46c2d

Please sign in to comment.