Configuring Build Options

ページでスクリプト エラーが発生しました。編集者によって解決されるまでの間は、以下の部分的なコンテンツのみが表示可能です。

 

デフォルトオプションの状態で configure および make を実行しても、動作するビルドを作り上げることはできません。.mozconfig ファイルを使って、相応のリリースビルドを入手してください。ビルドの前に次のガイドをよく読み、順番に従ってください。工程を 1 つでも飛ばせば、ソフトウェアをビルドできないか、使い物にならないビルドができるでしょう。

{{ :ja/Build_Documentation/TOC }}

.mozconfig 設定ファイルを使う

手動でコマンドラインオプションを使って configure を実行することも可能ですが、推奨しません。代わりに、ソースディレクトリに .mozconfig ファイルを置いてください (mozilla/.mozconfig)。または HOME ディレクトリに .mozconfig ファイルを置いてください (~/.mozconfig)。

echo "# My first mozilla config" > .mozconfig

.mozconfig は 2 種類のオプションから成り立っています。

  • mk_add_options 接頭辞の付いたオプションは client.mk に渡され、通常は cvs チェックアウトやアップデートを制御するものです。
  • ac_add_options 接頭辞の付いたオプションは configure に渡され、ビルドプロセスに影響を及ぼします。

これらのオプションは ./configuremake -f client.mk が実行されるときに自動的に使用されます。

このページの下の方に .mozconfig ファイルの例がいくつかあります。


MOZCONFIG 環境変数を設定ファイルのフルパスに設定する方法もあります:

export MOZCONFIG=~/mozilla/mozconfig-firefox

この方法は、アプリケーションや設定ごとに異なる複数の .mozconfig ファイルを使い分けることができるので便利です。 この 'export' の例ではファイル名が .mozconfig ではないことに注意してください。実際に使用するファイルの名前がなんであれ、以下の例ではこのファイルのことを .mozconfig ファイルと呼びます。

オブジェクトディレクトリを用いてビルドする

mozilla をビルドする際にオブジェクトディレクトリを使用することを強く勧めます。これによってソースコードとオブジェクトファイルがディレクトリシステム内で混ざらなくなります。オブジェクトディレクトリを使うと、同じソースツリーから複数のアプリケーション(例えば Firefox と Thunderbird)をビルドすることができます。

オブジェクトディレクトリを使うことでソースツリー中の各 Makefile.in ファイルがオブジェクトディレクトリ内の Makefile に変わります。Makefile.in の親ディレクトリはオブジェクトディレクトリ内の対応する Makefile と同じ親ディレクトリになります。例えばファイル mozilla/modules/plugin/base/src/Makefile.in の場合、オブジェクトディレクトリを @TOPSRCDIR@/obj-debug とすると、ファイルおよびディレクトリパス mozilla/obj-debug/modules/plugin/base/src/Makefile が作られます。この Makefile は mozilla/modules/plugin/base/src ディレクトリ内のソースファイルを参照してくれます。

configure を手動で再実行する必要がある場合は、オブジェクトディレクトリ内から configure スクリプトの絶対パスを用いて作業を行ってください。例えば Win32 で実行する場合、かつソースツリーが /cygdrive/c/Projects/FIREFOX/mozilla にある場合、手動で configure を実行する必要があるときには常にオブジェクトディレクトリ内から /cygdrive/c/Projects/FIREFOX/mozilla/configure を実行することになります。

.mozconfig に次の行を追加することでオブジェクトディレクトリが有効になります。

mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/../obj-@CONFIG_GUESS@

オブジェクトディレクトリを 'mozilla' ディレクトリの中に置かないようにしてください。そうしないと大量のビルドエラーが表示されるでしょう。

アプリケーションを選ぶ

 

Mozilla Suite (SeaMonkey)
以下のオプションを指定してください。
ac_add_options --enable-application=suite
# CVS から SeaMonkey をチェックアウトするために以下のオプションを使う。
mk_add_options MOZ_CO_PROJECT=suite

 

ブラウザ (Firefox)
.mozconfig ファイルで Firefox の デフォルトの mozconfig ファイル を読み込んでください。
. $topsrcdir/browser/config/mozconfig

