Go to the first, previous, next, last section, table of contents.


手動のコンフィグレーション

数種類の特徴については,テストプログラムを実行するだけでは自動的に推測 できません.例えば,オブジェクトファイルのフォーマットの詳細や,コンパ イラやリンカに渡す必要がある特別なオプションもあります.そのように, @command{configure}にunameプログラムの出力を調査させたり,特定 のシステムの特有のライブラリを探すといった,特別な手法を使用して特徴を 調査することが可能です.しかし,Autoconfは,推測できない特徴を扱うため の一様な形式の手法を提供しています.

システムタイプの指定

他の@acronym{GNU} @command{configure}スクリプトのように,Autoconfが生 成した @command{configure}スクリプトでは,システムタイプの標準名に基づ いて決定することが可能で,それは以下のような形式になります. `cpu-vendor-os'で,osは, `system'`kernel-system'が可能です.

@command{configure}は,通常,実行しているシステムタイプの標準名を推測 することが可能です.そうするために,@command{config.guess}と呼ばれるス クリプトを呼び出し,それは,unameコマンドや,Cプリプロセッサが 前もって定義したシンボルを使用して推測します.

その代わりとして,ユーザは@command{configure}へのコマンドライン引数で, システムタイプを指定可能です.それはクロスコンパイル時に必要です.クロ スコンパイルで最も複雑な場合,三つのシステムタイプが呼び出されます.指 定するオプションは以下の通りです.

@option{--build=build-type}
パッケージがコンフィグレーションされコンパイルされるシステムのタイプで す.デフォルトは,@command{config.guess}の実行結果になります.
@option{--host=host-type}
パッケージが実行されるシステムタイプです.デフォルトで,それはビルドマ シンと同じになります.それを指定することでクロスコンパイルモードが使用 可能になります.
@option{--target=target-type}
コードを生成するパッケージ中のコンパイラツールに対するシステムのタイプ です(必要になることは滅多にありません).デフォルトはホストと同じです.

@command{config.guess}の結果に優先することを意図した場合, @option{--host}はクロスコンパイルを利用可能にするものなので, @option{--host}ではなく@option{--build}を使用してください.歴史的な理 由から,@option{--host}を渡してもビルド形式を変更します.そのため, --hostを指定するときは常に--buildも確実に指定してくださ い.これは将来,修正されるでしょう.

./configure --build=i686-pc-linux-gnu --host=m68k-coff

上記でクロスコンパイルモードになりますが,以下のようなコンフィグレーショ ンでは,指定されているコンパイラで生成されるコートが実行不可能なので, @command{configure}は失敗するでしょう.

./configure CC=m68k-coff-gcc

@command{configure}は,多くのシステムタイプに対する短い別名を認識しま す.例えば,`decstation'`mips-dec-ultrix4.2'の代わりに使用 することが可能です. @command{configure}は,システムタイプの別名を標準 化するために@command{config.sub}と呼ばれるスクリプトを実行します.

このセクションでは,故意に時代遅れのインターフェースの記述を省略してき ました.section ホストとクロスコンパイルを参照してください.

標準的なシステムタイプの取得

以下のマクロで,システムタイプが@command{configure}スクリプトで利用可 能になります.

変数`build_alias'`host_alias',そして`target_alias'は, 常に厳密な@option{--build},@option{--host},そして@option{--target}へ の引数となります.特に,対応するAC_CANONICALマクロが実行されて いても,ユーザが使用していない場合は空のままになります.すべての configureスクリプトは,これらの変数をどこででも使用可能です.これらは, ユーザとの対話処理で使用されるべき変数です.

システムタイプを元にした特殊な環境を認識する必要がある場合,標準的なシ ステム名を取得するために以下のマクロを実行してください.これらの変数は マクロ呼び出しの前で設定されません.

これらのマクロを使用する場合,ソースコードと一緒に @command{config.guess} と@command{config.sub}を配布する必要があります. @command{configure}がこれらのスクリプトを探すディレクトリを制御するた めに使用可能なAC_CONFIG_AUX_DIRマクロに関する情報は, See section 出力ファイルを生成する.

Macro: AC_CANONICAL_BUILD
標準的なビルドシステムタイプの変数のbuildと,それを識別する三つ の部分build_cpubuild_vendor,そしてbuild_osを求 めます.

@option{--build}が指定されている場合,buildbuild_alias の@command{config.sub}で標準化されたものになり,それ以外では,シェルス クリプト@command{config.guess}で決定されます.

Macro: AC_CANONICAL_HOST
標準的なホストシステムタイプ変数のhostと,それを識別する三つの 部分host_cpuhost_vendor,そしてhost_osを求めま す.

@option{--host}が指定されている場合,hosthost_aliasの @command{config.sub}で標準化されたものになり,それ以外では,シェルスク リプト@command{config.guess}で決定されます.

Macro: AC_CANONICAL_TARGET
標準的なターゲットシステムタイプ変数のtarget,それを識別する三 つの部分target_cputarget_vendor,そして target_os を求めます.

@option{--target}が指定されている場合,targettarget_aliasの@command{config.sub}で標準化されたものになり,そ れ以外では,デフォルトでhostになります.

下位互換性のコードのため,人為的なものがあることに注意してください.詳 細は,See section ホストとクロスコンパイル.

システムタイプを使用する

どのようにして標準的なシステムタイプを使用するのでしょう?通常,システ ム特有のCファイルを選択するために`configure.ac'で,一つ以上の case文を使用します.AC_CONFIG_LINKSを使用し,システム名 に基づくこれらのファイルを,`host.h'`target.c'のような一般 的な名前にリンクしてください(see section コンフィグレーションのリンクを作成する).case 文のパターンでは,以下の断片部分のように,複数の状態を分類するためシェ ルのワイルドカードを使用することが可能です.

case $target in
i386-*-mach* | i386-*-gnu*)
             obj_format=aout emulation=mach bfd_gas=yes ;;
i960-*-bout) obj_format=bout ;;
esac

そして,その後で`configure.ac'では以下のように使用します.

AC_CONFIG_LINKS(host.h:config/$machine.h
                object.h:config/$obj_format.h)

上記の例では,いくつかのアーキテクチャ($build)でビルドされ,別 のもの($host)で実行することが可能なツールから持ってこられている ため,$targetを使用していて,第三のアーキテクチャ ($target)に対するデータを扱っていることにに注意してください.そ のようなツールは,通常コンパイラスイートの一部で,それは特殊な $targetに対するコードを生成します.

しかし,$targetはほとんどのパッケージで意味が無いようにすべきで す.プログラムを実行するシステムを決定の基本にしたい場合,以下の抜粋部 分のように,$host変数を使用していることを確かめてください.

case $host in
  *-*-msdos* | *-*-go32* | *-*-mingw32* | *-*-cygwin* | *-*-windows*)
    MUMBLE_INIT="mumble.ini"
    ;;
  *)
    MUMBLE_INIT=".mumbleinit"
    ;;
esac
AC_SUBST([MUMBLE_INIT])

クロスコンパイルツールを探すため,ホストシステムタイプを使用することも 可能です.そうするためのAC_CHECK_TOOLマクロの情報は, See section 一般的なプログラムとファイルの調査.


Go to the first, previous, next, last section, table of contents.