具体的には、autoconf スクリプトに少し謎がありますAS_IF
。
関連するコードは次のとおりです。
AC_CHECK_FUNCS([eventfd], [AC_DEFINE([NN_HAVE_EVENTFD])])
AC_CHECK_FUNCS([pipe], [AC_DEFINE([NN_HAVE_PIPE])])
AC_CHECK_FUNCS([pipe2], [
AC_DEFINE([NN_HAVE_PIPE2])
CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE"
])
AC_SEARCH_LIBS([socketpair], [], [AC_DEFINE([NN_HAVE_SOCKETPAIR])])
つまり、それらの存在をチェックします。これらは正しく機能し、正しいシンボルを定義します。この場合、 と のみNN_HAVE_PIPE
がNN_HAVE_SOCKETPAIR
定義されます。これは HP-UX システムであるため、正しいです。
では謎の部分へ。configure.ac の後半には、これらのシンボルを参照する条件があります。
echo "ac_cv_func_eventfd: $ac_cv_func_eventfd"
AS_IF([test x"$ac_cv_func_eventfd"=xyes], [
AC_DEFINE([NN_USE_EVENTFD])], [
AS_IF([test x"$ac_cv_func_pipe"=xyes], [
AC_DEFINE([NN_USE_PIPE])], [
AS_IF([test x"$ac_cv_func_socketpair"=xyes], [
AC_DEFINE([NN_USE_SOCKETPAIR])], [
AC_MSG_ERROR([No signaling supported])
])
])
])
ac_cv_func_eventfd
価値がありますがno
(確認のためにエコー行を追加しました)、NN_USE_EVENTFD
とにかく定義されます!
マクロは次のようAS_IF
に定義されています。
AS_IF (test1, [run-if-true1], ..., [run-if-false])
私には、コードはかなり正しいように見えますね? この行動に光を当てることができる人はいますか?
Autoconf のバージョンは 2.67 です。OS は HP-UX 11.31 ia64 です。