今後ファイルの内容が変わるかもしれないので、ファイルの内容を mozconfig にコピーアンドペーストしないでください!

 

メール (Thunderbird)
.mozconfig ファイルで Thunderbird の デフォルトの mozconfig ファイル を読み込んでください。
. $topsrcdir/mail/config/mozconfig

今後ファイルの内容が変わるかもしれないので、ファイルの内容を mozconfig にコピーアンドペーストしないでください!

 

スタンドアローンな Calendar (Sunbird)
.mozconfig ファイルで Sunbird の デフォルトの mozconfig ファイル を読み込んでください。
. $topsrcdir/calendar/sunbird/config/mozconfig

今後ファイルの内容が変わるかもしれないので、ファイルの内容を mozconfig にコピーアンドペーストしないでください!

 

XULRunner
.mozconfig ファイルで XULRunner の デフォルトの mozconfig ファイル を読み込んでください。
. $topsrcdir/xulrunner/config/mozconfig

今後ファイルの内容が変わるかもしれないので、ファイルの内容を mozconfig にコピーアンドペーストしないでください!

 

ビルドオプションを選ぶ

選ぶべきビルドオプションは、どのアプリケーションをビルドするつもりなのか、そのビルドを何のために使うのかに依存します。ビルドを定期的に使用したいのであれば、余計なデバッグ情報を含まないリリースビルドが必要でしょう。ソースコードをハックしたい開発者ならば、余計なデバッグマクロを含んだ最適化されていないビルドが必要でしょう。

configure スクリプトに認識されるオプションの中には、組み込みなどの特別な目的のためのものであって、完全なスイートや XUL アプリケーションをビルドするためには使うべきではないものがたくさんあります。オプションの完全なリストを手に入れるには、./configure --help を実行してください。

目的のわからない configure オプションは使わないでください! 以下が非常に一般的なビルドオプションです。

最適化

ac_add_options --enable-optimize 
デフォルトの最適化オプションを有効にします。
ac_add_options --enable-optimize=-O2 
特定の最適化オプションを指定します。ほとんどの場合、mozilla コードベースをよく知っているのでないならば希望の結果を得られません。
ac_add_options --disable-debug 
余計なデバッグマクロを無効にします。
ac_add_options --disable-optimize 
最適化を無効にします。デバッガでの解析を簡易化します。
ac_add_options --enable-debug 
デバッグマクロや他のデバッグ専用コードを有効にします。ビルドは著しく遅くなりますが、パッチを書く際に大変有用です。

グラフィックスツールキット

 

ac_add_options --enable-default-toolkit=gtk2|gtk|xlib|qt|cairo-gtk2|cairo-windows|windows|mac|cocoa|cairo-cocoa|os2|beos|photon
グラフィックスツールキットを選択します。

トランク / 1.9 (Firefox 3) をビルドする場合、どのプラットフォームでもこのオプションは必要ありません。グラフィックスツールキットを手動で選択すると、まったく動かないか、バグだらけのビルドができあがる可能性があります。 The available toolkits differ from those listed above.

1.8 ブランチをビルドする場合、Windows、OS2、BeOS、Photon では自動的に正しいツールキットが選択されるので、これらのプラットフォームでは必要ありません。Mac でも古いブランチの Camino をビルドするのでなければ必要ありません(Camino は --enable-default-toolkit=cocoa を使用します)。

*nix プラットフォームではグラフィックスツールキットを選択します。GTK2 と GTK はともに十分にテストされています。xlib は tier-3 プラットフォーム であるとみなされています。Qt と cairo は実験的なのでバグがあるでしょう。

 

ac_add_options --enable-xft
XFT による高品位のフォントレンダリングを有効にします。--enable-default-toolkit=gtk2 としたときにのみ使用可能で、gtk2 を使う際には推奨します。このオプションはトランクには無くなりました (XFT は cairo-gtk2 に必須) 。

 

ac_add_options --enable-freetype2
freetype によるフォントレンダリングを有効にします。これは GTK ツールキットではデフォルトです。--enable-xft とは共存できません。トランクには適用されません。

