add autoconf magic to support old systems that don't support multibyte charsets
[mmh] / aclocal.m4
index 421386e..c0d4fb8 100644 (file)
@@ -24,16 +24,19 @@ dnl --------------
 dnl CHECK FOR NDBM
 dnl --------------
 dnl
-dnl NMH_CHECK_DBM(libname,action-if-true,action-if-false,other-libraries)
+dnl NMH_CHECK_DBM(include,library,action-if-found,action-if-not)
+
 dnl Check for presence of dbm_open() in the specified library
-dnl (if libname is the empty string then don't try to link against
-dnl any particular library). If action-if-true is unspecified it
-dnl defaults to adding "-llibname" to the beginning of LIBS.
-dnl If other-libraries is specified then these are prepended to
-dnl LIBS for the duration of the check.
-dnl NB that the checks for the right dbm header files must
-dnl be done before using this macro!
-dnl
+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
@@ -42,45 +45,42 @@ 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.)
-AC_DEFUN(NMH_CHECK_DBM,
+
+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$1" = "x"; then
-   nmh_libs=
-   dnl this is just for the benefit of AC_CACHE_CHECK's message
-   nmh_testname=libc
+if test "x$2" = "x"; then
+  nmh_libs=
+  AC_MSG_CHECKING([for dbm in $1])
 else
-   nmh_libs="-l$1 "
-   nmh_testname="$1"
+  nmh_libs="-l$2 "
+  AC_MSG_CHECKING([for dbm in $1 and $2])
 fi
-AC_CACHE_CHECK([for dbm in $nmh_testname], [nmh_cv_check_dbm_$1],[
+
+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 $4 $LIBS"
+LIBS="$nmh_libs $5 $LIBS"
 AC_LINK_IFELSE(AC_LANG_PROGRAM([[
-#ifdef HAVE_DB1_NDBM_H
-#include <db1/ndbm.h>
-#else
-#ifdef HAVE_GDBM_NDBM_H
-#include <gdbm/ndbm.h>
-#else
-#if defined(HAVE_DB_H)
 #define DB_DBM_HSEARCH 1
-#include <db.h>
-#else
-#include <ndbm.h>
-#endif
-#endif
-#endif
+#include <$1>
 ]],
-[[dbm_open("",0,0);]]),[nmh_cv_check_dbm_$1=yes],[
-nmh_cv_check_dbm_$1=no])
+[[dbm_open("",0,0);]]),[nmh_ndbm_found=yes],[nmh_ndbm_found=no])
 LIBS="$nmh_saved_libs"
-])
-if eval "test \"`echo '$nmh_cv_check_dbm_'$1`\" = yes"; then
-  nmh_tr_macro=HAVE_LIB`echo $1 | tr 'abcdefghijklmnopqrstuvwxyz' 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'`
-  AC_DEFINE_UNQUOTED($nmh_tr_macro)
-  m4_if([$2],,[LIBS="$nmh_libs$LIBS"],[$2])
-else
+
+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