Next: AM_GNU_GETTEXT_VERSION, Previous: autoconf macros, Up: autoconf macros [Contents][Index]
AM_GNU_GETTEXTマクロは、Cライブラリーおよびlibintlライブラリー(どちらも共有または静的なライブラリーをサポートしています)に分割されたGNU
gettextの関数ファミリー、またはパッケージのintl/ディレクトリーをテストします。このマクロは、ビルド用にパッケージのpo/ディレクトリーを準備するのに、AM_PO_SUBDIRSも呼び出します。
AM_GNU_GETTEXTは、オプションの引数を3つ指定でき、一般的な書式は以下のようになります
AM_GNU_GETTEXT([intlsymbol], [needsymbol], [intldir])
intlsymbolには、‘external’または‘no-libtool’が指定できます。デフォルト(指定されなかったとき、または空のとき)は、‘no-libtool’です。intl/ディレクトリーのないパッケージでは、intlsymbol
に ‘external’ を指定する必要があります。intl/
ディレクトリーのあるパッケージでは、intlsymbolに‘no-libtool’を指定することもできるし、‘external’を指定して、他の場所でマクロAM_GNU_GETTEXT_INTL_SUBDIRを使用することにより、それをオーバーライドすることもできます。このintl/の実体を指定する2つの方法は、同じことを行います。どちらもビルド時には、静的なライブラリー$(top_builddir)/intl/libintl.aを作成します。
needsymbolに‘need-ngettext’が指定されると、ngettext()をもたない(libcまたはlibintlの)GNU
gettext実装は無視されます。needsymbolに‘need-formatstring-macros’が指定されると、ISO
C 99 <inttypes.h>書式文字列マクロをサポートしないGNU
gettext実装は無視されます。needsymbolだけを指定することもできます。他の場所でAM_GNU_GETTEXT_NEEDを指定することでも、これらの指定を満たすことはできます。1つ以上指定したときは、もっとも強い指定が使用されるか、AM_GNU_GETTEXT_NEEDマクロを複数回呼び出します。これらの指定は、‘need-formatstring-macros’が‘need-ngettext’を含むような階層になっています。
intldirは、intlを探すのに使用されます。空の場合は、‘$(top_builddir)/intl/’という値が使用されます。
AM_GNU_GETTEXTマクロは、GNU
gettextが利用可能で、使用できるかどうかを決定するマクロです。利用できる場合は、変数USE_NLSに‘yes’をセットし、これはautoconfが生成する設定ファイル(通常はconfig.hというファイル)のENABLE_NLSに1を定義し、Makefileで使用される変数LIBINTLとLTLIBINTLにリンカーオプションをセットし(LIBINTLはlibtoolなしのときで、LTLIBINTLはlibtoolを使用するとき)、必要なときはCPPFLAGSのオプションに‘-I’を追加し、利用できない場合はUSE_NLSに‘no’をセットし、LIBINTLとLTLIBINTLを空にセットして、CPPFLAGSを変更しません。
AM_GNU_GETTEXTが対処する複雑さは、以下のようなものです:
gettextをもちます。GNU
libintlは、GNU gettextの一部としてインストールされたのかもしれません。
libintlがインストールされていて、検索パス(インクルードファイルの検索パスはCPPFLAGS、ライブラリーの検索パスはLDFLAGS)にあるが、必要ない場合。
gettextは、必要なlocale依存の機能をもたず、カタログのテキストのエンコーディングから、ユーザーのlocaleのエンコーディングにメッセージを変換できません。
libintlがインストールされていて、実行時ライブラリーの検索パスにあるが、必要ない場合。LD_LIBRARY_PATHのような環境変数による設定を無視するために、このマクロは適切な実行時の検索パスオプションを、変数LIBINTLおよびLTLIBINTLに追加します。これはほとんどシステムで動作しますが、SCOのように共有ライブラリーに制限のあるいくつかのオペレーティングシステムではうまく動作しません。
libintlは、POSIX/XSIのiconvに依存します。このマクロはiconvを使うために必要なリンカーオプションをチェックして、変数LIBINTLおよびLTLIBINTLに追加します。