次: New Macros, 上: Autoconf 2.13
紹介すべき最も重要な変更です.ほとんどのマクロの実装は完全に変更されまし た.コードの分解,エラーメッセージの改善,ユーザインターフェースの一貫性 などが,このことで可能になりました.残念ながら副作用として,これまで(奇 跡的に)動作していた構成物には,Autoconf 2.50でおかしくなり始めるものもあ ります.
例えば,以下の例では,メッセージが適切に引用符で囲まれていません.
AC_INIT
AC_CHECK_HEADERS(foo.h,,
AC_MSG_ERROR(cannot find foo.h, bailing out))
AC_OUTPUT
Autoconf 2.13は,単純にそれを無視していました.
$ autoconf-2.13; ./configure --silent
creating cache ./config.cache
configure: error: cannot find foo.h
$
しかしAutoconf 2.50では,壊れたconfigureを生成します.
$ autoconf-2.50; ./configure --silent
configure: error: cannot find foo.h
./configure: exit: bad non-numeric arg `bailing'
./configure: exit: bad non-numeric arg `bailing'
$
メッセージは引用符で囲む必要があり,AC_MSG_ERRORの呼び出しもそう
です!
AC_INIT
AC_CHECK_HEADERS(foo.h,,
[AC_MSG_ERROR([cannot find foo.h, bailing out])])
AC_OUTPUT
多くの多くの(いくらでも続けたい)Autoconfマクロには...少なくとも
AC_DEFUN自身も含めて,適切な引用符がありませんでした!
$ cat configure.in
AC_DEFUN([AC_PROG_INSTALL],
[# My own much better version
])
AC_INIT
AC_PROG_INSTALL
AC_OUTPUT
$ autoconf-2.13
autoconf: Undefined macros:
***BUG in Autoconf--please report*** AC_FD_MSG
***BUG in Autoconf--please report*** AC_EPI
configure.in:1:AC_DEFUN([AC_PROG_INSTALL],
configure.in:5:AC_PROG_INSTALL
$ autoconf-2.50
$