Skip to content

Instantly share code, notes, and snippets.

@nhiroki
Last active October 22, 2015 01:35
Show Gist options
  • Save nhiroki/814230e072da46fd5ca5 to your computer and use it in GitHub Desktop.
Save nhiroki/814230e072da46fd5ca5 to your computer and use it in GitHub Desktop.
How to build Blink/Chromium on MacOSX (as of Jan 8, 2015)

2015/01/08 時点での Blink/Chromium のチェックアウト/ビルド手順のメモ for MacOSX です。

チェックアウト/ビルド手順は頻繁に更新されているので、最新で正確な情報は本家の手順書を確認してください。この手順にしたがって生じたいかなる損害も私は責任を負いません。

xcode ぐらいはあらかじめインストールしておいてください。

チェックアウトからビルドまで

適当なディレクトリに depot_tools をチェックアウトしてパスを通す。チェックアウトに必要なツールなどが入っている。

$ mkdir ~/bin
$ cd ~/bin
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools
$ export PATH=$PATH:`pwd`/depot_tools

(2014/01/11 PATH 設定で '/depot_tools' が抜けてたので修正。Thanks @yoya)

適当にディレクトリを作る

$ mkdir chromium
$ cd chromium

Blink と Chromium のソースコードをチェックアウトする ('blink' だけ指定すれば両方チェックアウトされる)。前述のガイドによると "Either way, fetch checks out more than 10GB of data and can take more than a half hour on the fastest connections, and many hours on a slow connection." なので、気長に待つ。私は 7 時間くらいかかった。

$ fetch blink

チェックアウトが完了すると、下記のファイルが生成される。ソースコードのディレクトリへ移動する。

$ ls -a
.gclient .gclient_entries src
$ cd src

(Linux only) 依存しているライブラリなどをインストールする

$ ./build/install-build-deps.sh

GYP を使ってビルドファイルの生成。shared_library を指定してビルドするとライブラリのリンク時間が短縮できる (メモリ少ないマシンの場合はこれがないとリンクでコケるかも?)。

$ ./build/gyp_chromium -Dcomponent=shared_library

Ninja を使ってビルド。これもとても時間がかかるので気長に待つ。ハイパフォーマンスなマシンを使ってる場合は適当に -j オプションを設定すべし。

$ ninja -C out/Debug

ビルド完了。起動してみる。

$ ./out/Debug/Chromium.app/Contents/MacOS/Chromium

おなじみの画面が表示されれば成功!

ソースコードの同期

src/ と src/third_party/WebKit/ が master ブランチにいることを確認。

$ cd path/to/src
$ git branch
$ cd third_party/WebKit
$ git branch

git pull する。

$ cd path/to/src
$ git pull
$ cd third_party/WebKit
$ git pull

gclient sync する。

$ cd path/to/src
$ gclient sync

終わり。git log でコミットが降ってきてることを確認。

Random notes

  • gyp やビルド設定をいじったら必ず $ ./build/gyp_chromium を叩く
  • release build したい場合は $ ninja -C out/Release を叩く
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment