FireFox をコンパイルしてみよう! その1

firefox日曜日で、話題もないため FireFox のコンパイルをしてみることにしました。

インストール環境は Snow Leopard 10.6.2 , Xcode 3.2.1 です。

Mozilla のサポートを見ると MacPorts で、libidl と autoconf213 をインストールするように書いてあったため、 MacPorts パッケージをインストール後、以下のように libidl と autoconf213 をインストール。

$ sudo port sync
$ sudo port install libidl autoconf213

これやると依存関係のファイルをみんな持ってくるんですね。30分位かかってインストール終了。

その後、Downloading Source Archives から tar ball をダウンロードして、展開。取り合えす US 版でいいやということで、そのまま .mozconfig に以下を設定

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-@CONFIG_GUESS@
mk_add_options AUTOCONF=autoconf213
ac_add_options --enable-application=browser
ac_add_options --disable-libxul
ac_add_options --enable-debug --disable-optimize
ac_add_options --enable-shared --disable-static
ac_add_options --with-macos-sdk=/Developer/SDKs/MacOSX10.4u.sdk
mk_add_options MOZ_MAKE_FLAGS=-j4

として、make 開始です。

$ make -f client.mk build

しかし、あえなくエラー終了。MacOSX10.4u.sdk -> MacOSX10.6.sdkと修正して再度挑戦…しかしリンクでエラーとなる…。

gcc4.2.1 だから?と、こちらのページを見ると gcc4.0 を使っていらっしゃる。

export CC=gcc-4.0
export CXX=g++-4.0

として、コンパイルすると、先程の部分は無事に終了。でも、先程 MacPorts で落とした libidl とリンク出来なくてまたしてもアウト、どうして?。

調べたところ、macsofa の投稿に書いてありました。どうやら、Snow Leopard から MacPorts は、X86_64 デフォルトで i386 をつくらないらしい。

えー。基本設定だと FireFox って i386 でできちゃうの?。ということで、MacPorts を一度削除した後、 +universal で再度取得し直ししました。

$ sudo port install libidl +universal
$ sudo port install autoconf213 +universal

こうすることで、対応しているものは、i386 と X86_64 の両方が作成されます。
ちなみに
$ sudo port install <portname> configure.compiler=gcc-4.2

で gcc のバージョンも指定できるらしい。勉強になるなぁ。

オブジェクトディレクトリが obj-i386… になっているからおかしいと思いましたよ。
これで無事にコンパイルできたと思ったら、30分ほどして今度は MacOSX10.6.sdk のヘッダがおかいいといってきた。orz。

という訳で「その1」です。

追記:
macwinzipper_iconApple のダウンロードページに MacWinZipper が注目のダウンロードとして掲載されています。ドラッグ&ドロップで、Windows 間の「余計なファイルの混入」「ファイル名の文字化け」を防げる優れもの、おすすめです。

2 Responses to “FireFox をコンパイルしてみよう! その1”

  1. trip2me より:

    Just try modifed CleanArchiver.
    It’s similar with MacWinZipper, but it has more powerful features.

    http://trip2me.tistory.com/56

    朴 昶範

  2. macman より:

    CleanArchiver supports 7z rar and more !
    I try CleanArchiver. thanks.

Leave a Reply