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
+ ])
+])