Next: , Previous: , Up: Adjusting Files   [Contents][Index]


13.4.5 トップレベルのconfigure.ac

configure.acまたはconfigure.in – これはautoconfconfigureスクリプトを生成するときのソースになるファイルです。

  1. パッケージとバージョンを宣言します。

    これは以下のように宣言します:

    PACKAGE=gettext
    VERSION=0.18.3
    AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE")
    AC_DEFINE_UNQUOTED(VERSION, "$VERSION")
    AC_SUBST(PACKAGE)
    AC_SUBST(VERSION)
    

    GNU automakeを使っている場合は、以下のようになるでしょう:

    AM_INIT_AUTOMAKE(gettext, 0.18.3)
    

    もちろん、パッケージ名の‘gettext’と、バージョン番号の‘0.18.3’は、あなたのパッケージの名前とバージョン番号で置き換えます。これらは配布物のパッケージされたtarのファイル名(この例ではgettext-0.18.3.tar.gz)にそのまま使用されます。

  2. インターナショナリゼーションにたいするサポートのチェック。

    以下のマクロは、インターナショナリゼーションにたいするサポートを発動するためにメインとなる、m4のマクロです。この行をconfigure.acに追加します:

    AM_GNU_GETTEXT
    

    マクロはconfigure時に多くのチェックと処理を行いますが、呼び出しは故意に単純にしています。

    gettextizeを呼び出すとき、‘--intl’オプションを指定せず、intl/を作成しない場合は、以下の呼び出しが読み込まれます:

    AM_GNU_GETTEXT([external])
    
  3. 出力ファイルの作成。

    AC_OUTPUT命令はconfigure.acファイルの最後にあり、以下の2つの方法で変更する必要があります:

    AC_OUTPUT([existing configuration files intl/Makefile po/Makefile.in],
    [existing additional actions])
    

    AC_OUTPUTの最初の引数の変更は、intl/およびpo/ディレクトリーを置き換えるための変更です。接尾辞‘.in’は、po/だけに使用されることに注意してください。これにより配布される本当のファイルはpo/Makefile.in.inであることがわかります。

    gettextizeを呼び出すとき、‘--intl’オプションを指定せず、intl/を作成しない場合は、AC_OUTPUTの行にintl/Makefileを追加する必要はありません。

必要な変更をした後は、‘aclocal -I m4’や‘autoconf’(または‘autoreconf’)などのコマンドは、以下のようなトレース情報を出力して失敗するようになります:

configure.ac:44: warning: AC_COMPILE_IFELSE was called before AC_GNU_SOURCE
../../lib/autoconf/specific.m4:335: AC_GNU_SOURCE is expanded from...
m4/lock.m4:224: gl_LOCK is expanded from...
m4/gettext.m4:571: gt_INTL_SUBDIR_CORE is expanded from...
m4/gettext.m4:472: AM_INTL_SUBDIR is expanded from...
m4/gettext.m4:347: AM_GNU_GETTEXT is expanded from...
configure.ac:44: the top level
configure.ac:44: warning: AC_RUN_IFELSE was called before AC_GNU_SOURCE

configure.acファイルの‘AC_PROG_CC’より後、かつ‘AM_GNU_GETTEXT’より前の箇所(おそらく‘AC_PROG_CC’呼び出しのすぐ近く)に、‘AC_GNU_SOURCE’の明示的な呼び出しを追加する必要があります。この順番は、GNU autoconfによる制限により必要です。