コンポーネントの静的リンク

 

ac_add_options --enable-libxul (デフォルト)
コア gecko コンポーネントを libxul という単一のライブラリとしてビルドします。再配置の実行回数を減らすことで起動時と実行時のパフォーマンスが改善します。

 

ac_add_options --enable-static --disable-libxul
これらのオプションはより大きな単一の実行ファイルを作ります。このファイルは静的にリンクされたコンポーネントを保持します。--enable-static には --disable-libxul が必須です。 --enable-static を使用するのであれば --disable-tests も推奨します。このオプションは Firefox では非推奨です。libxul 設定ではまだビルドできない Thunderbird や SeaMonkey のためだけに存在しています。

 

ac_add_options --disable-static --disable-libxul
これらのオプションはコンポーネントを別々の共有ライブラリにします。これによりデバッグやインクリメンタルコンパイルが大変簡単になりますが、結果として得られるビルドは遅くなります。

 

拡張機能

 

ac_add_options --enable-extensions=default|all|ext1,ext2,-skipext3
extensions/ には多くのオプション的なコードがあります。これらの拡張機能の多くはブラウジング体験に不可欠なものであるとみなされています。スイート向け拡張機能のデフォルトのリストがありますが、それぞれのアプリケーション固有の mozconfig は異なったデフォルトセットを指定しています。全てのアプリケーションとは共存できない拡張機能もあります。例えば、
  • cookie は thunderbird と共存できません
  • typeaheadfind はどのツールキットアプリケーション (Firefox、Thunderbird、Sunbird) とも共存できません

どの拡張機能がどのアプリケーションと共存可能かを知らないのであれば、--enable-extensions オプションを使ってはいけません。ビルドシステムが自動的に適当な拡張機能のデフォルトセットを選択してくれます。

テスト

 

ac_add_options --disable-tests
デフォルトでは多くの補助的なテストアプリケーションがビルドされます。これらはデバッグや mozilla のソースにパッチを当てるのに役立ちます。これらのテストアプリケーションを無効にすることでかなりビルド時間を短縮し、ディスクスペースを減らすことができます。
ac_add_options --disable-mochitest
上と同じですが、UI を必要とする別のテストのためのものです。

その他のオプション

 

ac_add_options --disable-crypto
暗号化機能はデフォルトで有効になっています。国によっては暗号化機能を持ったソフトウェアの使用や輸出が違法であることがあります。自分の国の暗号に関する法律について熟知しておいてください。

1.7 および aviary ブランチでは暗号化機能はデフォルトで無効になっていました。SSL、SMIME あるいは暗号化機能を必要とする他の機能が必要であれば --enable-crypto を指定する必要があります。

 

ac_add_options --disable-javaxpcom(Java なし)
XULRunner ではデフォルトで Java-XPCOM ブリッジ がビルドされます。これは JDK がインストールされていなければなりません。configure 中に The header jni.h was not found. Set $JAVA_HOME or use --with-java-include-path というエラーが発生した場合は ac_add_options --disable-javaxpcom を使用することで java 依存性を無効にすることができます。

.mozconfig ファイルの例

Firefox のリリース用デフォルト設定

. $topsrcdir/browser/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
ac_add_options --disable-tests

Thunderbird のデバッグビルド

. $topsrcdir/mail/config/mozconfig
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/tbird-debug
mk_add_options MOZ_CO_PROJECT=mail,calendar
ac_add_options --disable-optimize
ac_add_options --enable-debug

SeaMonkey の最適化(非静的)ビルド

mk_add_options MOZ_CO_PROJECT=suite
ac_add_options --enable-application=suite
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/suite-opt
ac_add_options --enable-optimize
ac_add_options --disable-debug

XULRunner の最小リリースビルド

mk_add_options MOZ_CO_PROJECT=xulrunner
mk_add_options MOZ_OBJDIR=@topsrcdir@/obj-xulrunner
ac_add_options --enable-application=xulrunner
#ac_add_options --disable-javaxpcom

同一のソースツリーから複数のアプリケーションをビルドする

