前: Transforming Names, 上: Site Configuration


12.6 サイトのデフォルトの設定

Autoconfが生成したconfigureスクリプトで,コンフィグレーション の値に対して,サイトのデフォルト値を供給できるものもあります.これは,サ イト全体と システム全体の初期化ファイルを作成することで可能となります.

環境変数CONFIG_SITEが設定されている場合,configureは, その値を読み込むシェルスクリプトの名前として使用します.それ以外では,シェ ルスクリプトprefix/share/config.siteがあればそれを読み込み, 次にprefix/etc/config.siteがあればそれを読み込みます.この ため,それらが衝突する状況では,マシン特有のファイルでの設定がマシン非依 存の設定に優先します.

サイトファイルは任意のシェルスクリプトが可能ですが,本来なら特定の種類の コードだけがその中にあるのが適切です.configureはサイトファイ ルを読み込んだ後でキャッシュファイルを読み込むので,サイトファイルは,そ のシステムで実行されるAutoconfが生成した全てのconfigureスクリ プト間で,デフォルトのキャッシュファイルを共有することが可能になっていま す(see Cache Files).キャッシュファイルは特定のコンパイラに対しての みで有効ですが,システムの多くは複数の利用可能なコンパイラがあるので,デ フォルトのキャッシュファイルをサイトファイルに設定した場合,サイトファイ ルで出力変数CCを設定するのは良い考えです.

configureへのコマンドラインオプションで,サイトファイルで設定 された値を調査したり優先したりすることが可能です.オプションは,ダッシュ をアンダースコアに変更した,オプションと同じ名前のシェル変数を設定します. 例外は,`--without-'と`--disable-'オプションが,対応する `--with-'や`--enable-'オプションに値`no'を与えたものに似 ていることです.このため,--cache-file=localcacheは,変数 cache_fileを値`localcache'に設定し, --enable-warnings=no--disable-warningsは,変数 enable_warningsを値`no'に設定しします. --prefix=/usrは,変数prefixを値`/usr'に設定します. といったようになっています.

デフォルトでない値を与える必要がある場合,サイトファイルはCFLAGS のような他の出力変数に対しデフォルト値を設定するための良い場所です.通常 コマンドラインで繰り返し行っていることならなんでもできます.prefixexec_prefixに対してデフォルト値ではないものを使用したい場合(サイ トファイルの場所がどこであれ),CONFIG_SITE を用いて指定すると,サ イトファイルで設定できます.

サイトファイル自身でキャッシュ値を設定することもできます.こうすることで, テストプログラムの実行が必要な特徴の調査が不可能なクロスコンパイルで役に 立ちます.システムに対してprefix/etc/config.site でこれらの 値を正しく設定することで,“キャッシュの用意”が可能です.設定する必要が あるキャッシュ変数名を見つけるため,影響を受けたconfigureスク リプトやこれらのマクロに対するAutoconf M4ソースコードで,名前に `_cv_'を伴うシェル変数を探してください.

キャッシュファイルは,サイトファイルで設定した変数を無効にしないよう注意 深く実行します.また,サイトファイルでコマンドラインオプションを無効にす るべきではありません.コードでは,prefixcache_file のよ うな変数を変更する前に,(configureの最初の方で設定される) デフォ ルト値をがあるかどうかを調査するべきです.

サンプルファイル/usr/share/local/gnu/share/config.siteが以下のよ うになります.コマンド`configure --prefix=/usr/share/local/gnu' は, (CONFIG_SITEで異なるファイルを設定していない場合)このファイルを読 み込みます.

     # config.site for configure
     #
     # Change some defaults.
     test "$prefix" = NONE && prefix=/usr/share/local/gnu
     test "$exec_prefix" = NONE && exec_prefix=/usr/local/gnu
     test "$sharedstatedir" = '$prefix/com' && sharedstatedir=/var
     test "$localstatedir" = '$prefix/var' && localstatedir=/var
     
     # Give Autoconf 2.x generated configure scripts a shared default
     # cache file for feature test results, architecture-specific.
     if test "$cache_file" = /dev/null; then
       cache_file="$prefix/var/config.cache"
       # A cache file is only valid for one C compiler.
       CC=gcc
     fi