NOTE: substantive changes to this page (non-editorial) should be reviewed by one of the build-config peers
このドキュメントは Mac OS X が動作する PowerPC と Intel の両方の CPU でネイティブに動作する universal binary として Mozilla アプリケーションをビルドする事を可能にします。Universal binary は以下を含みます:
- それぞれアークテクチャに向けたコンパイルされた実行コード。例えば次のもの:
- 主な実行ファイル (例えば、
firefox-bin
) - 共有ライブラリとプラグインのバイナリ (例えば、
libxpcom.dylib
)
- 主な実行ファイル (例えば、
- 実行ファイル以外の全ての一つのコピー。 次のものを含みます:
- アプリケーションのリソース (例えば、
browser.jar
) - 言語パッケージ (例えば、
en-US.jar
)
- アプリケーションのリソース (例えば、
Universal binary の Mozilla アプリケーションは PowerPC と Intel ベースの Mac の両方でビルドする事ができます。
前提条件
Universal binary の Mozilla 製品のビルドを試みる前に、 Mac OS X build prerequisites の内容に詳しくなっているべきでしょう。標準的な Mac の要件に加えて、 Universal なビルドには以下の要求があります:
- Mozilla Source: Universal なビルドシステムは trunk と、
MOZILLA_1_8_BRANCH
、 そして 2006 年 2 月以降のMOZILLA_1_8_0_BRANCH
をサポートしています。それ以前のブランチに移植される計画は今のところありません。 - Operating System: Mac OS X 10.4 (“Tiger”) またはそれ以降。 これは Mozilla をビルドするのに必要であって、実行するのに必要というわけではありません。 Mozilla は PowerPC プロセッサの 10.2 のような以前の Mac OS X のバージョンでも動作し続けるでしょう。
- 開発環境: Xcode Tools 2.2.1 またはそれ以降。 Apple は Xcode のアップデート のダウンロードを提供しています。
- libIDL と GLib. 現在のところ、これらを Universal binary としてインストールする必要はありません。 libIDL と GLib をインストールするのはビルドをするシステムだけで十分で、 通常の ビルド要求 に従ってください。これは libIDL と GLib の Universal binary がビルドに適しているとされるまで有効な一時的な回避策です。
- Shared Menus Cocoa Framework は Camino のビルドにだけ要求されます。 Universal binary の Camino をビルドする時は、 Universal binary のこの framework をインストールしてください。 解説は SharedMenusCocoa のUniversal binary をビルド にあります。
設定
このセクションではどのように必要なファイルをチェックアウトし、Mozilla を Universal Binary としてビルドをする設定を行うかについて解説します。
準備
Mozilla のソースツリー上に提供されているとある mozconfig
ファイルが Universal Binary のビルドに適した設定を行ないます。これは mozilla/build/macosx/universal/mozconfig
に配置されています。もし CVS を使っているのであれば、ビルドを試みる前に必ずこのファイルを client.mk
と 他のビルドに要求される mozconfig
ファイルと共にチェックアウトをしなくてはなりません。
このコマンドは Mozilla の trunk から Universal Binary の Firefox を作る準備を行なう十分なコマンドです:
cvs -d :pserver:[email protected]:/cvsroot co mozilla/client.mk mozilla/browser/config/mozconfig mozilla/build/macosx/universal/mozconfig
Your .mozconfig File
事前に .mozconfig
ファイルを用意しているのであれば、必ず $topsrcdir/build/macosx/universal/mozconfig
を source 【訳注: source コマンド、指定したファイルを実行する。" . " で代用可能】してください。これは他のどのプロダクト固有の mozconfig
よりも後に source されるべきで、これは万が一に備えて他のオプションを上書きします。
Universal Binary は オブジェクトディレクトリとしてビルドすべきなので、 MOZ_OBJDIR
は必ずセットしてください。 オブジェクトディレクトリの場所は重要ではなく、一箇所設定すればよいです。
次はUniversal Binary の Firefox をリリース向け設定でビルドをするのに適した .mozconfig
のサンプルです:
. $topsrcdir/browser/config/mozconfig . $topsrcdir/build/macosx/universal/mozconfig ac_add_options --enable-optimize=-O2 ac_add_options --disable-shared ac_add_options --enable-static ac_add_options --disable-tests ac_add_app_options ppc --enable-prebinding mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../build
このサンプルでは、オブジェクトディレクトリは mozilla
ディレクトリの近くに、 build
というディレクトリで配置しています。
ac_add_options
で指定しているオプションは PowerPC と Intel のビルドの両方で設定するのに使われています。 ac_add_app_options
で指定しているオプションは CPU を指定するのにのみ使われるでしょう。 ppc
か i386
を ac_add_app_options
の後に置きます。このサンプルの設定では、 事前結合 (prebinding) は PowerPC のみで有効となります。この設定は推奨されます。なぜなら事前結合は Mozilla をサポートしている PowerPC での古いバージョンの Mac OS X で起動時間を短くなるからです。 全ての Intel プロセッサを含む Mac OS X の最近のバージョンでは、事前結合はメリットはなく、 Intel ビルドでは事前結合は有効になりません。
設定について
Universal binary の設定では、PowerPCとIntel ビルドにわけてそれぞれのオプションを調整したものをセットします。主なものとしては:
- コンパイラ: PowerPC ビルドは GCC 3.3 から生成され、 Intel ビルドは GCC 4.0 から生成されるでしょう。これは常に自動的に起こり、
gcc_select
を用いてシステムの標準のコンパイラの選択を完全に上書きするでしょう。- GCC 4.0 は C++ のソースコードから Mac OS X 10.3.9 かそれ以降に動作する実行コードを唯一作り出します。 Mozilla は PowerPC 上の前のリリースの Mac OS X をサポートするため、 GCC 3.3 は PowerPC で必ず使わます。
- GCC 4.0 は Intel 上 Mac OS X でアプリケーションをビルドできる唯一のコンパイラです。
- Mac OS X SDK: PowerPC ビルドは Mac OS X 10.2.8 SDK から生成され、 10.2 のような前の Mac OS X のリリースでも動作するでしょう。 Intel ビルドは Mac OS X 10.4u (“Universal”) SDK から生成され、このSDK は Intel 上の Mac OS X のみをサポートするでしょう。
ビルド
一旦適切な場所に設定を置けば、Mozilla を Universal Binary としてビルドするのは通常のビルドを実行するのと同じぐらい簡単です。次のようにタイプします:
make -w -f client.mk
ビルドに必要なソースコードはチェックアウトされ、コンパイルされるでしょう。 二つのビルド手順が作られます: 一つは PowerPC 用の Mozilla のコンパイル、もう一つは Intel プロセッサ用です。当然のことながら、このプロセスでは一つのプロセッサ用のコンパイルの倍ぐらいの時間がかかります。この二つの作業が終わったら、自動的にマージされた一つのUniversal BInaryが得られます。
ビルドの結果
objdir の中に二つのサブディレクトリ、ppc
と i386
が作られます。それぞれのディレクトリにはプロセッサ固有の完全ビルドが含まれます。Universal Binary のマージは objdir の ppc/dist/universal
へ i386/dist/universal
へのシンボリックリンクと共に配置されます。
パッケージング
Universal Binary として設定されているもっと他のプロダクトでは、パッケージを行う段階でマージされた Universal Binary を含んだディスクイメージを生成します。パッケージングする段階になるためには、新しい objdir の構造について頭に入れておく必要があります。もし、さきほどの サンプルの .mozconfig
を使うのであれば、Firefox のUniversal ディスクイメージをビルドするには次のようにタイプします:
make -C ../build/ppc/browser/installer
ディスクイメージは ../build/ppc/dist
に生成されるでしょう。また、簡単にi386
を
ppc
の代わりにする事ができ、単にディスクイメージが生成される場所に影響するだけです。
Universal パッケージ化を無視して、単独のプロセッサ向けのアプリケーションを含むディスクイメージを作るのなら、UNIVERSAL_BINARY
変数を上書きして設定を空にします。次のは Intel プロセッサ向けの Firefox をディスクイメージとしてパッケージして、結果として全ての PowerPC 上では起動できないでしょう。
make -C ../build/i386/browser/installer UNIVERSAL_BINARY=
補足
クロスコンパイル
Universal ビルドプロセスは PowerPC 向けのビルドをした後に続いて Intel 向けのビルドをします。 いずれかのビルドはクロスコンパイルとして動作するためネイティブではありません。必要ならばMozillaのクロスコンパイルサポート をMac OS X 上で使って、完全な Univarsal ビルドを行なわない事も可能です。前提条件 はUniversal ビルドと同じですが、Universal binary の設定をする代わりに次の設定を.mozconfig
に追加します:
# もし PowerPC 上から Intel 向けにクロスコンパイルをするなら、次の四行を使います: CC="gcc-4.0 -arch i386" CXX="g++-4.0 -arch i386" ac_add_options --target=i386-apple-darwin8.0.0 ac_add_options --enable-macos-sdk=/Developer/SDKs/MacOSX10.4u.sdk # もし Intel 上から PowerPC 向けにクロスコンパイルをするなら、次の四行を使います: # CC="gcc-3.3 -arch ppc" # CXX="g++-3.3 -arch ppc" # ac_add_options --target=powerpc-apple-darwin8.0.0 # ac_add_options --enable-macos-sdk=/Developer/SDKs/MacOSX10.2.8.sdk # この箇所はどちらのクロスコンパイル環境でも同じ記述となります。 HOST_CC="gcc-4.0" HOST_CXX="g++-4.0" RANLIB=ranlib AR=ar AS=$CC LD=ld STRIP="strip -x -S" CROSS_COMPILE=1
SharedMenusCocoa のUniversal binary をビルド
Camino は現在の所追加の必須条件として Shared Menus Cocoa framework が要求されます。提供されているこの framework のバイナリは PowerPC のみで、そのため (Universal binary ビルドを含む) Intel ビルドは失敗するでしょう。Shared Menus Cocoa framework のパッケージはソースコードを含んでいます。この項目では framework のソースコードから Universal binary をビルドする方法について述べます。
- SharedMenusCocoa を ダウンロードして、ディスクイメージをマウントし、
SharedMenusCocoa
フォルダをあなたのハードディスクにコピーします。これでディスクイメージをイジェクトして捨てる事ができます。 SharedMenusCocoa
フォルダを開いて、 中にあるSharedMenusCocoa.pbproj
プロジェクトファイルをダブルクリックします。これで Xcode が起動するでしょう。- 現れたダイアログの上で、プロジェクトファイルを Xcode 2.1 のフォーマットへアップグレードするための “コピーをアップグレード” をクリックします。 アップグレードされたコピーに
SharedMenusCocoa.xcodeproj
という名前をつけます。 - “プロジェクト” メニューから “すべてのターゲットをネイティブにアップグレード” を選択し、現れたシートの中の “アップグレード” をクリックします。
- “ネイティブ・ターゲット・アップグレード・ログ” ウィンドウが現れます。これは閉じるでしょう。
- “プロジェクト” メニューから “プロジェクト設定を編集” を選択し、設定ウィンドウで “ビルド” タブを選択します。
- アークテクチャ をダブルクリックして “ppc i386” と入力してリターンを押して “アークテクチャ” を
ppc i386
にセットします。 - 次の四つの設定を追加します。設定は設定リストの下の “+” ボタンをクリックする事で追加できます。これらの設定を追加しましょう:
GCC_VERSION_i386 = 4.0
GCC_VERSION_ppc = 3.3
SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk
SDKROOT_ppc = /Developer/SDKs/MacOSX10.2.8.sdk
- 設定ウィンドウを閉じます。
- “プロジェクト” メニューから “アクティブなビルド構成を設定” を選んで “Default” にセットします。
- プロジェクトウィンドウのツールバーにある “ビルド” をクリックして、ビルド処理が完了するのを待ちます。エラーもなくうまく完了するか、いくつか警告が出る程度でしょう。
- これで Universal binary の SharedMenusCocoa が得られました。Xcode を終了します。
build/Default/SharedMenusCocoa.framework
からSharedMenusCocoa.framework
を/Library/Frameworks
へコピーします。
SDK から framework へシンボリックリンクを張るのを忘れないでください。shell からでは次のように打ちます:
sudo mkdir -p /Developer/SDKs/MacOSX10.2.8.sdk/Library/Frameworks sudo ln -s /Library/Frameworks/SharedMenusCocoa.framework /Developer/SDKs/MacOSX10.2.8.sdk/Library/Frameworks sudo mkdir -p /Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks sudo ln -s /Library/Frameworks/SharedMenusCocoa.framework /Developer/SDKs/MacOSX10.4u.sdk/Library/Frameworks
さらなる情報は Camino build instructions にあります。