このページでは、最新の開発版として Firefox や Thunderbird を Windows でビルドする際の基本的な手順について説明します。
ハードウェア・ソフトウェアの要件
Firefox のビルドプロセスでは I/O と CPU 両方ともに負担がかかり、最近のマシンでもビルドに長い時間がかかります。Mozilla のプロダクトを開発するために必要な最小・推奨環境は次の通りです。
- 少なくとも 4 GB の RAM。8 GB 以上を推奨します。
- 35GB の ディスク容量。これは Visual Studio 2015 Community Edition や必要な SDK 群、MozillaBuild パッケージ、Mercurial ソースリポジトリ、そしてコンパイル時に必要となる一時的なスペースを含めたものです。Firefox のビルドプロセスには大量の I/O が発生するため、SSD の利用を推奨します。
- Windows 7 (ServicePack 1) 以上かつ 64 ビット版のOS。2015 年の初めより、32 ビット版の Windows マシンによるビルドはほとんど出来なくなっています。32 ビット Windows 用の Firefox であれば、今はまだ Windows XP/SP3 でもビルドできます。なお、Windows Vista 以前で VS 2015 Community Edition を利用することはできません。
概要
Mozilla ビルドプロセスでは、一般的な Windows システムにはインストールされていないツールが多く必要となります。以下の手順では Visual Studio に加え、適切なバージョンの bash / GNU make / autoconf / Mercurial が同梱されている MozillaBuild をインストールします。
Firefox 48 以降の公式ビルドには Visual Studio 2015 が使用されています。該当するバージョンの Firefox は Visual Studio 2015 でビルドしてください。
Firefox 37 - 47 は Visual Studio 2013 (VC12) でビルドされていますが、Visual Studio 2015 でもビルドできる可能性があります(とはいえ、Visual Studio 2015 ですべてのリビジョンをビルドできるとは限りません)。
Firefox 36 以前のビルドには、より古いバージョンの Visual Studio が使用されています。
ビルド環境のインストール
ビルドを成功させるためには以下の手順を踏んでください。以下の必須ソフトウェアにはいくつか注意点があります。
- Windows Update を実行し、システムが最新であることを確認してください。
- Visual Studio Community 2015 (無償)をインストールします。Visual Studio 2015 のカスタム設定で Common Tools for Visual C++ 2015 もインストールしてください。もしくは有償版の Visual Studio でも構いません。Firefox のビルドが目的であれば、Microsoft Foundation Classes for C++ のような VS2015 Community のオプションインストールは不要です。なお、VS2015 よりも前の Visual Studio は利用できません。Firefox のコードベースが依存している C++ の機能が、 VS2012 以前のバージョンでサポートされていないためです。
- (省略可)ビルドシステムに使われている Python 拡張をコンパイルしたい場合は、VS 2015 に加えて Visual C++ 2008 Express (無料)をインストールしてください(デフォルトの Python 2.7.x on Windows は VC 2008 コンパイラでビルドされているため)。また、"mach resource-usage" や "mach doctor"、"mach android-emulator"、もしくは talos テストをローカルで回したい場合にも、psutil をビルドするために VC 2008 が必要となります。
- MozillaBuild をダウンロードしてインストールしてください。これには追加のビルドツール群が含まれています。もし既に Cygwin がインストールされている場合は、Tips をご覧ください(Mozilla Build のインストーラを実行した後、'correct settings' して再インストールするようなエラーが表示された場合は、その選択肢に従うと上手くいきます)。MozillaBuild についての詳細と最新版へのリンクは https://wiki.mozilla.org/MozillaBuild で参照してください。
場合によっては、以下の問題が発生するかもしれません。
アンチウイルスソフトやシステム保護機能の影響で、ビルドプロセスが極端に遅くなったり不具合が生じる。
- Windows Defender やアンチウイルスソフトの中には、ビルドに大きな影響を与えるものがあります。例えば、問題なく mozilla-central をクローンできたにもかかわらず、
./mach build
を実行するとファイルの不在によって失敗する場合、この問題が生じているかもしれません。よく知られたセキュリティバグのリグレッションテストには、アンチウイルスソフトが脅威と検知してしまうものが含まれており、それらのファイルが検疫されてしまうことがあります。この問題を解決するには、ソースディレクトリ(mozilla-source
)とオブジェクトディレクトリ(mozilla-build
)を Windows Defender やアンチウイルスソフトのホワイトリストに追加すること、またファイルが失われた場合は "hg update -C
" を実行してソースツリーを復元することが必要になります。こうすれば、次回の./mach build
は問題なく実行できるはずです。
Thunderbird と SeaMonkey で MAPI ヘッダファイルが必要になる。
- Visual Studio 2013/2015 (Windows SDK 8.1/10) には MAPI ヘッダファイルが含まれないため、MAPI ヘッダーファイルを Microsoft からダウンロードしてインストールする必要があります。続いてビルドプロセスで参照できるようにするため、ヘッダファイルを Windows SDK のインクルードディレクトリへコピーする必要があります。コピー先のディレクトリは
C:\Program Files (x86)\Windows Kits\8.1\Include\shared
やC:\Program Files (x86)\Windows Kits\10\Include\10.0.nnnnn.0\shared
です。ただし、nnnnn
の箇所には最も大きい数字が入ります。
リリースビルドの作成 (全ての Visual Studio バージョン)
- June 2010 DirectX SDK をインストールしてください。これは Windows XP 環境で必要となる D3D compiler DLL (d3dcompiler_43.dll) の古いバージョンをビルドにパッケージング含めるためのものです。
これらのツールをインストールする際、パスにスペースや + などの改行文字、引用符、メタ文字を含むようなフォルダにツールをインストールすると Mozilla ビルドプロセスは動作しません。スペースを含むパスにインストールされるべき Visual Studio ツールと SDK は例外です。インストールパスについてはインストール時の初期値を利用することを強くお勧めします。
MozillaBuild
MozillaBuild パッケージには、Mozilla のソフトウェアをビルドするために必要な他のソフトウェアが含まれています。 これには MSYS ビルド環境、Mercurial、autoconf-2.13、CVS、Python、YASM、NSIS、UPX が含まれており、 また省略可能とはいえ便利なツールの wget や emacs も同様に含まれています。
現在の MozillaBuild パッケージをここからダウンロードしてください。
通常、 パッケージは c:\mozilla-build
にインストールされます。ここではデフォルトパスを使用することを推奨しています。パスには空白を含めないでください。なお、インストーラが Windows レジストリに変更を加えることはありません。バイナリファイルの中には、実行するために Visual C++ Redistributable package が必要となるかもしれません。
Expectation setting: MozillaBuild は "UNIX-like" な環境を提供し、この環境は Mozilla のソースコードのビルドやコミットを便利に実行することに特化しています。 最近の Linux ディストリビューションで利用できるコマンドラインツールの多くは利用できませんが、これらのツールは 10 年以上前のものです(特に MSYS で提供されているツールなど)。
問題の原因となるのはこのような古いツールであり、期待した通りに動作しなかったり、バグを引き起こしたり、今まで当たり前だったコマンドライン引数も受け付けないことがあります。例えば、ソースツリーをコピーしようとして cp -rf src1 src2
のコマンドを実行しても現在では動作しません。なぜなら cp
のバージョンが低いからです(いくつかのファイルで "cp: will not create hard link" のエラーが出ます)。
つまり、MozillaBuild には Mozilla のソースコードで開発する際に不可欠なツールだけが用意されており、その範囲を超えて利用した際につまずいても驚いてはいけないということです。
MozillaBuild コマンドプロンプトを開く
ビルド環境に必要なツール群をインストールし終わったら、MozillaBuild をインストールしたディレクトリにある以下のバッチファイルを実行してください(デフォルトでは c:¥mozilla-build が該当するフォルダです)。
start-shell-msvc2013.bat
(旧式 32-bit build for Visual Studio 2013)start-shell-msvc2013-x64.bat
(旧式 64-bit build for Visual Stuido 2013)start-shell-msvc2015.bat
(32-bit build for Visual Studio 2015 - 新しく開発に参加する場合はこれを利用してください。)start-shell-msvc2015-x64.bat
(64-bit build for Visual Studio 2015)
これによって、前述した Mozilla コードベースのビルド用に正しく設定された MSYS / BASH コマンドプロンプトが起動します。他の全てのコマンドも、実行するとコマンドプロンプトウィンドウとして起動します。(Windows の CMD.EXE シェルと似ていますが別物であることに注意してください。)
ソースコードのディレクトリを作成する
"c:/mozilla-source" または "c:/thunderbird-src" のように、ソースコード専用の新しいディレクトリを作ると良いでしょう。
cd /c; mkdir mozilla-source; cd mozilla-source
これで Firefox のソースコードを取得・ビルドする準備が整いました。以下の章はトラブルシューティングの際に参照するものと覚えておけば大丈夫です。それでは Firefox の簡単なビルド方法(ソースコードのダウンロード) や、Thunderbird の簡単なビルド方法(ソースコードのダウンロード)に進んでください。
コマンドプロンプトのヒントと賢い方法
- 文字列をペーストして貼り付けるには、コマンドプロンプトのタイトルバーを右クリックしてメニューの中の「編集」の上にカーソルを持っていき、その中の「貼り付け」をクリックします。同様に、メニュー中の「プロパティ」における「簡易編集モード」のラジオボタンをクリックして簡易編集モードにすると、右クリックで文字列のペーストができます。
- 既に Cygwin がインストールされている場合、
start-shell-msvc2013.bat
によって拡張されたパスの先頭に MozillaBuild ディレクトリが指定されているか確認してください(設定されているパスを確認するにはecho $PATH
を実行してください)。 start-shell-msvc2013.bat
から起動した MSYS / BASH シェルでは、パスの区切り文字としてUNIX と同じくスラッシュ (/) を用います(Windows でのバックスラッシュ (\) ではありません)。そのため、ディレクトリc:\mydir
に移動したい場合は、MSYS シェルに意図を明確に伝えるため、cd /c/mydir
と打つことになります。とはいえ、c:\mydir
やc:/mydir
の形式もサポートされています。- インストール先のフォルダをデフォルト設定のまま変えていなければ、MSYS のルートディレクトリは /
c/mozilla-build/msys
になります。このディレクトリの下でビルドはしないほうが良いでしょう。ビルドには/c/mydir
といった他の
ディレクトリを使用してください。
よくある問題、ヒント、制限など
- Debugging Mozilla on Windows FAQ: Windows で Mozilla をデバックする際の tips です。
- マシンのアーキテクチャ設定が誤っていると、ビルド失敗する可能性があります。64 bit の Mozilla build を使用する場合は、以下の行を mozconfig ファイルに追記する必要があるかもしれません。
ac_add_options --target=x86_64-pc-mingw32 ac_add_options --host=x86_64-pc-mingw32
- 環境変数
PATH
に引用符 (") が入っていると、ビルドに失敗する可能性があります。MozillaBuid サブシェルは渡された引用符を適切に変換することができません。引用符は通常必要ないため、削除されることがあります。 - 環境変数
PYTHON
がセットされていると、ビルドに失敗する可能性があります。大抵すぐに次のようなエラーコードが表示されるでしょう "The system cannot find the file specified
"。この問題を解決するためには、Mozilla build tools を実行する前に同じコマンドシェルで "unset PYTHON
" とタイプしてください。PYTHON
変数に空の値を設定するのではなく、未設定かどうか実際に確かめてみてください。"SET PYTHON
" と打った時にコマンドシェルが "Environment variable PYTHON is not defined
"(日本なら "環境変数PHTYONが定義されていません")と返す必要があります。 - 既に Cygwin がインストールされていると、ビルドに失敗する可能性があります。MozillaBuild ディレクトリ(
/c/mozilla-build
とその配下)が環境変数PATH
の先頭にあることを確認して下さい。もしこれでも失敗する場合、Cygwin のディレクトリをPATH
から削除するか、Cygwin を入れていない環境でビルドしてみてください。 - NSIS や他のツールは最新の Mozillabuild に付属しているバージョンしかサポートしていません。他のバージョンを用いると、おそらくビルドに失敗するでしょう。
- 自分のビルドを他の人に配布したい場合、mozconfig の中の
WIN32_REDIST_DIR=$VCINSTALLDIR\redist\x86\Microsoft.VC80.CRT
の部分を
Microsoft CRT DLLs パッケージが取得できるようにセットする必要があります。 - Microsoft Antimalware service がコンパイルを妨げる場合があり、主にビルド中に
conftest.exe
関連のエラーを出すことがあります。これを治すには、exclusion settings にオブジェクトディレクトリを追加する必要があります。 - ”atlbase.hが探せません。そして、Visual Studio 10 Expressとplatform SDKをインストールしてある必要があります。" といったエラーに遭遇した場合、guess-msvc.bat に VC10 のインストール有無を確認させないよう、レジストリーキーを削除する必要があるかもしれません。キーは HKLM\SOFTWARE\Microsoft\VisualStudio\10.0\Setup\VC です。
- "second C linkage of overloaded function '_interlockedbittestandset' not allowed" といったエラーに遭遇した場合、intrin.h と windows.h が同時にインクルードされています。#defineを使用して関数名のインスタンスを再定義してください。詳しくは using intrin.hを参照してください。
- Windows のGNU makeでは並行ビルド (
-jN
) ができません。現行バージョンのMozzilabuild
に含まれているmozmake
コマンドを使用してください。mach
コマンドでビルドすると、利用できるコマンドのうち最善な make コマンドが実行されます。
- まだ
make
コマンドの実行時に時々クラッシュする場合、一部の Windows システムで Bash シェルの適切な動作が Windows Security Updates に妨害されているかもしれません。ここで Windows XP を使用していた場合、コントロールパネルのプログラムの追加と削除からWindows XP セキュリティアップデートの KB933729 と KB970238 をアンインストールする必要があります。 - このうち前者は WindowsXP サービスパック 3 (KB936929)にも組み込まれているため、もし SP3 をインストールしていたならアンインストールして確実に SP2 にし、KB 933729, KB936929, KB970238 を「除いて」 Windows Update をする必要があります。そしてこれらが自動的にインストールされることを防ぐためにコントロールパネルの "自動アップデート" ダイアログの中の "ダウンロードとインストールをせずに通知する" を選択します。
Microsoft DirectX SDK (Windows SDK Version7以前の場合)
Window SDK バージョン 7 以前を使用している場合、 WebGL のレンダリングを Windows 上でサポートするには、(特に) June 2010 DirectX SDK の ANGLE GLES-on-D3D9 レンダーが必要です。 DirectX SDKの一部をインストールするときは、あなたはエンドユーザーの再頒布可能パッケージをインストールする必要があり、これに関するチェックマークをインストーラーで外さないでください。
Firefox の完全なリリース版をビルドする場合には、任意の VisualStudio のバージョンに対して June 2010 Directx SDK が必要となります。とはいえ、Windows XP と互換性のあるビルドを作成するために古いバージョンの D3D compiler DLL (d3dcompiler_43.dll) をパッケージ化しているに過ぎません。 Windows 7 以降を対象とした開発であれば、ビルドに必要なファイルは Windows 8 SDK にすべて入っています。