2013/07/02 時点での最新版、Firefox 22.0について説明します。
ビルドするのに必要な環境が無い方は、まずこちらの記事をお読みください。
Visual C++ 2010 ExpressでFirefoxをビルド 環境準備編
作業ディレクトリは、お好みでどこでも良いのですが、ディレクトリ名に2バイト文字やスペースは入らない方が良いと思います。
以下の説明で、作業ディレクトリは、
C:\mozilla\
としています。
Firefoxソースコードは、こちらからダウンロードします。
http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/22.0/source/
firefox-22.0.source.tar.bz2
ソースコードを、作業ディレクトリに保存します。
次に、
C:\mozilla-build\
start-msvc10.bat
を実行すると、ターミナルウィンドウが開きます。
ターミナルウィンドウで、作業ディレクトリに移動し、ソースコードを解凍します。
$ cd /c/mozilla/
$ tar xjf firefox-22.0.source.tar.bz2
私のPCでは、解凍が終わるまで、20〜30分くらいかかりました。
ソースコードは、以下の場所に解凍されます。
C:\mozilla\mozilla-release\
解凍が終わったら、日本語ロケールファイルをダウンロードします。
ターミナルウィンドウで、以下のようにコマンドを実行します。
$ cd /c/mozilla/mozilla-release/
$ hg clone -u FIREFOX_22_0_RELEASE http://hg.mozilla.org/releases/l10n/mozilla-release/ja l10n/ja
「FIREFOX_22_0_RELEASE」は、ソースコードのバージョンに合ったタグを指定してください。
このままだと、エラーでビルドが止まってしまう所があり、以下の記事にパッチがあります。
https://bugzilla.mozilla.org/show_bug.cgi?id=775939
Attachments の下にある、
fix v2: always absolute path
のリンクを右クリックして、名前を付けてリンク先を保存します。
fix-gyp-makefile.patch
ソースコードのディレクトリ
/c/mozilla/mozilla-release/
で、パッチを適用します。
$ patch -p1 < fix-gyp-makefile.patch
次に、.mozconfig ファイルを作成します。
私はこんな感じにしてみました。
. /c/mozilla/mozilla-release/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox_build
ac_add_options --with-l10n-base="../l10n"
ac_add_options --enable-ui-locale=ja
ac_add_options --enable-official-branding
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --disable-debug-symbols
ac_add_options --enable-optimize="-O2 -GT -fp:fast -arch:SSE2"
ac_add_options --enable-jemalloc
--with-l10n-base で、ロケールファイルのディレクトリを、MOZ_OBJDIRからの相対パスで指定しています。
--enable-optimize のオプションは、追求すればもっと速いバイナリができるかもしれませんが、ほどほどにしています。
Firefoxのロゴマークを使用する時は、ソースコードや設定ファイルを一切改変してはいけないなど、いろいろ条件がありますので、--enable-official-branding を指定した場合は、再配布せずに自分用としてお使いください。
2013/07/02 追記
--enable-official-branding を削除すると、「Mozilla Firefox」ではなく「Nightly」という名前になって、ロゴマークが夜の地球のようなデザインになります。
Windows上では、先頭がドットのファイルは作成できないので、
mozconfig.txt
などのファイル名で作成して、
C:\mozilla\mozilla-release\
にファイルをコピーしてから、ターミナル上で .mozconfig にリネームします。
$ mv mozconfig.txt .mozconfig
ここまで準備ができたら、Firefoxをビルドします。
カレントディレクトリは、
/c/mozilla/mozilla-release/
で、以下のコマンドを実行します。
$ python build/pymake/make.py -f client.mk -j4 > build.log 2>&1
エラーで止まった時の確認用に、build.log にメッセージを保存していますが、失敗しないことが分かったら、/dev/null に捨てても良いと思います。
並列実行の数値は、私のPCがDual core CPUなので -j4 としていますが、Quad core CPUなら -j6 とか -j8 とか、もっと多くても良いかもしれません。
いろいろ試して、最適な数値を見つけてみてください。
C:\mozilla\mozilla-release\firefox_build\dist\bin\
の中に、
firefox.exe
ができていれば、ビルド完了です。
ちなみに、Athlon 64 X2 3800+、RAM 2GBというPC環境で、ビルド完了まで3時間半〜4時間くらいかかりました。
ビルドが完了したら、以下のコマンドで、インストーラーを作成します。
$ python build/pymake/make.py -f client.mk installer
C:\mozilla\mozilla-release\firefox_build\dist\install\sea\
の中に、
firefox-22.0.ja.win32.installer.exe
ができていれば完成です。
あとは、firefox-22.0.ja.win32.installer.exe を実行して、ウィザードに従ってインストールすれば、公式のFirefoxと同じように使えます。