遥かへのスピードランナー

シリコンバレーでAndroidアプリの開発してます。コンピュータービジョン・3D・アルゴリズム界隈にもたまに出現します。

Firefoxの内部動作を理解する方法2-WindowsでFirefoxをビルドしてみる

前回Firefoxの内部動作を理解する方法1-デバッグログを出力するのエントリーでNSPRモジュールを利用したデバッグログ出力方法を紹介しました。が、これだけでもまだ不満がある方もいると思います。
たとえばNSPRモジュールは、日時やメッセージ出力元のモジュール名などを表示してくれないので、実際デバッグログとソースコードを照らし合わせるのも結構大変だったりします。
もっと細かいログが見たい、とか、カスタマイズして動作を確認してみたい、という人にはFirefoxを自分でビルドしてみるのがお勧めです。
Mozilla各プロダクトのビルド手順は、MozillaBuild Documentationでもまとめられてはいるんですが、ちょっと分かりづらかったり、リンク切れがあったりするので自分なりにまとめてみました。

ビルド対象

準備するもの

以下のツール郡が必須になります。
VisualStudioのバージョンはFirefoxのバージョンに応じて何種類か選択肢があるのでhttp://developer.mozilla.org/ja/Windows_Build_Prerequisitesで確認しましょう。
Firefox2.0.0.9にはVisualStudio6.0が最適みたいです。

  • VisualStudio 6.0
  • VisualStudio 6.0SP5
  • Visual C++ 6.0 Processor Pack

VS持ってない人は買いましょう。SP6ではビルドできないみたいです。
また、Processor Packは、microfostの日本語のページではSP4用のものしかありませんので、SP5用にはhttp://msdn.microsoft.com/en-us/vs2005/aa718349.aspxからダウンロードします。
ちなみに、VSのインストールが必須といっても、別にVSのGUIを使ってFirefoxをビルドするわけではなく、あくまでコマンドラインでのビルドなので注意。

なぜかVista SDKが必須。
http://www.microsoft.com/downloads/details.aspx?familyid=4377F86D-C913-4B5C-B87E-EF72E5B4E065&displaylang=en
からダウンロードしましょう。

  • MozillaBuild

http://ftp.mozilla.org/pub/mozilla.org/mozilla/libraries/win32/MozillaBuildSetup-1.3.exe
からダウンロードして導入。

ソースコードの入手・展開

ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
あたりから欲しいバージョンのソースコードを入手。
今回は2.0.0.9をターゲットにしているので、
ftp://ftp.mozilla.org/pub/mozilla.org/firefox/releases/2.0.0.9/source/firefox-2.0.0.9-source.tar.bz2
からダウンロードして展開します。
注意しておきたいのは、

  • ソースを展開する場所は「Documents and Settings」など空白の入ったパス以下を避ける
  • 展開後のフォルダ名はmozillaから変更しない

この2点です。両方ともmakeが失敗する可能性があります。
今回はC:\workspace\mozillaに展開されたものとして話を進めます。

設定ファイルの編集

ソースを展開したC:\workspace\mozillaフォルダの直下に.mozconfigファイルを作ります。
[C:\workspace\mozilla\.mozconfig]

. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
ac_add_options --disable-tests

"mk_add_options MOZ_OBJDIR="は、make後のオブジェクトファイルの置き場を指定するオプションです。
これを指定しないと再ビルドするときmake cleanしなければいけないなど面倒なので、指定しておきます。
この設定では、C:\workspace\mozilla\ff-opt以下にオブジェクトファイルが作られ、再ビルドするときはMOZ_OBJDIRの指定を別フォルダに変更してやるか、ff-optフォルダを削除すればビルドすることができます。
"ac_add_options --disable-tests"はテストプログラムのビルドを省略するオプションです。自分がビルドしたときに、テスト系の一部プログラムがコンパイルできずにビルドが止まっていたのでこちらのオプションを指定しています。
他に設定できるオプションなど、より詳しくはhttp://developer.mozilla.org/ja/Configuring_Build_Optionsを参照。
ちなみにデバッグ用のビルドオプションである

  • ac_add_options --disable-optimize
  • ac_add_options --enable-debug

も試してみましたが、デバッグ出力が特に多いわけではなく、ビルドに時間がかかり動作も不安定になるのでお勧めはしません。。

ビルド

C:\mozilla-build\start-msvc6.bat
を叩いて、MSYSコマンドプロンプトを起動する。無事起動すると入力待ちになるので、

$ cd /c/workspace/mozilla

とソースを展開した場所まで移動して

$ make -f client.mk build

としてmakeを実行。環境にもよりますが、大体1時間程度でビルドは終わると思います。
エラーが表示されなければ無事ビルド完了で、C:\workspace\mozilla\ff-opt\dist\bin\firefox.exeが出来ているはずです。

起動

C:\workspace\mozilla\ff-opt\dist\bin\firefox.exeをクリックして、profileの選択画面が表示されれば成功です。(自分の環境の場合、1度クリックしただけは反応しない場合がありましたが2度目のクリックで起動しました。)テスト用のprofileかなんかを適当に作って起動しちゃいましょう。
ところどころにBon Echoと書いてありますが間違いなくFirefoxです。(Bon EchoFirefoxの開発コードネーム)

まとめ

VisualStudioさえあれば、結構簡単にビルドできます。
ちょこっと自分で直したりしても意外にスムーズに動くので、お勧め!