egcs 1.0.3 (またはそれ以降)、gcc 2.95.2 (またはそれ以降) も動作します。と記載されているが、多くの最適化オプションを使用したい場合は GCC 3.2 以降をお勧めする。
#ここで気になるのは "最適化オプション" だと思われるが、これは CPU 依存が激しいので 1つのパッケージを複数のプラットフォームで使い回す場合は注意が必要となる。
# .mozconfig
#
# 先頭が # の行はコメント扱い。
#
export MOZ_PHOENIX=1
mk_add_options MOZ_PHOENIX=1
# Firefox をビルドする場合は "browser" を指定する。
mk_add_options MOZ_CO_PROJECT=browser
# Firefox をビルドする場合は "browser" を指定する。
ac_add_options --enable-application=browser
ac_add_options --enable-crypto
ac_add_options --disable-tests
ac_add_options --disable-mailnews
ac_add_options --disable-composer
ac_add_options --enable-default-toolkit=gtk2
ac_add_options --with-system-jpeg=/usr/local
ac_add_options --with-system-zlib
ac_add_options --with-system-png=/usr/local
ac_add_options --with-system-mng=/usr/local
ac_add_options --without-system-nspr
ac_add_options --with-pthreads
ac_add_options --disable-auto-deps
ac_add_options --disable-bidi
ac_add_options --disable-dtd-debug
ac_add_options --disable-jsd
ac_add_options --disable-ldap
ac_add_options --disable-pedantic
ac_add_options --disable-profilesharing
ac_add_options --disable-installer
ac_add_options --enable-single-profile
ac_add_options --disable-profilesharing
ac_add_options --enable-image-decoders=png,gif,jpeg,bmp
# --enable-extensions:勝手に最適な標準拡張を使ってくれるので設定する必要はない。 #ac_add_options --enable-extensions=cookie,xml-rpc,xmlextras,pref,transformiix,\
#universalchardet,webservices,inspector,p3p,gnomevfs
ac_add_options --disable-debug
ac_add_options --enable-strip
ac_add_options --enable-logging
ac_add_options --enable-xft
ac_add_options --disable-gnomevfs
# enable-optimize:最適化オプション。訳がわからないときは -O2 くらいにしておく。
ac_add_options --enable-optimize="-O2"
% /usr/lib/gcc-lib/(platform)/(gcc version)/cc1 --helpちなみにこのオプションは、Firefox 1.0@X11 で about:buildconfig とすると出てきた物をほぼそのまま使っている。
% /usr/local/libexec/gcc/(platform)/(gcc version)/cc1 --help
※太文字は任意の文字列。ディレクトリに移動して各自確認すること。
まずは client.mk ファイルを取得する。
# このファイルはビルドを行う際のベースとなる Makefile のようだ。
この作業は CVS からダウンロードする初回時にのみ行うだけで良く、次回以降の CVS checkout 時は不要である。
~ % setenv CVSROOT :pserver:anonymous@cvs-mirror.mozilla.org:/cvsrootWARNING が出るが、これは CVS ログインの際にパスワードを保存するファイルが存在しないときに表示されるだけなので気にすることはない。
~ % cvs login
Logging in to :pserver:anonymous@cvs-mirror.mozilla.org:2401/cvsroot
CVS password: anonymous
cvs login: warning: failed to open ~/.cvspass for reading: No such file or directory
~ % cvs checkout mozilla/client.mk
もしここで AVIARY ブランチなどの他のブランチを取得したい場合は以下のようにする。
~ % cvs checkout -r [タグ名] mozilla/client.mkタグ名は盆栽で探してこなければならないが、Menu → Browser でブランチのタグ名を取得できる。
あとは残りのファイルを取得しなければならないので、.mozconfig を mozilla ディレクトリにコピーして gmake checkout を行う。
ビルドを行う前に毎回 checkout を行うことで、ソースを最新に保つことが可能なので、ビルド前にはまず checkout する事をお勧めする。
~ % cd mozilla ~/mozilla % cp ~/.mozconfig ./ ~/mozilla % gmake -f client.mk checkoutこれでソースの取得が完了した。
gmake[4]: Entering directory `/usr/src/software/mozilla/toolkit/locales'根本解決が無理だったので、以下のような手順でエラーを回避した。
Unknown option: -
Unknown option: I
Unknown option: .
Unknown option: /
Unknown option: e
Unknown option: n
Unknown option: -
Unknown option: U
Unknown option: S
Unknown option: /
+++ making chrome /usr/src/software/mozilla/toolkit/locales => efines.inc -DAB_CD=en-US
-DOSTYPE="FreeBSD4" -DOSARCH="FreeBSD" -DMOZILLA_VERSION="1.7.6" -DD_INO=d_ino
-DSTDC_HEADERS=1 -DHAVE_ST_BLKSIZE=1 -DHAVE_INT16_T=1 -DHAVE_INT32_T=1 -DHAVE_INT64_T=1
-DHAVE_UINT=1 -DHAVE_UINT16_T=1 -DHAVE_DIRENT_H=1 -DHAVE_MEMORY_H=1 -DHAVE_UNISTD_H=1
-DHAVE_NL_TYPES_H=1 -DHAVE_X11_XKBLIB_H=1 -DHAVE_SYS_CDEFS_H=1 -DHAVE_LIBM=1
-DFUNCPROTO=15 -DHAVE_XSHM=1 -D_REENTRANT=1 -D_THREAD_SAFE=1 -DHAVE_RANDOM=1
-DHAVE_STRERROR=1 -DHAVE_LCHOWN=1 -DHAVE_FCHMOD=1 -DHAVE_SNPRINTF=1 -DHAVE_MEMMOVE=1
-DHAVE_RINT=1 -DHAVE_FLOCKFILE=1 -DHAVE_LOCALTIME_R=1 -DHAVE_STRTOK_R=1
-DHAVE_LANGINFO_CODESET=1 -DHAVE_I18N_LC_MESSAGES=1 -DMOZ_DEFAULT_TOOLKIT="gtk"
-DMOZ_WIDGET_GTK=1 -DMOZ_ENABLE_XREMOTE=1 -DMOZ_X11=1
-DMOZ_DISTRIBUTION_ID_UNQUOTED=org.mozilla -DMOZ_DISTRIBUTION_ID="org.mozilla"
-DMOZ_PHOENIX=1 -DMOZ_XUL_APP=1 -DMOZ_APP_NAME="firefox" -DMOZ_ENABLE_XFT=1
-DMOZ_ENABLE_COREXFONTS=1 -DMOZ_EXTRA_X11CONVERTERS=1 -DOJI=1 -DIBMBIDI=1
-DMOZ_VIEW_SOURCE=1 -DACCESSIBILITY=1 -DMOZ_XPINSTALL=1 -DMOZ_JSLOADER=1 -DMOZ_MATHML=1
-DMOZ_LOGGING=1 -DMOZ_USER_DIR=".mozilla" -DMOZ_XUL=1 -DMOZ_PROFILELOCKING=1
-DMOZ_DLL_SUFFIX=".so" -DXP_UNIX=1 -DUNIX_ASYNC_DNS=1 -DJS_THREADSAFE=1
-DNS_PRINT_PREVIEW=1 -DNS_PRINTING=1 -DMOZILLA_LOCALE_VERSION="1.7"
-DMOZILLA_REGION_VERSION="1.7" -DMOZILLA_SKIN_VERSION="1.5" /en-US.jar
Couldn't open /usr/src/software/mozilla/toolkit/locales/-DAB_CD=en-US: No such file or directory
Preprocessing of generic/chrome/global/contents.rdf failed: 2 at ../../config/make-jars.pl line 446, <STDIN> chunk 122.
gmake[4]: *** [libs] エラー 63
gmake[4]: Leaving directory `/usr/src/software/mozilla/toolkit/locales'
gmake[3]: *** [libs] エラー 2
gmake[3]: Leaving directory `/usr/src/software/mozilla/toolkit'
gmake[2]: *** [tier_50] エラー 2
gmake[2]: Leaving directory `/usr/src/software/mozilla'
gmake[1]: *** [default] エラー 2
gmake[1]: Leaving directory `/usr/src/software/mozilla'
gmake: *** [build] エラー 2
~/mozilla/toolkit/locales/Makefile の57行目付近にある以下の行をコメントアウト。
XULPPFLAGS += -I$(srcdir)/$(AB_CD)/defines.inc~/mozilla/toolkit/locales/generic/chrome/global/contents.rdf の 15行目を修正。
chrome:displayName="@MOZ_LANG_TITLE@"なお、この "English (US)" という文字列は、~/mozilla/toolkit/locales/en-US/defines.inc の中に記述されている @MOZ_LANG_TITLE@ が置換されるべき文字列を手動で置換しているだけである。
↓
chrome:displayName="English (US)"
~/mozilla/toolkit/locales/ で gmake を行い、エラーが出ないことを確認する。
gmake はオプション無しでそのまま実行すればよい。
~/mozilla % gmake -f client.mk buildもし gcc3* を使用して拡張された最適化オプションを適用する場合は、CC と CXX でコンパイラを指定する。
~/mozilla % gmake -f client.mk CC=gcc32 CXX=g++32 buildあとはひたすら待つわけだが、全てが終わるまでにはかなり時間がかかり、Pentium3 800MHz だと 2時間、Cempron 3100+ だと 30分ちょっとかかった。
もしビルド中にエラーになった場合は、ほとんどが .mozconfig の設定間違いなので、間違っている箇所を正しく設定する。
時折ソースまで修正しなければならないようなこともあるが、それらは臨機応変に対応すること。
.mozconfig を修正したら gmake を実行し直すが、出来れば clean を行った方が良い場合もある。
clean は以下のように行う。
~/mozilla % gmake -f client.mk clean上手く行かなければ
~/mozilla % gmake cleanを実行する。
~/mozilla % gmake -C browser/installerすると ~/mozilla/dist/ に圧縮ファイル "firefox-*.tar.gz" が出来るので、それを /usr/local/ に展開する。
% cd /usr/local/
% su
# tar xfvz ~/mozilla/dist/firefox-*.tar.gz
% cd ~/ % tar cfvz firefox-profile_YYYYMMDD.tar.gz .mozillaプロファイルのバックアップが取れたら -P オプション付きで起動する。
~/ % /usr/local/firefox/firefox -P &ここで、もし以下のようなエラーが出た場合は多少追加作業が発生する。
Extension System Warning: Failed to set up default extensions filesこのようなエラーが出た場合は、root ユーザーで 1度だけ Firefox を起動して終了させると治る。
probably because you do not have write privileges to this location.
While you can run Firefox like this, it is recommended that you run it
at least once with privileges that allow it to generate these initial
files to improve start performance. Running from a disk image on MacOS
X is not recommended. *** loading the extensions data source
無事起動できたらプロファイル選択ウィンドウが開いているはずなので、新規プロファイルを作成して一旦終了する。
終了したらもう一度起動するが、今度はプロファイル名付きで起動すると良い。
~/ % /usr/local/firefox/firefox -P PROFILENAME &このプロファイル名 "PROFILENAME" は、ディレクトリ名ではなく、プロファイルエディタで作成したプロファイル名を指定することに注意する事。
起動する際にバックグラウンドで以下のようなエラー:
*** nsExtensionManager::_disableObsoleteExtensions - failure, catching exception so finalize windowcan closeが出る場合があるが、これは警告メッセージらしいのでそのまま無視してもかまわない。
*** loading the extensions datasource
*** ExtensionManager:_updateManifests: no access privileges to application directory, skipping.
*** loading the extensions datasource
*** ExtensionManager:_updateManifests: no access privileges to application directory, skipping.