FF3をWindowsでビルド

なんでテーブルのレンダリングは遅いんだろ、とかinnerHTMLとappendChildはどう違う処理してんのよ
とかいろいろ深いところが知りたくなったら、やっぱブラウザのソースコード追うしかないかなと
思った。

なのでビルド!ビルド!

調べてみたところ、こんな手順でやってみました。
WindowsでのFirefoxのビルド】

  1. Visual Studio 2005をインストール
  2. Windows Platform SDKをインストール
  3. MozillaBuildをインストール
  4. C:\Mozilla-build内の、start-msvc8.batをクリック

CSSだけで横タブ⇒MinGW32に入る

  1. cd C:/
  2. mkdir proj
  3. cd proj
  4. cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk

チェックアウトしたclient.mkにコマンドを与えることで各種Mozillaに対する操作ができる

  • make -f client.mk checkout MOZ_CO_PROJECT=browser

スタンドアローンFirefoxのソースをチェックアウトするよ

  • C:/proj/mozilla/に「.mozconfig」ファイルを作る

  vi .mozconfig
  →このファイルにビルド時のオプションを書く(下のは例)

    # Options for client.mk.
   mk_add_options MOZ_CO_PROJECT=browser
   mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
   # Options for 'configure' (same as command-line options).
   ac_add_options --enable-application=browser
   ac_add_options --enable-debug
   ac_add_options --disable-static
   ac_add_options --disable-optimize
  • make -f client.mk build MOZ_CO_PROJECT=browser

  Firefoxをビルドするよ
  →さっき作った.mozconfigを元にビルドされる

  • めちゃめちゃmakeに時間かかる(手元で1時間くらい)
  • c:\proj\mozilla\obj-i686-pc-mingw32\dist\bin

  実行ファイルが作られている
  →MineFIeldって名前になってる。。

うーむ、firefox.exeを実行したらエラーでまくり!・・
でもフレーム処理周りのアサーションでエラーが起きてたから、とりあえず該当のアサーション消してみたら動いた。
いいのか、これで・・!?

何はともあれ、VisualStudioでもプロセスアタッチできたので、中を追ってみよう。
あ、その前にC++を読めるようにならんと(えー


●参考URL
MozillaソースコードCVS
  http://developer.mozilla.org/en/docs/Mozilla_Source_Code_%28CVS%29
Visual Studio 2005でのFirefoxのビルドでめっちゃ参考にしたサイト
  http://d.hatena.ne.jp/brazil/20071125/1195922073
  http://simon-jung.blogspot.com/2007/09/building-firefox-3-in-windows.html
  http://developer.mozilla.org/en/docs/VC8_Build_Instructions