[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
数種類の特徴については,テストプログラムを実行するだけでは自動的に推測で きません.例えば,オブジェクトファイルのフォーマットの詳細や,コンパイラ やリンカに渡す必要がある特別なオプションもあります.そのように, configure
にuname
プログラムの出力を調査させたり,特定の システムの特有のライブラリを探すといった,特別な手法を使用して特徴を調査 することが可能です.しかし,Autoconfは,推測できない特徴を扱うための一様 な形式の手法を提供しています.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
他の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
と呼ばれるスクリプトを実行します.
このセクションでは,故意に時代遅れのインターフェースの記述を省略してきま した.15.6.3 ホストとクロスコンパイルを参照してください.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
以下のマクロで,システムタイプがconfigure
スクリプトで利用可能 になります.
変数`build_alias',`host_alias',そして`target_alias'は, 常に厳密な`--build',`--host',そして`--target'への 引数となります.特に,対応するAC_CANONICAL
マクロが実行されていて も,ユーザが使用していない場合は空のままになります.すべてのconfigureス クリプトは,これらの変数をどこででも使用可能です.これらは,ユーザとの対 話処理で使用されるべき変数です.
システムタイプを元にした特殊な環境を認識する必要がある場合,標準的なシス テム名を取得するために以下のマクロを実行してください.これらの変数はマク ロ呼び出しの前で設定されません.
これらのマクロを使用する場合,ソースコードと一緒にconfig.guess
とconfig.sub
を配布する必要があります.configure
がこ れらのスクリプトを探すディレクトリを制御するために使用可能な AC_CONFIG_AUX_DIR
マクロに関する情報は,See 節 4.4 出力ファイルを生成する.
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 節 15.6.3 ホストとクロスコンパイル.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |
どのようにして標準的なシステムタイプを使用するのでしょう?通常,システム 特有のCファイルを選択するために`configure.ac'で,一つ以上の case
文を使用します.AC_CONFIG_LINKS
を使用し,システム名に 基づくこれらのファイルを,`host.h'や`target.c'のような一般的な 名前にリンクしてください(see 節 4.10 コンフィグレーションのリンクを作成する).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 節 5.2.2 一般的なプログラムとファイルの調査.
[ << ] | [ >> ] | [表紙] | [目次] | [索引] | [検索] [上端 / 下端] [?] |