必要なソースをすべてチェックアウトしており、アプリケーションごとに 異なったオブジェクトディレクトリを使用 しているのであれば、同一のソースツリーから複数のアプリケーションをビルドすることができます。

複数の mozconfig ファイルを作成したり、または MOZ_BUILD_PROJECTS という make オプションを使用したりすることができます。

単一の mozconfig において MOZ_BUILD_PROJECTS を使う

MOZ_BUILD_PROJECTS を使用するには MOZ_OBJDIR および MOZ_BUILD_PROJECTS という make オプションを指定する必要があります。これはスペースで名前を区切ります。それぞれの名前は任意のディレクトリ名をとることができます。それぞれの名前についてトップレベルのオブジェクトディレクトリの下にサブディレクトリが作られます。そうしたら、指定した名前とともに ac_add_app_options を使用して各オブジェクトディレクトリに別々のアプリケーションが入るようにする必要があります。

例:

 ac_add_options --disable-optimize --enable-debug 
 ac_add_options --enable-default-toolkit=gtk2 --disable-freetype2 --enable-xft
 mk_add_options MOZ_OBJDIR=/home/amil082/mozilla_trunk/obj-@CONFIG_GUESS@
 mk_add_options MOZ_BUILD_PROJECTS="xulrunner browser mail"
 mk_add_options MOZ_CO_PROJECT="xulrunner browser mail"
 ac_add_app_options browser --enable-application=browser
 ac_add_app_options xulrunner --enable-application=xulrunner
 ac_add_app_options mail --enable-application=mail

この mozconfig ファイルを使って 1 つのプロジェクトだけをビルドしたい場合は次のコマンドラインを使用します。

 make -f client.mk build MOZ_CURRENT_PROJECT=browser

これでブラウザだけがビルドされます。

複数の mozconfig ファイルを使う

別の方法として、mozconfig ファイルを分けて作成することもできます。

例として、以下に Firefox と Thunderbird をビルドするためのステップを示します。はじめに 3 つの mozconfig ファイルを作る必要があります。

mozconfig-common:

mk_add_options MOZ_CO_PROJECT=browser,mail

# ここに他の共通オプションを追加してください
# 静的リリースビルドを作り、テストを無効にするなど
ac_add_options --enable-optimize --disable-debug
ac_add_options --disable-tests

mozconfig-firefox:

# 共通の mozconfig のインクルード
. ./mozconfig-common

# Firefox のビルド
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/firefox-static
ac_add_options --enable-application=browser

mozconfig-thunderbird:

# 共通の mozconfig のインクルード
. ./mozconfig-common

# Thunderbird のビルド
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/thunderbird-static
ac_add_options --enable-application=mail

以下のコマンドを実行してチェックアウトします。

export MOZCONFIG=/path/to/mozilla/mozconfig-common
make -f client.mk checkout

以下のコマンドを実行して Firefox をビルドします。

export MOZCONFIG=/path/to/mozilla/mozconfig-firefox
make -f client.mk build

以下のコマンドを実行して Thunderbird をビルドします。

export MOZCONFIG=/path/to/mozilla/mozconfig-thunderbird
make -f client.mk build

configure オプションの完全なリスト

