[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
コンパイラドライバの制御に関するマクロを以下に示す。
SWITCH_TAKES_ARG (char)
一個のC の式。オプション ‘-char’ が引数を取るかどうかを 指定する。この式の値は、オプションが取る引数の数である。 多くのオプションでは 0 になる。
このマクロは、デフォルトでは、DEFAULT_SWITCH_TAKES_ARG
に
定義される。DEFAULT_SWITCH_TAKES_ARG
は、
標準のオプションを正しく扱う。
引数を取るオプションを新たに追加しない限り SWITCH_TAKES_ARG
を
定義する必要はない。
定義する場合には、まず DEFAULT_SWITCH_TAKES_ARG
を呼び出してから、
追加したオプションの検査を行なうようにすること。
WORD_SWITCH_TAKES_ARG (name)
C の式であり、オプション ‘-name’ が引数を取るかどうかを
指定する。この式の値は、オプションが取る引数の数である。
多くのオプションでは 0 になる。複数文字からなるオプション名の場合には、
SWITCH_TAKES_ARG
の代わりにこちらを使う。
このマクロは、デフォルトで DEFAULT_WORD_SWITCH_TAKES_ARG
に
定義されており、標準のオプションを正しく扱うことができる。
定義し直す場合には、まず DEFAULT_WORD_SWITCH_TAKES_ARG
を
呼び出してから、追加したオプションの検査を行うようにする必要がある。
SWITCH_CURTAILS_COMPILATION (char)
一個の C の式であり、‘-char’ というオプションが、 実行形式の生成の前でコンパイルを止めるかどうかを決定する。 この式の値は、ブール型であり、オプションが実行形式の生成を止めるなら ゼロでない値であり、止めないならゼロである。
デフォルトでは、このマクロは DEFAULT_SWITCH_CURTAILS_COMPILATION
として定義される。DEFAULT_SWITCH_CURTAILS_COMPILATION
は
標準のオプションを正しく取り扱う。
実行形式の生成に影響を与えるオプションを追加するのでない限り、
SWITCH_CURTAILS_COMPILATION
を定義する必要はない。
再定義するなら、DEFAULT_SWITCH_CURTAILS_COMPILATION
をまず
呼び出して、次に追加したオプションの検査を行うようにする必要がある。
SWITCHES_NEED_SPACES
文字列を値とする C の式であり、リンカに渡すオプションのうち、 オプションとその引数との間に空白を必要とするものを列挙する。
このマクロが定義されない場合、デフォルトは ""
になる。
CPP_SPEC
一個の C の文字列定数。 CPP に渡すオプションを GNU CC のドライバプログラムに 知らせる。 これは同時に、ユーザが指定したオプションを GNU CC が CPP に渡すオプションに変換する方法を指定することも出来る。
何もする必要が無いときには、このマクロは定義しないこと。
NO_BUILTIN_SIZE_TYPE
このマクロが定義されていると、プリプロセッサは組み込みマクロ
__SIZE_TYPE__
を定義しない。その場合は代わりに、
マクロ __SIZE_TYPE__
を CPP_SPEC
で定義する必要がある。
SIZE_TYPE
がプリプロセッサからは参照できないターゲット依存の
フラグに依存するなら、このマクロを定義すべきである。
その他の場合は、定義すべきでない。
NO_BUILTIN_PTRDIFF_TYPE
このマクロを定義した場合、プリプロセッサは組み込みマクロ
__PTRDIFF_TYPE__
を定義しない。
その場合は代わりに __PTRDIFF_TYPE__
を、CPP_SPEC
で
定義する必要がある。
PTRDIFF_TYPE
がプリプロセッサからは参照できないターゲット依存の
フラグに依存するなら、このマクロを定義すべきである。
その他の場合は、定義すべきでない。
SIGNED_CHAR_SPEC
このマクロは C の文字列定数に定義し、CPP に渡すべきオプションを
GNU CC のドライバプログラムに知らせる。
デフォルトでは、cc1
が char
を unsigned char
と
同じように扱うなら、‘-D__CHAR_UNSIGNED__’ というオプションを
渡すように定義されている。
デフォルトの定義を変える必要がないのであれば、このマクロは定義しないこと。
CC1_SPEC
GNU CC のドライバプログラムが cc1
に渡すオプションを
C の文字列定数で定義する。これは同時に、ユーザが指定したオプションを
GNU CC が cc1
に渡すオプションに変換する方法を指定することも出来る。
何もする必要が無いときには、このマクロは定義しないこと。
CC1PLUS_SPEC
C の文字列定数であり、GNU CC のドライバプログラムに対し、cc1plus
に
渡すべきオプションを知らせる。
何もする必要がなければ、このマクロは定義しないこと。
ASM_SPEC
C の文字列定数であり、GNU CC のドライバプログラムに対し、アセンブラに 渡すべきオプションを知らせる。さらに、GNU CC に与えられた オプションを、GNU CC がアセンブラに渡すべきオプションに変換する方法の 指定も行う。例としては ‘sun3.h’ を参照のこと。
何もする必要がなければ、このマクロは定義しないこと。
ASM_FINAL_SPEC
C の文字列定数であり、GNU CC のドライバプログラムに対し、 通常のアセンブラの後に後処理を行うプログラムを実行する方法を 知らせる。通常は、この後処理は不要である。 この例としては、‘mips.h’ を参照のこと。
何もする必要がなければ、このマクロは定義しないこと。
LINK_SPEC
C の文字列定数であり、GNU CC のドライバプログラムに対し、リンカに 渡すべきオプションを知らせる。さらに、GNU CC に与えられた オプションを、GNU CC がリンカに渡すべきオプションに変換する方法を 指定する。
何もする必要がなければ、このマクロは定義しないこと。
LIB_SPEC
C の文字列定数で、LINK_SPEC
に良く似た使われ方をする。
違いは、LIB_SPEC
はリンカに指定されたコマンドの最後に
置かれることである。
このマクロが定義されていない場合は、デフォルトは普通置かれている場所から 標準 C ライブラリをロードすることになる。‘gcc.c’ を参照のこと。
LIBGCC_SPEC
C の文字列定数で、GNU CC のドライバプログラムに、いつどのように、
‘libgcc.a’ への参照をリンカのコマンド行に置くかを指示する。
この定数は、LIB_SPEC
の値の前後両方に置かれる。
このマクロが定義されていない場合は、GNU CC のドライバはデフォルトでは、 ‘-shared’ オプションが指定されていない限り、 文字列 ‘-lgcc’ をリンカに渡す。
STARTFILE_SPEC
LINK_SPEC
と良く似ている、やはり別の C の文字列定数である。
違いは、STARTFILE_SPEC
がリンカに渡されるコマンド行引数の
先頭で使われる点である。
このマクロが定義されていなければ、デフォルトは C の標準的な スタートアップファイルを通常の場所からロードするという定義になる。 ‘gcc.c’ を参照のこと。
ENDFILE_SPEC
LINK_SPEC
と良く似ている、もう一つのやはり別の C の文字列定数である。
違いは、ENDFILE_SPEC
がリンカに渡されるコマンド行引数の
最後で使われる点である。
何もする必要がなければ、このマクロは定義しないこと。
EXTRA_SPECS
このマクロで、‘specs’ ファイルに追加する指定を定義する。
ここで追加した指定は、CC1_SPEC
の様な様々な指定で使用できる。
定義は、構造体の配列の初期化子とすべきである。 この構造体は、指定名を定義する文字列定数と指定そのものを与える 文字列定数を含む。
何もする必要がなければ、このマクロは定義しないこと。
EXTRA_SPECS
が役に立つのは、ある一つのアーキテクチャに関連する
いくつものターゲットがあるときである。
そのような場合、互いに似通った ..._SPECS
がいくつもあり、
保守者はこれらの定義を一箇所で集中管理したいであろう。
例えば、PowerPC の System V.4 のターゲットは、EXTRA_SPECS
を
使って、System V の呼びだしシーケンスを使うときは _CALL_SYSV
を、
古い AIX ベースの呼びだしシーケンスを使うときは _CALL_AIX
を
定義している。
ターゲットファイル ‘config/rs6000/rs6000.h’ では以下のような 定義を行なっている。
#define EXTRA_SPECS \ { "cpp_sysv_default", CPP_SYSV_DEFAULT }, #define CPP_SYS_DEFAULT "" |
ターゲットファイル ‘config/rs6000/sysv.h’ では以下のような 定義を行なっている。
#undef CPP_SPEC #define CPP_SPEC \ "%{posix: -D_POSIX_SOURCE } \ %{mcall-sysv: -D_CALL_SYSV } %{mcall-aix: -D_CALL_AIX } \ %{!mcall-sysv: %{!mcall-aix: %(cpp_sysv_default) }} \ %{msoft-float: -D_SOFT_FLOAT} %{mcpu=403: -D_SOFT_FLOAT}" #undef CPP_SYSV_DEFAULT #define CPP_SYSV_DEFAULT "-D_CALL_SYSV" |
一方、‘config/rs6000/eabiaix.h’ の定義は以下の通りである。
#undef CPP_SYSV_DEFAULT #define CPP_SYSV_DEFAULT "-D_CALL_AIX" |
LINK_LIBGCC_SPECIAL
ライブラリ ‘libgcc.a’ はドライバプログラム自身が探すべきであり、 リンカには ‘-L’ オプションを渡すべきでなければ、このマクロを 定義する。 このマクロを定義した場合、ドライバプログラムは、引数 ‘-lgcc’ を リンカに渡して ‘libgcc.a’ の検索を行なわせ、検索を行なうディレクトリ を ‘-L’ オプションでリンカに渡す。
LINK_LIBGCC_SPECIAL_1
ドライバプログラムがライブラリ ‘libgcc.a’ を探すべきであるなら、
このマクロを定義する。
このマクロが定義されていない場合、引数 ‘-lgcc’ を
リンカに渡して ‘libgcc.a’ の検索を行なわせる。
このマクロは LINK_LIBGCC_SPECIAL
とほぼ同じだが、
‘-L’ オプションを渡さない点が異なる。
LINK_COMMAND_SPEC
C の文字列定数。リンカを実行するの必要な完全なコマンド行を指定する。 これを定義するときは、‘gcc.c’ にあるリンクのためのコマンド行に 変更が加わる度に読者の移植部分を更新する必要がある。このため、 リンカを起動するコマンド行を完全に再定義する必要があり、かつ、 読者が必要な効果を得るための方法が他にない場合だけ、このマクロを 定義すること。
MULTILIB_DEFAULTS
このマクロは、C の文字列の配列の初期化式として定義して、
ドライバプログラムに対し、どのオプションがこのターゲットのデフォルト
なのか、そして、どれが MULTILIB_OPTIONS
を使った場合に
特別に扱う必要がないオプションかを知らせる。
MULTILIB_OPTIONS
がターゲットの makefile 断片で定義されて
いない場合や、 MULTILIB_OPTIONS
に列挙されているオプションの中に
デフォルトで指定されるものが無い場合は、このマクロは定義しないこと。
RELATIVE_PREFIX_NOT_LINKDIR
このマクロを定義すると、gcc
は、プレフィックスが絶対パスの
場合は、‘-B’ で指定されたプレフィックスをリンカの ‘-L’ オプション
についてだけ変換する。
STANDARD_EXEC_PREFIX
コンパイラの実行形式ファイル群を検索する時のデフォルトの接頭辞である、 ‘/usr/local/lib/gcc-lib/’ を別のものに置き換えたい場合は、 このマクロを、それを表す C の文字列定数として定義する。
MD_EXEC_PREFIX
このマクロが定義されていれば、STANDARD_EXEC_PREFIX
の
後で、これを接頭辞として追加で検索が行なわれる。
‘-b’ オプションが指定されたり、クロスコンパイラとして
構築された場合は、MD_EXEC_PREFIX
の検索は行なわれない。
MD_EXEC_PREFIX
を定義する場合は、それを ‘configure.in’ 中の、
アセンブラを検索するのに使われるディレクトリのリストに追加するのを
忘れないこと。
STANDARD_STARTFILE_PREFIX
‘crt0.o’ のようなスタートアップファイルを 検索する時のデフォルトの接頭辞である、 ‘/usr/local/lib/’ を別のものに置き換えたい場合は、 このマクロを、それを表す C の文字列定数として定義する。
MD_STARTFILE_PREFIX
このマクロが定義されていれば、標準の接頭辞でスタートアップファイル検索が
行なわれた後で、このマクロを接頭辞として追加で検索が行なわれる。
‘-b’ オプションが指定されたり、クロスコンパイラとして
構築された場合は、MD_STARTFILE_PREFIX
の検索は行なわれない。
MD_STARTFILE_PREFIX_1
このマクロが定義されていれば、標準の接頭辞でスタートアップファイル検索が 行なわれた後で、このマクロを接頭辞としてさらにもう一度追加で検索が行なわれる。 ‘-b’ オプションが指定されたり、クロスコンパイラとして 構築された場合は、この接頭辞での検索は行なわれない。
INIT_ENVIRONMENT
ドライバから呼び出されるプログラム、例えばアセンブラやローダに
対して環境変数を指定したければ、このマクロを C の文字列定数として
定義する。ドライバは、このマクロの値を putenv
に渡して、
必要な環境変数の初期化を行なう。
LOCAL_INCLUDE_DIR
ローカルのヘッダファイルを検索するときのデフォルトの接頭辞である、
‘/usr/local/include’ の代わりのものを使いたいときは、
それを C の文字列定数としてこのマクロに定義する。
LOCAL_INCLUDE_DIR
は、SYSTEM_INCLUDE_DIR
の前に
検索される。
クロスコンパイラの場合はこのマクロは使わないし、 ‘/usr/local/include’ やその代わりの場所は 検索しない。
SYSTEM_INCLUDE_DIR
標準のディレクトリの前にヘッダファイルを検索したい、システム固有の
ディレクトリがあれば、このマクロで C の文字列定数として定義する。
SYSTEM_INCLUDE_DIR
は、 STANDARD_INCLUDE_DIR
の前に
検索される。
クロスコンパイラの場合はこのマクロは使わないし、 これで指定されたディレクトリを検索しない。
STANDARD_INCLUDE_DIR
ヘッダファイルを検索するときのデフォルトの接頭辞である、 ‘/usr/include’ を別のものに置き換えたいときは、このマクロで C の文字列として定義する。
クロスコンパイラの場合はこのマクロは使わないし、 ‘/usr/include’ やその代わりのディレクトリを検索しない。
STANDARD_INCLUDE_COMPONENT
STANDARD_INCLUDE_DIR
に対応する「成分」である。
成分の説明については以下の INCLUDE_DEFAUTLS
を参照のこと。
このマクロを定義しない場合は、成分は一つも使われない。
INCLUDE_DEFAULTS
インクルードファイルのデフォルトの検索パス全体を上書きしたい場合は、
このマクロを定義する。ネイティブコンパイラの場合は、
デフォルトの検索パスは通常は、GCC_INCLUDE_DIR
、
LOCAL_INCLUDE_DIR
、SYSTEM_INCLUDE_DIR
、
GPLUSPLUS_INCLUDE_DIR
、STANDARD_INCLUDE_DIR
から成る。
さらに、GPLUSPLUS_INCLUDE_DIR
と GCC_INCLUDE_DIR
は
‘Makefile’ で自動的に定義され、GCC に固有の検索パスを指定する。
ディレクトリ GPLUSPLUS_INCLUDE_DIR
は、C++ プログラムについて
だけ使われる。
このマクロは、構造体の配列の初期化子として定義しなければならない。
配列の各要素は、それぞれ四つの要素を持つ。
ディレクトリ名(文字列定数)、成分名、C++ 向けディレクトリ用フラグ、
C++ プログラムをコンパイルするときには、そのディレクトリのインクルード行を
extern "C"
で囲む必要がないかどうかを示すフラグ、である。
配列の終りはヌルの要素で示す。
成分名は、インクルードファイルがどの GNU パッケージのものかを示す。 これは全て大文字で記す。例えば、‘GCC’ や ‘BINUTILS’ とする。 インクルードファイルの入っているパッケージが、ベンダ提供の オペレーティングシステムの一部である場合は、成分名は ‘0’ と書く ようにする。
例えば、VAX/VMS 向けの定義は以下のようになる。
#define INCLUDE_DEFAULTS \ { \ { "GNU_GXX_INCLUDE:", "G++", 1, 1}, \ { "GNU_CC_INCLUDE:", "GCC", 0, 0}, \ { "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0}, \ { ".", 0, 0, 0}, \ { 0, 0, 0, 0} \ } |
実行形式ファイルのプレフィックスを試す順序を以下に示す。
GCC_EXEC_PREFIX
。
COMPILER_PATH
で指定されたディレクトリ。
STANDARD_EXEC_PREFIX
。
MD_EXEC_PREFIX
。
開始ファイルは、以下のプレフィックスを順番に探す。
GCC_EXEC_PREFIX
。
LIBRARY_PATH
で指定されたディレクトリ群
(ネイティブの場合のみ。クロスコンパイラでは使われない。)
STANDARD_EXEC_PREFIX
。
MD_EXEC_PREFIX
。
MD_STARTFILE_PREFIX
。
STANDARD_STARTFILE_PREFIX
。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated
using texi2html 1.78.