[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
数種類の特徴については,テストプログラムを実行するだけでは自動的に推測で
きません.例えば,オブジェクトファイルのフォーマットの詳細や,コンパイラ
やリンカに渡す必要がある特別なオプションもあります.そのように,
configure
にuname
プログラムの出力を調査させたり,特定の
システムの特有のライブラリを探すといった,特別な手法を使用して特徴を調査
することが可能です.しかし,Autoconfは,推測できない特徴を扱うための一様
な形式の手法を提供しています.
11.1 システムタイプの指定 | Specifying the system type | |
11.2 標準的なシステムタイプの取得 | Getting the canonical system type | |
11.3 システムタイプを使用する | What to do with the system type |
他のGNU configure
スクリプトのように,Autoconfが生成
した configure
スクリプトでは,システムタイプの標準名に基づいて
決定することが可能で,それは以下のような形式になります.
`cpu-vendor-os'で,osは,
`system'や`kernel-system'が可能です.
configure
は,通常,実行しているシステムタイプの標準名を推測す
ることが可能です.そうするために,config.guess
と呼ばれるスクリ
プトを呼び出し,それは,uname
コマンドや,Cプリプロセッサが前もっ
て定義したシンボルを使用して推測します.
その代わりとして,ユーザはconfigure
へのコマンドライン引数で,
システムタイプを指定可能です.それはクロスコンパイル時に必要です.クロス
コンパイルで最も複雑な場合,三つのシステムタイプが呼び出されます.指定す
るオプションは以下の通りです.
パッケージがコンフィグレーションされコンパイルされるシステムのタイプです.
デフォルトは,config.guess
の実行結果になります.
パッケージが実行されるシステムタイプです.デフォルトで,それはビルドマシ ンと同じになります.それを指定することでクロスコンパイルモードが使用可能 になります.
コードを生成するパッケージ中のコンパイラツールに対するシステムのタイプで す(必要になることは滅多にありません).デフォルトはホストと同じです.
config.guess
の結果に優先することを意図した場合,
`--host'はクロスコンパイルを利用可能にするものなので,
`--host'ではなく`--build'を使用してください.歴史的な理由
から,`--host'を渡してもビルド形式を変更します.そのため,
--host
を指定するときは常に--build
も確実に指定してください.
これは将来,修正されるでしょう.
./configure --build=i686-pc-linux-gnu --host=m68k-coff |
上記でクロスコンパイルモードになりますが,以下のようなコンフィグレーショ
ンでは,指定されているコンパイラで生成されるコートが実行不可能なので,
configure
は失敗するでしょう.
./configure CC=m68k-coff-gcc |
configure
は,多くのシステムタイプに対する短い別名を認識します.
例えば,`decstation'は`mips-dec-ultrix4.2'の代わりに使用するこ
とが可能です. configure
は,システムタイプの別名を標準化するた
めにconfig.sub
と呼ばれるスクリプトを実行します.
このセクションでは,故意に時代遅れのインターフェースの記述を省略してきま した.ホストとクロスコンパイルを参照してください.
以下のマクロで,システムタイプがconfigure
スクリプトで利用可能
になります.
変数`build_alias',`host_alias',そして`target_alias'は,
常に厳密な`--build',`--host',そして`--target'への
引数となります.特に,対応するAC_CANONICAL
マクロが実行されていて
も,ユーザが使用していない場合は空のままになります.すべてのconfigureス
クリプトは,これらの変数をどこででも使用可能です.これらは,ユーザとの対
話処理で使用されるべき変数です.
システムタイプを元にした特殊な環境を認識する必要がある場合,標準的なシス テム名を取得するために以下のマクロを実行してください.これらの変数はマク ロ呼び出しの前で設定されません.
これらのマクロを使用する場合,ソースコードと一緒にconfig.guess
とconfig.sub
を配布する必要があります.configure
がこ
れらのスクリプトを探すディレクトリを制御するために使用可能な
AC_CONFIG_AUX_DIR
マクロに関する情報は,See section 出力ファイルを生成する.
標準的なビルドシステムタイプの変数のbuild
と,それを識別する三つの
部分build_cpu
,build_vendor
,そしてbuild_os
を求めま
す.
`--build'が指定されている場合,build
はbuild_alias
のconfig.sub
で標準化されたものになり,それ以外では,シェルスク
リプトconfig.guess
で決定されます.
標準的なホストシステムタイプ変数のhost
と,それを識別する三つの部
分host_cpu
,host_vendor
,そしてhost_os
を求めます.
`--host'が指定されている場合,host
はhost_alias
の
config.sub
で標準化されたものになり,それ以外では,シェルスクリ
プトconfig.guess
で決定されます.
標準的なターゲットシステムタイプ変数のtarget
,それを識別する三つ
の部分target_cpu
,target_vendor
,そしてtarget_os
を
求めます.
`--target'が指定されている場合,target
は
target_alias
の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 一般的なプログラムとファイルの調査.
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Akihiro Sagawa on June, 15 2005 using texi2html 1.70.