警告: 目的のわからない configure オプションは使わないでください。 デフォルトのオプションが存在するのには理由があります! mozconfig ファイルの設定が少ないほどビルドが成功する可能性は高くなります。

  • --[enable/disable]-accessibility - tested and works well in shipping software. このオプションは初期のバージョンでは有効に出来ないため、不安定になるでしょう。詳しい情報は news.mozilla.org の mozilla.dev.accessibility ニュースグループを見てください。
  • --[enable/disable]-activex
  • --[enable/disable]-activex-scripting
  • --[enable/disable]-application=APP
  • --[enable/disable]-auto-deps
  • --[enable/disable]-boehm - Boehm Garbage Collector は非常に古くなっています。
  • --[enable/disable]-canvas
  • --[enable/disable]-chrome-format=jar|flat|both|symlink
  • --[enable/disable]-codesighs
  • --[enable/disable]-compile-environment
  • --[enable/disable]-composer
  • --[enable/disable]-cookies
  • --[enable/disable]-cpp-exceptions
  • --[enable/disable]-cpp-rtti
  • --[enable/disable]-crashreporter - デフォルトで有効ですが、Linux のビルドで問題が起こることがあります。詳しくは Linux Build Prerequisites を見てください。
  • --[enable/disable]-crypto
  • --[enable/disable]-ctl
  • --[enable/disable]-dbus
  • --[enable/disable]-debug-modules
  • --[enable/disable]-debug[=DBG] - デバッグ出力やその他のコンパイルおよびリンク指示のためのマスタースイッチ。
  • --[enable/disable]-debugger-info-modules
  • --[enable/disable]-default-toolkit=TK
  • --[enable/disable]-dtrace
  • --[enable/disable]-eazel-profiler-support
  • --[enable/disable]-efence
  • --[enable/disable]-elf-dynstr-gc
  • --[enable/disable]-extensions
  • --[enable/disable]-feeds
  • --[enable/disable]-freetypetest
  • --[enable/disable]-glibtest
  • --[enable/disable]-glitz
  • --[enable/disable]-gnomeui
  • --[enable/disable]-gnomevfs
  • --[enable/disable]-help-viewer
  • --[enable/disable]-image-encoders[={mod1,mod2,default,all,none}]
  • --[enable/disable]-inspector-apis
  • --[enable/disable]-install-strip
  • --[enable/disable]-installer
  • --[enable/disable]-insure
  • --[enable/disable]-ipcd
  • --[enable/disable]-javaxpcom
  • --[enable/disable]-jemalloc
  • --[enable/disable]-jprof
  • --[enable/disable]-js-static-build
  • --[enable/disable]-js-ultrasparc
  • --[enable/disable]-jsd
  • --[enable/disable]-jsloader
  • --[enable/disable]-ldap
  • --[enable/disable]-ldap-experimental
  • --[enable/disable]-leaky
  • --[enable/disable]-libIDLtest
  • --[enable/disable]-libxul
  • --[enable/disable]-logging
  • --[enable/disable]-logrefcnt
  • --[enable/disable]-long-long-warning
  • --[enable/disable]-macos-target=VER
  • --[enable/disable]-mailnews
  • --[enable/disable]-mathml
  • --[enable/disable]-md
  • --[enable/disable]-mochitest
  • --[enable/disable]-native-uconv
  • --[enable/disable]-necko-disk-cache
  • --[enable/disable]-necko-protocols[={http,ftp,default,all,none}]
  • --[enable/disable]-necko-small-buffers
  • --[enable/disable]-negotiateauth
  • --[enable/disable]-official-branding
  • --[enable/disable]-oji
  • --[enable/disable]-old-abi-compat-wrappers
  • --[enable/disable]-optimize
  • --[enable/disable]-optimize=[OPT]
  • --[enable/disable]-os2-high-mem
  • --[enable/disable]-parental-controls
  • --[enable/disable]-pedantic
  • --[enable/disable]-perf-metrics
  • --[enable/disable]-permissions
  • --[enable/disable]-places
  • --[enable/disable]-plaintext-editor-only
  • --[enable/disable]-plugins
  • --[enable/disable]-postscript
  • --[enable/disable]-prebinding
  • --[enable/disable]-pref-extensions
  • --[enable/disable]-printing
  • --[enable/disable]-profile-guided-optimization
  • --[enable/disable]-profile-modules
  • --[enable/disable]-profilelocking
  • --[enable/disable]-profilesharing
  • --[enable/disable]-quantify
  • --[enable/disable]-rdf
  • --[enable/disable]-reflow-perf
  • --[enable/disable]-safe-browsing
  • --[enable/disable]-shark
  • --[enable/disable]-startup-notification
  • --[enable/disable]-static
  • --[enable/disable]-static-mail
  • --[enable/disable]-storage
  • --[enable/disable]-strip
  • --[enable/disable]-svg
  • --[enable/disable]-svg-foreignobject
  • --[enable/disable]-system-cairo
  • --[enable/disable]-system-hunspell
  • --[enable/disable]-system-lcms
  • --[enable/disable]-system-sqlite
  • --[enable/disable]-tests
  • --[enable/disable]-timeline 廃止 Gecko 8.0
  • --[enable/disable]-trace-malloc
  • --[enable/disable]-ui-locale=ab-CD
  • --[enable/disable]-universalchardet
  • --[enable/disable]-update-channel=CHANNEL
  • --[enable/disable]-update-packaging
  • --[enable/disable]-updater
  • --[enable/disable]-url-classifier
  • --[enable/disable]-v1-string-abi
  • --[enable/disable]-view-source
  • --[enable/disable]-webservices
  • --[enable/disable]-wrap-malloc
  • --[enable/disable]-xmlextras
  • --[enable/disable]-xpcom-fastload
  • --[enable/disable]-xpcom-lea
  • --[enable/disable]-xpcom-obsolete
  • --[enable/disable]-xpconnect-idispatch
  • --[enable/disable]-xpctools
  • --[enable/disable]-xpfe-components
  • --[enable/disable]-xpinstall
  • --[enable/disable]-xterm-updates
  • --[enable/disable]-xtf
  • --[enable/disable]-xul
  • --[enable/disable]-zipwriter
  • --bindir=DIR
  • --build=BUILD
  • --cache-file=FILE
  • --datadir=DIR
  • --exec-prefix=EPREFIX
  • --help - configure 実行ファイルで利用できるオプションの一覧を出力します。
  • --host=HOST - --host、--target、および --prefix オプションはクロスコンパイルに使用します。
  • --includedir=DIR
  • --infodir=DIR
  • --libdir=DIR
  • --libexecdir=DIR
  • --localstatedir=DIR
  • --mandir=DIR
  • --no-create
  • --oldincludedir=DIR
  • --prefix=PREFIX - --host、--target、および --prefix オプションはクロスコンパイルに使用します。
  • --program-prefix=PREFIX
  • --program-suffix=SUFFIX
  • --program-transform-name=PROGRAM
  • --quiet
  • --sbindir=DIR
  • --sharedstatedir=DIR
  • --srcdir=DIR
  • --sysconfdir=DIR
  • --target=TARGET - --host、--target、および --prefix オプションはクロスコンパイルに使用します。
  • --version
  • --with-PACKAGE[=ARG]
  • --with-branding=dir
  • --with-default-mozilla-five-home
  • --with-distribution-id=ID
  • --with-doc-include-dirs=DIRS
  • --with-doc-input-dirs=DIRS
  • --with-doc-output-dir=DIR
  • --with-embedding-profile=default|basic|minimal
  • --with-ft-exec-prefix=PFX
  • --with-ft-prefix=PFX
  • --with-glib-exec-prefix=PFX
  • --with-glib-exec-prefix=PFX
  • --with-glib-prefix=PFX
  • --with-glib-prefix=PFX
  • --with-insure-dirs=DIRS
  • --with-insure-exclude-dirs=DIRS
  • --with-java-bin-path=dir
  • --with-java-include-path=dir
  • --with-libIDL-exec-prefix=PFX
  • --with-libIDL-prefix=PFX
  • --with-libxul-sdk=PFX
  • --with-macos-sdk=dir
  • --with-nspr-exec-prefix=PFX
  • --with-nspr-prefix=PFX
  • --with-nss-exec-prefix=PFX
  • --with-nss-prefix=PFX
  • --with-pthreads
  • --with-system-bz2[=PFX]
  • --with-system-jpeg[=PFX]
  • --with-system-nspr
  • --with-system-nss
  • --with-system-png[=PFX]
  • --with-system-zlib[=PFX]
  • --with-user-appdir=DIR
  • --with-windows-version=WINVER
  • --with-wrap-malloc=DIR
  • --with-x
  • --with-xulrunner-stub-name=appname
  • --without-PACKAGE
  • --without-libIDL
  • --x-includes=DIR
  • --x-libraries=DIR

Document Tags and Contributors

Contributors to this page: Taken, Kozawa, Taken Bot, trevorh, Shoot, Electrolysis, Mgjbot
最終更新者: trevorh,