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
に追加します。