X-Git-Url: http://git.marmaro.de/?p=mmh;a=blobdiff_plain;f=aclocal.m4;h=c0d4fb8af6389082f99e55043ff3f1fd85c89027;hp=cbfb4982f2f5299d2c4809312c8d21845500bf70;hb=1bb1f6c3f38b05060bf699ea2743f7386889bf63;hpb=1691e80890e5d8ba258c51c214a3e91880e1db2b diff --git a/aclocal.m4 b/aclocal.m4 index cbfb498..c0d4fb8 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -20,22 +20,67 @@ AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket)) ]) +dnl -------------- +dnl CHECK FOR NDBM +dnl -------------- +dnl +dnl NMH_CHECK_DBM(include,library,action-if-found,action-if-not) -# This checks for the function ruserpass. -# -# 1) first, check for ruserpass -# 2) else, check for _ruserpass -# 3) else, check for _ruserpass in libsocket -# 4) else, build version of ruserpass in nmh/sbr -AC_DEFUN(AC_CHECK_RUSERPASS, -[AC_CHECK_FUNC(ruserpass, , - AC_CHECK_FUNC(_ruserpass, , - AC_CHECK_LIB(socket, _ruserpass))) -if test x$ac_cv_func_ruserpass = xno; then - if test x$ac_cv_func__ruserpass = xyes -o x$ac_cv_lib_socket__ruserpass = xyes; then - AC_DEFINE(ruserpass, _ruserpass) - else - LIBOBJS="$LIBOBJS ruserpass.o" - fi +dnl Check for presence of dbm_open() in the specified library +dnl and with the specified include file (if libname is the empty +dnl string then don't try to link against any particular library). + +dnl We set nmh_ndbm_found to 'yes' or 'no'; if found we set +dnl nmh_ndbmheader to the first arg and nmh_ndbm to the second. + +dnl If this macro accepted a list of include,library tuples +dnl to test in order that would be cleaner than the current +dnl nest of calls in configure.in. + +dnl We try to link our own code fragment (which includes the +dnl headers in the same way slocal.c does) rather than +dnl using AC_CHECK_LIB because on later versions of libdb +dnl the dbm_open() function is provided via a #define and +dnl we don't want to hardcode searching for the internal +dnl function that lies behind it. (AC_CHECK_LIB works by +dnl defining its own bogus prototype rather than pulling in +dnl the right header files.) + +dnl An oddity (bug) of this macro is that if you haven't +dnl done AC_PROG_CC or something that implies it before +dnl using this macro autoconf complains about a recursive +dnl expansion. + +AC_DEFUN(NMH_CHECK_NDBM, +[ +if test "x$2" = "x"; then + nmh_libs= + AC_MSG_CHECKING([for dbm in $1]) +else + nmh_libs="-l$2 " + AC_MSG_CHECKING([for dbm in $1 and $2]) fi -]) + +dnl We don't try to cache the result, because that exceeds +dnl my autoconf skills -- feel free to put it in :-> -- PMM + +nmh_saved_libs="$LIBS" +LIBS="$nmh_libs $5 $LIBS" +AC_LINK_IFELSE(AC_LANG_PROGRAM([[ +#define DB_DBM_HSEARCH 1 +#include <$1> +]], +[[dbm_open("",0,0);]]),[nmh_ndbm_found=yes],[nmh_ndbm_found=no]) +LIBS="$nmh_saved_libs" + +if test "$nmh_ndbm_found" = "yes"; then + AC_MSG_RESULT(yes) + nmh_ndbmheader="$1" + nmh_ndbm="$2" + $3 +else + AC_MSG_RESULT(no) + $4 + : +fi +])dnl