お茶漬けぶろぐ

WindowsでChromiumをビルドする

諸事情によりオレオレビルドをしたくなった。ちょろっと修正したバイナリが欲しかったのだ。
今回はWindowsで使う必要があったのだが、我が家で一番パワーのあるCPUであるRyzen 3700XなマシンにはArch Linuxが載っているので、ここでソース修正を試行錯誤した後、Windowsで同様のソース修正をしてバイナリを生成するって感じのことをしようと思う。
Arch LinuxでのビルドはPKGBUILD使えばなんにも難しくないので割愛。ここではWindowsでビルドするぞ。つっても基本的にはChecking out and Building Chromium for Windowsに従うだけ。

必要なものは以下。カッコ書きは今回の環境。
・64bitなIntel CPU(Core i7 6700K)
・RAMは16GB以上推奨(48GB)
・NTFSでフォーマットされた100GB以上のストレージ(Samsung 860 QVO 1TB)
・Visual Studio 2019
・Windows7以降(Windows 10 Pro 1909)

Visual Studio 2019のインストール

まずはVS2019のインストール。Communityで良いのでてきとうに。インストールするコンポーネントは、C++によるデスクトップ開発と、個別で最新の v142 ビルド ツールの C++ MFC (x86 および x64)最新の v142 ビルド ツールの C++ ATL (x86 および x64)を入れた。(ほんとにこれが必要なのかはちょっとわからん)
最後に、Windows 10 SDK (10.0.18362.0)が入っていることを確認して、インストール。

それから、以下の手順でデバッギングのためのツールをインストールしておく。
コントロールパネル→プログラム→プログラムと機能→Windows Software Development Kit - Windows 10.0.18362.1を右クリック→変更→Changeにチェックを入れてNext→Debugging Tools For Windowsにチェックを入れてChangeボタンでインストール。

depot_toolsのインストール

次、depot_toolsのインストール。手順サイトからスッとダウンロードできる。パスにスペースを含まないてきとうなところに展開して、PATHを通す。(中に色々ツールが入ってるので、これが優先されるように)
システム環境変数にDEPOT_TOOLS_WIN_TOOLCHAIN(値は0)を追加する。
この状態で、cmd.exeを開いて、gclientを実行すると、諸々の必要なツール郡がインストールされるので、これを待つ。
インストールが完了した状態で、where pythonを実行して、depot_tools内のpython.batが呼ばれていることを確認する。(インストール完了確認)

ソースの入手

つぎ。
まずはgitの初期設定から。

$ git config --global user.name "hoge"
$ git config --global user.email "hoge@fuga.com"
$ git config --global core.autocrlf false
$ git config --global core.filemode false
$ git config --global branch.autosetuprebase always

パスにスペースを含まない場所を選んで、てきとうにフォルダを作る。そこの中で、fetch chromiumでリポジトリをcloneする。フルで要らない場合は--no-historyとかしろって書いてあるけど気にしない。20GB超ダウンロードしたし、最終的には1時間半くらいかかったかな。

$ mkdir chromium
$ cd chromium
$ fetch chromium

ビルド

ChromiumではビルドツールとしてNinjaというものを使んだけど、そのための.ninjaファイルを生成するのがGNというツール。こいつを使ってコンフィグ(ビルドディレクトリ)を作成して、autoninjaコマンドでビルドする。
Visual StudioをIDEとして使う場合には--ideオプションをつけろとかあるけど、今回は修正内容がはっきりしているので、気にしない。

$ cd src
$ gn gen out/Default
$ autoninja -C out/Default chrome

0:50頃スタートして、バイナリのタイムスタンプが5:20だったので、4時間半かかった。他にも色々やってたしこんなもんか?

手順通りに進めるだけでうまくいくっていいよね(?)

< お名前.comのIPアドレス更新を自動化する

ArchLinux+btrfsでストレージを組む練習 >