Removed support for testing with dmalloc (valgrind is better...).
[gedcom-parse.git] / acinclude.m4
index f2c30c909ccff4950c5cbdf2c762b0a2d1aeeb27..ac07948cde1ddf32d1c549be97cfd233fc687869 100644 (file)
@@ -55,39 +55,78 @@ dnl Own functions
 dnl gedcom_GLIBC_ICONV()
 dnl Checks whether iconv is coming from glibc, defines USE_GLIBC_ICONV if so
 dnl The variable $is_glibc_iconv contains yes or no
-AC_DEFUN(gedcom_GLIBC_ICONV, [
-  AC_CACHE_CHECK(for the GNU C Library iconv implementation, is_glibc_iconv, [
+AC_DEFUN(gedcom_GLIBC22_ICONV, [
+  AC_CACHE_CHECK(for the GNU C Library 2.2 iconv implementation, is_glibc22_iconv, [
     AC_EGREP_CPP(yes,
     [
 #include <iconv.h>
 #ifdef __GLIBC__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || (__GLIBC__ > 2)
 yes
+ #endif
 #endif
-    ], is_glibc_iconv=yes, is_glibc_iconv=no)
+    ], is_glibc22_iconv=yes, is_glibc22_iconv=no)
   ])
-  if test "$is_glibc_iconv" = yes; then
+  if test "$is_glibc22_iconv" = yes; then
     AC_DEFINE(USE_GLIBC_ICONV,1,
       [Define if the GNU implementation of iconv in glibc is used])
   fi
 ])
 
-dnl gedcom_LIBICONV_HAS_ANSEL()
-dnl Checks whether libiconv has ANSEL support
-dnl The variable $is_ansel_supported contains yes or no
-AC_DEFUN(gedcom_LIBICONV_HAS_ANSEL, [
-  AC_CACHE_CHECK(for ANSEL support in libiconv, is_ansel_supported, [
-    my_save_LIBS="$LIBS"
-    LIBS="$LIBS $LIBICONV"
-    AC_TRY_RUN([
+dnl gedcom_ICONV_HAS_CONV()
+dnl Checks whether iconv has support to convert $1 to $2
+dnl The variable $iconv_has_conv contains yes or no afterwards
+dnl (overwritten on subsequent calls)
+AC_DEFUN(gedcom_ICONV_HAS_CONV, [
+  my_save_LIBS="$LIBS"
+  LIBS="$LIBS $LIBICONV"
+  AC_TRY_RUN([
 #include <iconv.h>
 int main() {
-  iconv_t cd = iconv_open("UTF-8","ANSEL");
+  iconv_t cd = iconv_open("$2","$1");
   return (cd == (iconv_t)-1);
 }
     ],
-    is_ansel_supported=yes,
-    is_ansel_supported=no,
-    is_ansel_supported=no)
+    iconv_has_conv=yes,
+    iconv_has_conv=no,
+    iconv_has_conv=no)
     LIBS="$my_save_LIBS"
   ])
 ])
+
+dnl gedcom_SANE_ICONV()
+dnl Checks whether the iconv implementation has the basic functionality
+dnl that we need
+dnl The variable $is_iconv_sane contains yes or no
+AC_DEFUN(gedcom_SANE_ICONV, [
+  AC_CACHE_CHECK(whether iconv has the needed functionality, is_iconv_sane, [
+    is_iconv_sane=yes
+    gedcom_ICONV_HAS_CONV(ASCII, UTF-8)
+    if test "$iconv_has_conv" = "no"; then
+      is_iconv_sane=no
+    else
+      gedcom_ICONV_HAS_CONV(UCS-2LE, UTF-8)
+      if test "$iconv_has_conv" = "no"; then
+        is_iconv_sane=no
+      else
+        gedcom_ICONV_HAS_CONV(UCS-2BE, UTF-8)
+        if test "$iconv_has_conv" = "no"; then
+          is_iconv_sane=no
+        fi
+      fi
+    fi
+  ])
+])
+
+dnl gedcom_LIBICONV_HAS_ANSEL()
+dnl Checks whether libiconv has ANSEL support
+dnl The variable $is_ansel_supported contains yes or no
+AC_DEFUN(gedcom_LIBICONV_HAS_ANSEL, [
+  AC_CACHE_CHECK(for ANSEL support in libiconv, is_ansel_supported, [
+    is_ansel_supported=no
+    gedcom_ICONV_HAS_CONV(ANSEL, UTF-8)
+    if test "$iconv_has_conv" = yes; then
+      is_ansel_supported=yes
+    fi
+  ])
+])