目次
このページはMacintoshでMozillaをビルドしようというみなさんのための完全な情報源となることを目指しています。不足があれば連絡をください(sfraser@netscape.com)。やり方についての質問や、ビルドプロセス改良の提案、その他このページの情報に関係のないemail
はご遠慮ください。そういった問い合わせはnewsgroup (netscape.public.mozilla.mac )に投稿すべきです。
もしあなたが他のプラットフォームのプログラマなら、あなたの変更をMacintoshっぽくするための情報が必要になるでしょう。そんなあなたのためのページは
ここです。
必要なシステム
Mozillaをビルドし、実行するためには、牛のようなMacが必要です。最低1GBのディスクスペースと128MB以上のメモリ。さらに開発までするなら300MHz
の604 またはG3 プロセッサ搭載機で256MBの RAMを推奨します。特に、layout.mcpプロジェクトのリンクには80MBの空きRAMが必要です。そして最適化ビルドの場合、JavaScript.mcpをビルドするために100MBの空きRAMが必要です。
Mozillaを実行するには、MacOS 8.5以降が必要です。
ツールとリソース
以下に、MacでMozillaをビルドするためにインストールしなければならないソフトウェアのリストがあります。
注意: Netscape社内用には、ローカルのAppleShareサーバーにあらかじめ開発環境を用意しています。詳細はMacのグルにコンタクトを取ってみてください。
| CodeWarrior Pro 5. |
Metrowerks CodeWarrior Pro 5. をクリーンインストールするところから始めてください。 |
| Codewarrior Pro 5 updates |
CodeWarrior Pro 5.3アップデートをダウンロードしてインストールしてください。こういったアップデートの常として、Mac
OS precompiled headersとランタイムおよびスタンダードライブラリを再作成する必要があります。この作業にはMetrowerks
提供のスクリプトが利用できます。(詳細はアップデートのReadmeを見てください。)
CW Pro 5.3 debuggerでデバッグするにはMetronub 1.3.8が必要になることに注意してください。5.3のupdaterには不具合があって、Metronubがインストールされないことがあります。その場合には手でインストールしてください。
また、昔の外部デバッガは使用しないでください。CW Pro 2と MWDebug
1.7.4 (そして Metronub 1.3.7) で、Pro 5の .xSYM ファイルを使ったりするのもだめです。これを好む人もいるようですが。
CodeWarrior のインストールが完了したら、IDEの使用メモリの設定を24MBぐらいにしてください。
(Finderの「情報を見る」から設定できます。).
|
| CodeWarrior Plugin SDK |
ビルドプロセスの一部として“xpidl compiler”というCodeWarriorプラグインをビルドします。そのためCodeWarrior
Plugin SDKが必要になります。これを Mac OS Support フォルダにインストールして下さい。
最初のMozillaのビルド時に、最初のIDLプロジェクト(xpcomIDL.mcp)のビルドでエラーが出る可能性があるので注意して下さい。その場合、
CodeWarrior IDEを一旦終了し、再起動することでビルドされたばかりのxpidlプロジェクトをIDEがピックアップします。そして再びビルドを開始します。
|
| Universal Interfaces 3.3.1 |
新たに必要なもの
Appleのシステムヘッダは最新のバージョン 3.3.1を使います。Carbon
APIへの移行が容易になるはずです。 ディスクイメージのファイルをダウンロードしてください。イメージファイルをマウントするにはDisk Copy が必要です。ファイル"UniversalInterfaces3.3.1.img" をダブルクリックしてください。それだけでデスクトップにマウントされるでしょう。フォルダ"Universal"
をCodeWarriorの Mac OS Support フォルダにドラッグして、すでにある同じ名前のフォルダは置き換えてしまいます。また、フォルダ"OpenTransport"
を"(OpenTransport)" にリネームするか、どこかに移動してしまってください。というのは、Open
Transport のヘッダとライブラリは"Universal" フォルダの中にあり古いOT
ヘッダとライブラリはこれらに取って代わられます。
新しいシステムヘッダのインストール後には、あなたが自身のプロジェクトで使っているプリコンパイルヘッダをリビルドしなければなりません。また、MSLとランタイムのライブラリもリビルドすることになるかもしれません。
|
| Internet Config 2.0 SDK |
新たに必要なもの
Internet Config はMIMEのマッピングとユーザー情報の取得に使われます。SDKをダウンロードし、解凍したら、
"ICProgKit2.0.2" フォルダをCodeWarriorの "Mac OS Support" フォルダの中に置いてください。 |
Menu Sharing Toolkit 1.4
(代わりのダウンロードサイト) |
新たに必要なもの
Menu Sharing を使うと、Mozillaのメニューバーに他のアプリケーションがメニューを追加できます。ダウンロード後、解凍して、"Menu
Sharing Toolkit 4.1"をCodeWarriorの "Mac OS Support" フォルダの中に置いてください。 |
| ToolServer |
CodeWarrior のインストール時にCodeWarrior MPWもインストールしていたなら、もうすでに
ToolServer はMPWフォルダにインストールされているに違いありません。
CodeWarrior MPWをインストールしていないなら、ToolServer とそのツールを手でインストールする必要があります。フォルダ'CodeWarrior
MPW:MPW' をCW Pro 5 Tools CD からあなたのハードディスクへとドラッグしてください。このフォルダにToolServer
アプリケーションが含まれています。
もしあなたが Mac OS 9 以降を使っているなら、ToolServerをアップデートする必要があります。
ToolServer 3.5 がAppleの MPW Tools のページ からダウンロードできます。(現在のバージョンは ここです)。単純に ToolServer アプリケーションを新しいバージョンに置き換えてください。
現在ビルドシステムで使っている ToolServer ツールはMakeStubだけです。
時々、CodeWarrior がToolServerを起動しようとしたときに、問題が発生することがあります。あなたのビルドが
NSStdLib.mcpのターゲットであるstubをビルドしている最中に停止してしまったようであれば、それがこの問題です。しばしば
IDE をデアクティベートするためにデスクトップをクリックすることで、ToolServer
を適切に復活させることになります。これでも動かない場合は、ToolServer
を起動ボリュームに移動してみてください。それでも解決しない場合は、あなたのマシンにToolServer
が複数インストールされていないかチェックしてください。
|
| MacPerl distribution |
ダウンロード、解凍、そしてインストール。どこにインストールしても大丈夫ですが、CodeWarriorフォルダの隣に置くと参照しやすいのでお勧めです。
インストールの後、 MacPerl アプリケーションのメモリ割り当てを16MBぐらいに設定してください。
(Finderの「情報を見る」から設定します).
また、ダブルクリックでperlスクリプトが起動するように、プリファレンスに設定してもいいかもしれません。そのやり方は、まず
Edit メニューから"Preferences..." を選択します。次に"Script" ボタンをクリックし、"Run
Scripts opened from Finder"と書いてあるラジオボタンを選択します。
|
| cpan-mac distribution |
これは Chris Nandorによる一組のツールです。これを使うと新しいモジュールのインストールが楽になります。ダウンロードして、解凍してください。もし
MacPerl を複数インストールしているなら、インストール先のMacPerl
を立ち上げておいてください。
重要: さて、'site_perl' という名前のフォルダをMacPerl アプリケーションと同じディレクトリの中に作成してください。MacPerl
プリファレンスの'Libraries' パネルのところに行って、この'site_perl'
フォルダをライブラリのパスとして追加してください。他のライブラリに先だってそこがサーチされるようになります。
さぁ、今ダウンロードしたcpan-mac distributionの中にある 'INSTALL.plx'
を実行してください。'site_perl' フォルダの中にたくさんのファイルがインストールされます。ドロップレットをインストールするかどうか聞いてきたら、'Yes'をクリックしてください。これらのドロップレットは次の2つの部分のインストールで使われます。
|
| Perl AppleEvents module |
これはAppleEvent のスクリプティングを楽にするPerl モジュールです。ファイルをダウンロードしたら、解凍はしないでください。 インストールするには、ダウンロードした'Mac-AppleEvents-Simple-0.81.tgz'ファイルをドラッグして、
cpan-mac モジュールといっしょにインストールされた'installme.plx'
ドロップレットにドロップしてください。'Convert all text and MacBinary
files?'と聞かれたら、 'Yes' をクリックしてください(この後に続くモジュールでも同様です)。
これでファイルがsite_perl ディレクトリにインストールされます。 |
| Perl Launch module |
これはアプリケーションを起動するための Perl モジュールです。ファイルをダウンロードしたら、解凍はしないでください。 インストールするには、ダウンロードした'Mac-Apps-Launch-1.70.tar.gz'ファイルをドラッグして、
cpan-mac モジュールといっしょにインストールされた'installme.plx'
ドロップレットにドロップしてください。これでファイルがsite_perl
ディレクトリにインストールされます。 |
| Compress:Zlib module |
新たに必要なもの
この Perl モジュールはMac上で jar ファイルを作成するのに用いられます。ファイルをダウンロードしたら、解凍はしないでください。インストールするには、ダウンロードした 'Comprss-Zlib-1.04-bin-1-Mac.tgz'ファイルをドラッグして、
cpan-mac モジュールといっしょにインストールされた'installme.plx'
ドロップレットにドロップしてください。これでファイルがsite_perl
ディレクトリにインストールされます。 |
| Archive::Zip module |
新たに必要なもの
この Perl モジュールはMac上で jar ファイルを作成するのに用いられます。ファイルをダウンロードしたら、解凍はしないでください。インストールするには、ダウンロードした 'Archive-Zip-0.07.tar.gz'ファイルをドラッグして、
cpan-mac モジュールといっしょにインストールされた'installme.plx'
ドロップレットにドロップしてください。これでファイルがsite_perl
ディレクトリにインストールされます。 |
ソースコードを入手してそれをビルドする
MacCVS Pro clientを使って、新規にCVSのセッションファイルを作成するか、既存のセッションファイルを
ここからダウンロードして下さい。 もし新規にセッションファイルを作成するなら、EditメニューのSession Settingsからプリファレンスを設定して下さい。
| チェックアウトと更新のオプション |
| Local Tree Directory |
ソースコードはどこでも好きな場所に置いておけます。ビルド済みのツリーは現状では約508MBのディスクスペースを使用します。ツリーはHFS+ボリュームに置いてください。HFSの方が余計にスペースを食います。 |
| Merge Policy |
Auto Merge Text Files and Update Binary Files |
| Default Module |
mozilla/build/mac |
| Default Revision |
(空白のままで) |
| リモートホストの情報 |
| Server Hostname |
cvs-mirror.mozilla.org |
| CVS User Name |
anonymous |
| CVS Password |
anonymous |
| CVS Root |
/cvsroot |
| Network Time Out |
10 Minutes |
| エンコーディングとファイルのマッピング |
| Add |
拡張子(.pl)をMacPerlにマッピングして、Finder上でビルドスクリプトのダブルクリックが効くようにしたいなら、Add をクリックして次のように入力してください。
Suffix .pl, Type TEXT, Creator McPL
Macintoshの改行コード(CR)が使われているか確認しよう!
他にも、MacPerlモジュール(.pm), JavaScript (.js), XUL (.xul),
CSS (.css), DTDファイル (.dtd) そしてHTML (.html) をあなたのお気に入りのエディタ(例えば、BBEditだったらクリエータは
R*ch です。) にマッピングしてもいいかもしれません。
|
Perlのスクリプトを実行する
BBEdit とBBEdit のperl 拡張機能を自身のビルド環境として使っている人もいるでしょう。こうすると、BBEditでビルドスクリプトを編集して、MacPerlにそれを実行させることができます。また、Alpha
のPerl モードでも同じことができます。
MPWからビルドスクリプトを実行することもできるようですが、MPWのperlツールはよくクラッシュするという話が聞かれます。
Mac Mozilla の最初のビルド
警告: あなたは数10MBものソースコードをダウンロードすることになります。もしモデムで接続しているなら、何時間もダウンロードする覚悟をしておきましょう。
ソースコードをpullする前に、 tinderbox のMacintoshビルドの列が緑になっているか常に確認しましょう。 tinderbox
上で赤いと言うことはpull したもののビルドが通らないことを予感させます。Macintosh
ビルドが赤を示していたなら、映画でも見に行ってその後にでもしたほうがいいでしょう。あなたはこのtinderbox
へのリンクをブックマークに追加しておくべきです。ついでにあなたのpersonal
toolbarにも。
|
Tinderbox はビルドプロセス情報に関するあなたのone-stop shop です。ツリー(ソースコードリポジトリ)
は時々刻々と変化していることに注意してください。日夜、人々がチェックインしていることがわかるでしょう。あなたはツリーが正常でビルド中のとき(緑で示されます)
にpullすればいいでしょう。 見るべき列は"Mac Debug Clbr", "Mac
Opt Clbr", そして"Mac Opt Depend"です。これらの意味は次の通りです。
- Mac Debug Clbr
- Macintosh のデバッグ用・大掃除ビルド。これはすべてのプロジェクトのデバッグターゲットをビルドします。そしてこれは'clobber'です。つまり、それぞれのビルドのために新鮮なソースツリーをpullするということです。このせいで時間がかかります。
- Mac Opt Clbr
- Macintosh の最適化・大掃除ビルド。これはすべてのプロジェクトのデバッグでないターゲットをビルドします。そしてこれは'clobber'です。つまり、それぞれのビルドのために新鮮なソースツリーをpullするということです。このせいで時間がかかります。
- Mac Opt Dep
- Macintosh の最適化・依存ビルド。これは既存のツリーに更新されたものをpull
して、再ビルドします。より少ない時間でできます。
|
さぁ、ビルドプロセスを始めるために、1回目のビルドの時だけしておかなければならないことがあります。
- mozilla/build/macのモジュールをチェックアウトしてください。上記の手順をフォローしてきたなら、CVSのメニューから次のように選択すればOKです。
Action | Check Out Default Module.
- CVS がビルドディレクトリのチェックアウトを完了したなら、あなたのローカルツリーディレクトリを開いてください。:mozilla:build:mac: フォルダへとドリルダウンすると、そこにはいくつかのビルドスクリプトがあります。
RunTSScript MPW コンパイラもそこにあるはずです。これはCodeWarrior Pro 5 フォルダの中に入れておく必要があります。正確には、
Metrowerks CodeWarrior:CodeWarrior Plugins:Compilers:
というパスになります。この操作後にはIDEを終了して再起動してください。
- 残りのソースをダウンロードするために PullNGlayout.pl を実行してください。MacPerlにこのファイルをドラッグ&ドロップするか、何でも好きなやり方で
MacPerl に実行させてください。
最初の PullNGlayout.plの実行時に、CodeWarrior アプリケーション(それが実行中でない場合)の場所とあなたの
CVS セッションファイルを尋ねられます。このファイルはツリーの残りをチェックアウトするために使われます。
ツリーのチェックアウト時には様々な小さなエラーが発生します。 (例えば、Macのファイルシステムにとって長過ぎる名前のファイルがいくつかあります。)
そのため、MacPerl はチェックアウトが失敗したとレポートします。このエラーはたちの悪いものではないので、無視していいでしょう。
チェックアウトが完了したら、 MacPerlで BuildNGLayoutDebug.pl を実行してください。このスクリプトはすべてのプロジェクトをビルドし、あなたのソースツリーのmozilla:dist:viewer_debug:の中にMacintoshアプリケーションを作成します。このフォルダの中に、最終的なブラウザとなる
Mozillaや、レイアウトエンジンをテストするための小アプリであるviewerができるはずです。
うぉーっ! ビルド失敗! なんで?
ビルド失敗の主な理由:
- スクリプトを実行させようとするとMacPerl でエラーがでる!
おそらくMacPerlのインストールに問題があるのでしょう。あるいはビルドに必要な追加機能かもしれません。上記のインストール手順を確認してください。特に、"site_perl"
をあなたのMacPerl のフォルダパスの設定に追加するあたりを見てください。
- PullNGLayout.plの実行時に、MacPerl がチェックアウト失敗と言います!
これは実は正常です。Macのファイルシステムにとって長過ぎる名前の付いたファイルがツリーの中に存在するのです
(幸運なことに、Mac ではそれらは要りません!)。 これらを含めて他にも小さなCVS
エラーがチェックアウトプロセスを混乱させることがあります。
あなたが自分のツリーを変更すると、更新の際に CVS に矛盾が発生し、きっとチェックアウトエラーに出くわすでしょう。この場合は、MacCVS
のメッセージウィンドウでコンフリクトの警告をよく見て、それに対処してください。
- 初めてビルドするのですが、 XPCOMIDL.mcp のビルドでxpidl が見つからないというメッセージが出て、ビルドに失敗します。
一連のビルドの一部として xpidl プラグインもビルドするのですが、IDE
は一旦終了して再起動しないとこれらをピックアップしません。この終了と再起動をスクリプトにしようとしてみたのですが、そのことでMacPerl
は不幸になりました。だから最初のビルド時には、IDE を手で終了し再起動しなければなりません。それからビルドを再起動してください。(2度目の再ビルドを高速にする方法の詳細は以下を参照してください。)
- NSStdLib.mcpのビルドのところで止まってしまいます。
ここで行われていることと言うのは、NSStdLib.mcpのターゲットであるStubsのビルドですが、そこでRunTSScriptという
CodeWarrior のプラグインを使ってToolServerを起動しています。これは
(MakeStub ツールを使って) そのプロジェクトの.exp ファイルからstubs
ライブラリをビルドします。(わかった?) そのためここでは多くの原因が考えられます。
- mozilla:build:mac からあなたのCodeWarrior Plugins フォルダに'RunTSScript'
CW ツールをコピーしていない。
- ToolServer が不幸なことになっている。これがスタンドアロンで(または
CodeWarriorの ToolServer メニュー経由で) 実行できることを確認してください。そしてあなたのマシンに複数のコピーがないか確認してください。
- あなたはイベントに関連したいくつかの気味悪い動作に悩んでいる。それはバックグラウンドへとIDEをスイッチするまで、停止してしまうという現象である。しばしば周りをクリックすることで再び問題なく動くようになります。
- NSRuntime.mcp のリンクが様々なエラーが出て失敗する
おそらく NSStdLib stubs のビルドが失敗しているからでしょう。ファイル'NSStdLibStubs'
がmozilla:dist:client_stubsの中にあることを確認してください。もし無い場合は、
NSStdLib.mcp のターゲットであるStubsのビルドが通っているかを確認してください。
(上記参照).
- コードがコンパイルできずにビルドが止まってしまう! これって今まで動いていたの?
きっとヤバいときにツリーを更新したんでしょう。更新の前には Tinderbox のチェックを忘れずに!
- layout.mcp がリンクできません。ランダムなエラーが出ます。
おそらく十分な空きメモリがないのでしょう。他のプログラムを終了して再度トライしてみてください。
- JavaScript.mcp がコンパイルできません。"out of memory error" が出ます。
JavaScript.mcp を最適化モードでビルドするには(特に jsinterp.c)
大量のメモリを必要とします。CW オプティマイザの幾分病的なケースにヒットしてしまったようです。対処法としてはまず十分なメモリの確保があります(128MB
のマシンで、マシンの起動後CodeWarrior のロード以外はなにもしなければ、プロジェクトのビルドができるはずです。)。
もしくは、#pragma optimization_level 2 という記述をjsinterp.cの先頭に追加して、ごまかすことも可能です。
訳注:「128MB のマシンで〜ビルドができる」となっているのは古い推奨スペックのような気がします。
OK, ビルド完了. で?
おめでとう!
さぁ、 Mozilla ブラウザを実行するためにmozilla:dist:viewer_debug
(最適化ビルドなら :viewer )を見てみましょう。'MozillaDebug'というアプリケーションと
.xSYM ファイルがあるはずです。実行する、またはデバッグを開始するには、このアプリケーションを起動するか、CodeWarriorに
.xSYM ファイルをロードしてください。
あなたはこのアプリケーションがたった 200K しかないことにも気付くでしょう。それはほとんどのコードが共有ライブラリの中にあるからです。共有ライブラリはEssential
Files フォルダ(ここにあるものは CFMによって自動的にロードされるライブラリです)と
Components フォルダ(ここにあるライブラリは XPCOM モジュールで、実行時にアプリケーションがロードします)の中にあります。そのためデバッグ時には、適切な
.xSYM ファイルを探してこれらのフォルダの中を這いつくばらなければならなくなります。
デバッグのTips
クラッシュしてしまったり、 assertionが出た場合にどうやってデバッグしたらいいのか?
最も簡単なのは、まずMozillaをデバッガなしで実行して、 assertion
やクラッシュが発生したときにMacsBug に行くようにします。そこでスタックを参照して、ログをファイルに保存します。(例:log my_crash,sc,log).
もしあなたが Metrowerks デバッガを使っていて、何らかの理由で停止したなら、今自分がどこにいるのかを判断するのは少し難しくなります。いくつかの理由で(今のところ不明なのですが)、
Components フォルダの中の共有ライブラリから来ているスタック上のコードはフラグメント名が表示されません。そのため、そのコードに対する正しい.xSYM
ファイル見つけるのは困難なのです。一つできることとしては、仮想記憶を使っていないという前提で、MacsBugに入って
'wh 0AEE2324' (デバッガの中でスタック上に示されているアドレスがどこにあるのか)とタイプします。すると
MacsBug はどのコードフラグメントからそのコードが来ているのか教えてくれます。仮想記憶がオンになっているなら、あなたは推理ゲームをプレイすることになるか、MacsBugからスタックのクロールについて教えてもらわなければなりません。あるいは、
LXR を使って適当なコードを検索してください。
折りある毎のMac Mozilla の更新とビルド
その後のビルドはいくらか容易になります。
- ソースコードを pull する前に、必ずtinderbox のMacintoshビルドが緑になっていることを確認してください。tinderbox
が赤いと言うことはpull してもビルドしないと言うことです。もしMacintosh
ビルドが赤くなっていたら、とりあえず映画でも見て後でまた出直すことです。
- :mozilla:build:mac: を再度チェックアウトしてください。なぜなら、あなたがpull やツリーのビルドに使うスクリプトはそれ自体がそのツリーの一部だからです。そのため、もし誰かがこれらのスクリプトを変更していた場合、自分が最新バージョンのスクリプトを使っているのか確認する必要があります。
- あなたのローカルツリーを Mozilla リポジトリの変更にあわせて更新するためにPullNGlayout.pl を実行してください。
- MacPerlから BuildNGLayoutDebug.pl を実行してください。このスクリプトはすべてのプロジェクトをビルドし、Macintosh
アプリケーションディレクトリをあなたのソースツリーの:mozilla:dist:viewer_debug: の中に作成します。
しばしば、ソースに変更を加えたり、ビルドの障害となる問題を修正した後で、いくつかのプロジェクトだけ再ビルドするというような、追加型のビルドをしたいことがあります。特に、
MANIFEST ファイルを用いてヘッダとリソースのインストールを行うステップを飛ばしたいときなど。ここでは特に時間を食いますから。
'BuildNGLayoutDebug.pl' スクリプトを実行する際に、それをエディタ(例えば
BBEdit)で開いて設定を編集することによって、スクリプトの動作を調整できます。次の1行を見てください。
$build{all} = 1; # 個別にビルドしたい場合はオフにしてください。
そしてその下のbuild{foo}s のリストを見てください。$build{all} == 1 ならばすべてがビルドされます。部分的にビルドしたい場合は$build{all} = 0, $build{most} = 0 とし、個々のビルドに関する部分をオンにしてください(例えば、 $build{nglayout} = 1)。きっと必要でないときは止めておきたいプロセスは次のような感じでしょう。
$build{dist} = 0; # MANIFESTS を用いて mozilla:dist にヘッダをコピーします。
$build{resources} = 0; # mozilla:dist:viewer<_debug>: にリソースをコピーします。
$build{xpidl} = 0; # xpidl コンパイラをビルドします。
$build{idl} = 0; # すべての IDL プロジェクトをビルドし、多くの .h ファイルを再生成します。
$build{} 配列で制御される処理のリストはビルドされる順に並んでいます。そのため通常では、オンにしたい要素以下はすべてオンにするでしょう(例えば、nglayout以下全部とか)。こんな風にビルドシステムに手を加えるためには、依存関係がどうなっているかについての理解が必要です。ですから、何がどう行われているかを十分に理解してからやってみましょう。
ビルドシステムに関するさらなる情報
ビルドシステムは MacPerl を使い、AppleScript とAppleEventsを利用して、様々な
Mac アプリケーションを制御します。3つのperl スクリプトがあります。
| PullNGLayout.pl |
NGLayoutをビルドするために必要なソースツリーをpullします。スクリプトは
MacPerlで実行します。最初の実行時には「ファイルを開く」ダイアログが現れるでしょう。スクリプトをチェックアウトするのに用いた
MacCVS セッションファイルを指定してください。セッションを開くと、perlスクリプトは一連のチェックアウトコマンドを
MacCVS に送信し、必要なソースをpull します。 |
| BuildNGLayout<Debug>.pl |
様々なビルドオプションを構成し、 NGLayoutのビルドを開始します。このスクリプトでビルドプロセスの全体が制御されます。上に書いたように、スクリプトファイル内の
$build{} 配列を編集することで部分的なビルドを行うことができます。オリジナルを編集したくない場合は、コピーして使いましょう。 |
| NGLayoutBuildList.pm |
このファイルはビルドすべきプロジェクトのマスターリストや、様々な補助的ルーチンを持っています。また、mozilla:distへのヘッダファイルの移動とリソースのインストールを処理するための
MANIFEST ファイルのリストも持っています。 |
チェックアウトが完了したら、BuildNGLayout<Debug>.plを実行します。するとビルドプロセスは下記のように進行します。
- dist 段階.
まず、ヘッダファイルがツリー内の様々なディレクトリから、 mozilla:distへとコピーされます
(実際には、エイリアスがそこに作成される)。プロジェクトのアクセスパスを単純にするために、こんなことをしてます。公開ヘッダファイルを持っている各ディレクトリは
MANIFESTと呼ばれるファイルを含みます。そして、NGLayoutBuildList.pm はMANIFEST ファイルのリストを舐めながら、そこにリストされたヘッダファイルのエイリアスを作成していきます。
- resources 段階.
この段階では、リソースファイルをツリー内の所定の場所から、 mozilla:dist:viewer<_debug> 内の様々なフォルダへとコピー(またエイリアスですが) します。最終的なアプリケーションはそこから実行されます。Mozilla
はクロスプラットフォームで実行することを考慮されていて、XUL とCSSで記述されたユーザインタフェースを使用するため、これらのリソースは
XUL, CSS, GIF その他から構成されます。リソースをインストールするプロセスはdist フェーズとほとんど同じように、一連のMANIFEST ファイルを使います。
- xpidl 段階.
このフェーズでは xpidl コンパイラ(これは次の idl のフェーズで使用されます)のビルドを行います。 CodeWarrior Plugins
フォルダに以下のツールを作成するプロジェクトをビルドします。
Compilers:xpidl
Linkers:xpt Linker
Preference Panels:xpidl Settings
- idl 段階.
このフェーズでは一連の IDL プロジェクトをビルドします。これらのプロジェクトではIDL
(Interface Description Language) ファイルをC++ の.h ファイルと.xpt
ファイル(JavaScript からC++ 関数を呼び出せるようにするインタフェースの情報を含みます)に変換するために
xpidl コンパイラを使います。生成されたヘッダファイルは、やはりmozilla:dist内のディレクトリにエイリアスが置かれます。.
- stubs 段階.
このフェーズでは一つの stub ライブラリをビルドします。私たちに必要なのはNSStdLibStubsです。
.exp ファイルからstubs ライブラリをビルドする処理をToolServer
に依頼するのに、RunTSScriptツールを使います。
ここから先は、共有ライブラリを生成するための、通常の CodeWarrior
プロジェクトをビルドする段階です。注意したいのは、プロジェクトをビルドした後、Perl
スクリプトは共有ライブラリの(そしてオプションによりその .xSYM
ファイルも) エイリアスをmozilla:dist:viewer<_debug>内の所定のフォルダに作成することです。グループ分けは次のようになっています。
- runtime
- 低レベルのサポートライブラリ (MSL のコードを少し内蔵している)
- common
- Mozilla で共通に使用されるユーティリティライブラリのセット(例えば、
xpcom, JavaScript, zlib)
- imglib
- 画像デコーディングのライブラリ
- necko
- ネットワーク機能とプロトコルのライブラリ
- browserutils
- 様々な機能のライブラリ (例えば、プロファイルの管理)
- intl
- 国際化対応のためのライブラリ (例えば、キャラクタセットの検出と変換)
- nglayout
- レイアウトの中核となるライブラリ (例えば、 DOM, HTML パーザ, レイアウト)
- editor
- Editor ライブラリ
- viewer
- テスト用アプリケーション
- xpapp
- ブラウザとしての様々な機能を与えるライブラリ (例えば、ファイル内検索、サイト検索、ヒストリ、関連リンク)
- extensions
- Mozilla 拡張機能(例えば、 irc chat)
- mailnews
- Mailnews ライブラリ
- apprunner
- Mozilla の実行形式をビルドするプロジェクト
もっと情報が必要な人は...
Macのビルドシステムに関してさらに情報が必要な場合、またはMac Mozillaのプロジェクトに貢献する方法を知りたい場合などは、newsgroup(
netscape.public.mozilla.mac )に投稿してください。
最終更新日 17-Feb-2000
Simon Fraser |